[overlord-commits] Overlord SVN: r199 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src: test/org/jboss/tools/overlord/jbossesb/model and 1 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Fri Jul 25 07:40:42 EDT 2008


Author: objectiser
Date: 2008-07-25 07:40:41 -0400 (Fri, 25 Jul 2008)
New Revision: 199

Modified:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBService.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBService.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java
Log:
More generation stuff.

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java	2008-07-24 11:06:52 UTC (rev 198)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java	2008-07-25 11:40:41 UTC (rev 199)
@@ -40,6 +40,13 @@
 public class DefaultESBLanguageModel extends org.scribble.lang.model.LanguageModel
 					implements ESBLanguageModel {
 
+	public static final String DEST_NAME_PREFIX = "queue/";
+	public static final String DEST_NAME_ATTR = "dest-name";
+	public static final String DEST_TYPE_VALUE = "QUEUE";
+	public static final String DEST_TYPE_ATTR = "dest-type";
+	public static final String JMS_MESSAGE_FILTER_ELEMENT = "jms-message-filter";
+	public static final String JMS_BUS_ELEMENT = "jms-bus";
+	public static final String BUSID_ATTR = "busid";
 	public static final String JBOSSESB_XML_NAMESPACE = "http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd";
 	public static final String XMLNS = "xmlns";
 	public static final String TOP_LEVEL_ELEMENT = "jbossesb";
@@ -107,6 +114,13 @@
 			m_jmsProviderElem = doc.createElement(JMS_PROVIDER_ELEMENT);
 			providers.appendChild(m_jmsProviderElem);
 			
+			// Configure the jms provider
+			m_jmsProviderElem.setAttribute("name", "JBossMQ");
+			m_jmsProviderElem.setAttribute("connection-factory", "ConnectionFactory");
+			m_jmsProviderElem.setAttribute("jndi-context-factory", "org.jnp.interfaces.NamingContextFactory");
+			m_jmsProviderElem.setAttribute("jndi-URL", "localhost");
+			
+			// Create services element
 			m_servicesElem = doc.createElement(SERVICES_ELEMENT);
 			m_esbConfig.appendChild(m_servicesElem);
 			
@@ -380,9 +394,68 @@
 				service);
 		
 		// Add provider information
+		String busId=service.getJMSBusIdRef();
 		
+		if (busId != null) {
+			addJMSBus(busId, getJMSDestination(service.getCategory(),
+					service.getName()));
+		} else {
+			logger.severe("Service '"+service+
+						"' does not have a bus Id");
+		}
 	}
 	
+	protected void addJMSBus(String jmsBusId, String dest) {
+		
+		org.w3c.dom.Element jmsBus=
+				m_esbConfig.getOwnerDocument().createElement(JMS_BUS_ELEMENT);
+		m_jmsProviderElem.appendChild(jmsBus);
+		
+		jmsBus.setAttribute(BUSID_ATTR, jmsBusId);
+		
+		org.w3c.dom.Element mesgFilter=
+				m_esbConfig.getOwnerDocument().createElement(JMS_MESSAGE_FILTER_ELEMENT);
+		jmsBus.appendChild(mesgFilter);
+		
+		mesgFilter.setAttribute(DEST_TYPE_ATTR, DEST_TYPE_VALUE);
+		mesgFilter.setAttribute(DEST_NAME_ATTR, DEST_NAME_PREFIX+dest);
+	}
+	
+	protected org.w3c.dom.Element findJMSBus(String jmsBusId) {
+		org.w3c.dom.Element ret=null;
+		
+		org.w3c.dom.NodeList nl=m_jmsProviderElem.getChildNodes();
+		for (int i=0; i < nl.getLength(); i++) {
+			if (nl.item(i) instanceof org.w3c.dom.Element &&
+					nl.item(i).getNodeName().equals(JMS_BUS_ELEMENT) &&
+					((org.w3c.dom.Element)nl.item(i)).
+						getAttribute(BUSID_ATTR).equals(jmsBusId)) {
+				ret = (org.w3c.dom.Element)nl.item(i);
+			}
+		}
+		
+		return(ret);
+	}
+	
+	protected void removeJMSBus(String jmsBusId) {
+		org.w3c.dom.Element bus=findJMSBus(jmsBusId);
+		
+		if (bus != null) {
+			m_jmsProviderElem.removeChild(bus);
+		} else {
+			logger.severe("Remove JMS bus '"+jmsBusId+
+					"' failed, unable to find bus");
+		}
+	}
+	
+	protected String getJMSDestination(String category, String name) {
+		String ret=category.replace('.', '_');
+		
+		ret += "_"+name;
+		
+		return(ret);
+	}
+	
 	/**
 	 * This method removes a service from the model.
 	 * 
@@ -393,6 +466,14 @@
 						service.getName()));
 		
 		// Remove provider information
+		String busId=service.getJMSBusIdRef();
+		
+		if (busId != null) {
+			removeJMSBus(busId);
+		} else {
+			logger.severe("Service '"+service+
+						"' does not have a bus Id");
+		}
 	}
 	
 	/**

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBService.java	2008-07-24 11:06:52 UTC (rev 198)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBService.java	2008-07-25 11:40:41 UTC (rev 199)
@@ -35,6 +35,9 @@
  */
 public class DefaultESBService extends ModelObject implements ESBService {
 
+	private static final String LISTENERS_ELEMENT = "listeners";
+	private static final String BUSIDREF_ATTR = "busidref";
+	private static final String JMS_LISTENER_ELEMENT = "jms-listener";
 	private static final String NAME_ATTR = "name";
 	private static final String CATEGORY_ATTR = "category";
 	protected static final String ROOT_PROPERTY = "root";
@@ -89,9 +92,23 @@
 		m_service.setAttribute(CATEGORY_ATTR, category);
 		m_service.setAttribute(NAME_ATTR, name);
 		
+		org.w3c.dom.Element listeners=m_service.getOwnerDocument().createElement(LISTENERS_ELEMENT);
+		m_service.appendChild(listeners);
 		
+		org.w3c.dom.Element jmslistener=m_service.getOwnerDocument().createElement(JMS_LISTENER_ELEMENT);
+		listeners.appendChild(jmslistener);
+		
+		jmslistener.setAttribute(BUSIDREF_ATTR, getBusId(category,name));
 	}
 	
+	protected String getBusId(String category, String name) {
+		String ret=category.replace('.', '_');
+		
+		ret += "_"+name;
+		
+		return(ret);
+	}
+	
 	/**
 	 * This method initializes the service.
 	 */
@@ -556,6 +573,25 @@
 		return(servCount);
 	}
 		
+	/**
+	 * This method returns the JMS Bus Id Ref associated with the
+	 * service's JMS listener.
+	 * 
+	 * @return The JMS Bus Id Ref
+	 */
+	public String getJMSBusIdRef() {
+		String ret=null;
+		
+		org.w3c.dom.NodeList nl=
+			m_service.getElementsByTagName(JMS_LISTENER_ELEMENT);
+		
+		if (nl.getLength() > 0) {
+			ret = ((org.w3c.dom.Element)nl.item(0)).getAttribute(BUSIDREF_ATTR);
+		}
+		
+		return(ret);
+	}
+	
 	public int hashCode() {
 		return(m_service.hashCode());
 	}

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBService.java	2008-07-24 11:06:52 UTC (rev 198)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBService.java	2008-07-25 11:40:41 UTC (rev 199)
@@ -160,4 +160,12 @@
 	 */
 	public int getServicePosition();
 
+	/**
+	 * This method returns the JMS Bus Id Ref associated with the
+	 * service's JMS listener.
+	 * 
+	 * @return The JMS Bus Id Ref
+	 */
+	public String getJMSBusIdRef();
+	
 }

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java	2008-07-24 11:06:52 UTC (rev 198)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java	2008-07-25 11:40:41 UTC (rev 199)
@@ -18,6 +18,8 @@
 package org.jboss.tools.overlord.jbossesb.model;
 
 import junit.framework.TestCase;
+
+import org.jboss.tools.overlord.jbossesb.model.actions.TestESBService;
 import org.scribble.model.*;
 
 public class DefaultESBLanguageModelTest extends TestCase {
@@ -102,4 +104,105 @@
 			fail("Element '"+DefaultESBLanguageModel.SERVICES_ELEMENT+"' not found");
 		}
 	}
+	
+	public void testAddService() {
+		String busId="TestBusId";
+		String category="category.one";
+		String name="serviceName";
+		
+		ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
+		
+		DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+		
+		org.w3c.dom.Element config=model.getESBConfiguration();
+		
+		TestESBService service=new TestESBService();
+		service.setJMSBusIdRef(busId);
+		service.setCategory(category);
+		service.setName(name);
+		
+		model.addService(service);
+		
+		// Check that the jms bus id has been created
+		org.w3c.dom.NodeList nl=config.getElementsByTagName(
+						DefaultESBLanguageModel.JMS_PROVIDER_ELEMENT);
+
+		if (nl.getLength() != 1) {
+			fail("JMS provider element not found");
+		}
+		
+		org.w3c.dom.Element provider=(org.w3c.dom.Element)nl.item(0);
+		
+		nl = provider.getElementsByTagName(
+				DefaultESBLanguageModel.JMS_BUS_ELEMENT);
+
+		if (nl.getLength() != 1) {
+			fail("JMS bus element not found");
+		}
+
+		org.w3c.dom.Element bus=(org.w3c.dom.Element)nl.item(0);
+
+		if (bus.getAttribute("busid").equals(busId) == false) {
+			fail("Bus had invalid busid '"+bus.getAttribute("busid")+
+					"', was expecting: "+busId);
+		}
+		
+		if (bus.getParentNode() != provider) {
+			fail("Bus not contained directly within provider");
+		}
+		
+		// Check bus retrieved directly
+		org.w3c.dom.Element bus2=model.findJMSBus(busId);
+		
+		if (bus2 != bus) {
+			fail("Bus elements not the same");
+		}
+	}
+	
+	public void testRemoveService() {
+		String busId="TestBusId";
+		String category="category.two";
+		String name="serviceName";
+		
+		ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
+		
+		DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+		
+		org.w3c.dom.Element config=model.getESBConfiguration();
+		
+		TestESBService service=new TestESBService();
+		service.setJMSBusIdRef(busId);
+		service.setCategory(category);
+		service.setName(name);
+		
+		model.addService(service);
+		
+		// Check that the jms bus id has been created
+		org.w3c.dom.NodeList nl=config.getElementsByTagName(
+						DefaultESBLanguageModel.JMS_PROVIDER_ELEMENT);
+
+		if (nl.getLength() != 1) {
+			fail("JMS provider element not found");
+		}
+		
+		org.w3c.dom.Element provider=(org.w3c.dom.Element)nl.item(0);
+		
+		nl = provider.getElementsByTagName(
+				DefaultESBLanguageModel.JMS_BUS_ELEMENT);
+
+		if (nl.getLength() != 1) {
+			fail("JMS bus element not found");
+		}
+
+		// Remove the service and check that the bus entry
+		// is no longer there
+		model.removeService(service);
+		
+		nl = provider.getElementsByTagName(
+				DefaultESBLanguageModel.JMS_BUS_ELEMENT);
+
+		if (nl.getLength() != 0) {
+			fail("JMS bus element should NOT be found");
+		}
+	}
 }

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java	2008-07-24 11:06:52 UTC (rev 198)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java	2008-07-25 11:40:41 UTC (rev 199)
@@ -147,6 +147,14 @@
 		
 	}
 
+	public String getJMSBusIdRef() {
+		return(m_jmsBusIdRef);
+	}
+	
+	public void setJMSBusIdRef(String busId) {
+		m_jmsBusIdRef = busId;
+	}
+
 	private String m_category=null;
 	private String m_name=null;
 	private ESBLanguageModel m_model=null;
@@ -158,4 +166,5 @@
 	private Class<?> m_sessionClass=null;
 	private String m_conversationType=null;
 	private List<Activity> m_contents=new java.util.Vector<Activity>();
+	private String m_jmsBusIdRef=null;
 }




More information about the overlord-commits mailing list