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;
}