[overlord-commits] Overlord SVN: r201 - 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
Mon Jul 28 07:44:17 EDT 2008
Author: objectiser
Date: 2008-07-28 07:44:17 -0400 (Mon, 28 Jul 2008)
New Revision: 201
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/DefaultESBServiceTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java
Log:
More generation related work.....
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-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -396,6 +396,12 @@
// Add provider information
String busId=service.getJMSBusIdRef();
+ // Check if busId is unique
+ if (busId == null || findJMSBus(busId) != null) {
+ busId = getUniqueBusId();
+ service.setJMSBusIdRef(busId);
+ }
+
if (busId != null) {
addJMSBus(busId, getJMSDestination(service.getCategory(),
service.getName()));
@@ -405,6 +411,18 @@
}
}
+ protected String getUniqueBusId() {
+ int index=1;
+ String ret="busId"+index;
+
+ while (findJMSBus(ret) != null) {
+ index++;
+ ret = "busId"+index;
+ }
+
+ return(ret);
+ }
+
protected void addJMSBus(String jmsBusId, String dest) {
org.w3c.dom.Element jmsBus=
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-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBService.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -35,20 +35,21 @@
*/
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";
- protected static final String BUSINESS_OBJECT_TYPE_PROPERTY = "session";
- protected static final String CONVERSATION_TYPE_PROPERTY = "conversationType";
- protected static final String SERVICE_NAME_PROPERTY = "serviceName";
- private static final String SERVICE_ANNOTATION = "org.jboss.soa.overlord.jbossesb.actions.Service";
- private static final String SERVICE_ELEMENT = "service";
- private static final String RETRIEVE_SESSION_ACTION_CLASS = "org.jboss.soa.overlord.jbossesb.actions.RetrieveSessionAction";
- private static final String ACTION_ELEMENT = "action";
- private static final String ACTIONS_ELEMENT = "actions";
+ public static final String LISTENERS_ELEMENT = "listeners";
+ public static final String BUSIDREF_ATTR = "busidref";
+ public static final String JMS_LISTENER_ELEMENT = "jms-listener";
+ public static final String MAX_THREADS_ATTR = "maxThreads";
+ public static final String NAME_ATTR = "name";
+ public static final String CATEGORY_ATTR = "category";
+ public static final String ROOT_PROPERTY = "root";
+ public static final String BUSINESS_OBJECT_TYPE_PROPERTY = "session";
+ public static final String CONVERSATION_TYPE_PROPERTY = "conversationType";
+ public static final String SERVICE_NAME_PROPERTY = "serviceName";
+ public static final String SERVICE_ANNOTATION = "org.jboss.soa.overlord.jbossesb.actions.Service";
+ public static final String SERVICE_ELEMENT = "service";
+ public static final String RETRIEVE_SESSION_ACTION_CLASS = "org.jboss.soa.overlord.jbossesb.actions.RetrieveSessionAction";
+ public static final String ACTION_ELEMENT = "action";
+ public static final String ACTIONS_ELEMENT = "actions";
/**
* This is the constructor for the ESB service. This construct
@@ -92,15 +93,18 @@
m_service.setAttribute(CATEGORY_ATTR, category);
m_service.setAttribute(NAME_ATTR, name);
+ /* Create jms listener and bus id when added to model
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);
+ m_jmsListenerElem = m_service.getOwnerDocument().createElement(JMS_LISTENER_ELEMENT);
+ listeners.appendChild(m_jmsListenerElem);
- jmslistener.setAttribute(BUSIDREF_ATTR, getBusId(category,name));
+ m_jmsListenerElem.setAttribute(BUSIDREF_ATTR, getBusId(category,name));
+ */
}
+ /*
protected String getBusId(String category, String name) {
String ret=category.replace('.', '_');
@@ -108,6 +112,7 @@
return(ret);
}
+ */
/**
* This method initializes the service.
@@ -135,24 +140,33 @@
String str=getModel().getOriginalContents();
- int startPosition=str.indexOf("<service ");
- int endPosition=-1;
-
- while (startPosition != -1 && servCount > 0) {
- servCount--;
+ if (str != null) {
+ int startPosition=str.indexOf("<service ");
+ int endPosition=-1;
- endPosition = str.indexOf("</service>", startPosition);
+ while (startPosition != -1 && servCount > 0) {
+ servCount--;
+
+ endPosition = str.indexOf("</service>", startPosition);
+
+ if (servCount > 0) {
+ startPosition=str.indexOf("<service ", endPosition);
+ }
+ }
- if (servCount > 0) {
- startPosition=str.indexOf("<service ", endPosition);
+ if (startPosition != -1) {
+ endPosition = str.indexOf("</service>", startPosition);
+
+ getSource().setStartPosition(startPosition);
+ getSource().setEndPosition(endPosition);
}
}
- if (startPosition != -1) {
- endPosition = str.indexOf("</service>", startPosition);
-
- getSource().setStartPosition(startPosition);
- getSource().setEndPosition(endPosition);
+ // Get jms listener
+ org.w3c.dom.NodeList nl=m_service.getElementsByTagName(DefaultESBService.JMS_LISTENER_ELEMENT);
+
+ if (nl.getLength() > 0 && nl.item(0) instanceof org.w3c.dom.Element) {
+ m_jmsListenerElem = (org.w3c.dom.Element)nl.item(0);
}
}
@@ -582,16 +596,58 @@
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);
+ if (m_jmsListenerElem != null) {
+ ret = m_jmsListenerElem.getAttribute(BUSIDREF_ATTR);
}
return(ret);
}
+ /**
+ * This method sets the JMS Bus Id Ref associated with the
+ * service's JMS listener.
+ *
+ * @param busId The JMS Bus Id Ref
+ */
+ public void setJMSBusIdRef(String busId) {
+ if (m_jmsListenerElem == null) {
+ m_jmsListenerElem = m_service.getOwnerDocument().createElement(JMS_LISTENER_ELEMENT);
+
+ org.w3c.dom.NodeList nl=m_service.getElementsByTagName(LISTENERS_ELEMENT);
+ org.w3c.dom.Element listeners=null;
+
+ if (nl.getLength() > 0) {
+ listeners = (org.w3c.dom.Element)nl.item(0);
+ } else {
+ listeners = m_service.getOwnerDocument().createElement(LISTENERS_ELEMENT);
+ if (m_service.getFirstChild() != null) {
+ m_service.insertBefore(m_service.getFirstChild(),
+ listeners);
+ } else {
+ m_service.appendChild(listeners);
+ }
+ }
+
+ if (listeners != null) {
+ listeners.appendChild(m_jmsListenerElem);
+ }
+ }
+
+ if (m_jmsListenerElem != null) {
+ m_jmsListenerElem.setAttribute(BUSIDREF_ATTR,
+ busId);
+
+ if (m_jmsListenerElem.hasAttribute(NAME_ATTR) == false) {
+ m_jmsListenerElem.setAttribute(NAME_ATTR,
+ getCategory()+"-"+getName());
+ }
+
+ if (m_jmsListenerElem.hasAttribute(MAX_THREADS_ATTR) == false) {
+ m_jmsListenerElem.setAttribute(MAX_THREADS_ATTR, "1");
+ }
+ }
+ }
+
public int hashCode() {
return(m_service.hashCode());
}
@@ -618,5 +674,6 @@
private ESBLanguageModel m_model=null;
private org.w3c.dom.Element m_service=null;
+ private org.w3c.dom.Element m_jmsListenerElem=null;
private java.util.List<ESBAction> m_actions=new java.util.Vector<ESBAction>();
}
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-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBService.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -168,4 +168,12 @@
*/
public String getJMSBusIdRef();
+ /**
+ * This method sets the JMS Bus Id Ref associated with the
+ * service's JMS listener.
+ *
+ * @param busId The JMS Bus Id Ref
+ */
+ public void setJMSBusIdRef(String busId);
+
}
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-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -123,6 +123,14 @@
model.addService(service);
+ if (service.getJMSBusIdRef() == null) {
+ fail("JMS BusIdRef not set");
+ }
+
+ if (service.getJMSBusIdRef().equals(busId) == false) {
+ fail("Bus Id should be '"+busId+"', but got: "+service.getJMSBusIdRef());
+ }
+
// Check that the jms bus id has been created
org.w3c.dom.NodeList nl=config.getElementsByTagName(
DefaultESBLanguageModel.JMS_PROVIDER_ELEMENT);
@@ -205,4 +213,57 @@
fail("JMS bus element should NOT be found");
}
}
+
+ public void testAddServiceWithNoBusId() {
+ String category="category.one";
+ String name="serviceName";
+
+ ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
+
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+
+ TestESBService service=new TestESBService();
+ service.setCategory(category);
+ service.setName(name);
+
+ model.addService(service);
+
+ if (service.getJMSBusIdRef() == null) {
+ fail("JMS BusIdRef not set");
+ }
+ }
+
+ public void testAddMultipleServiceWithNoBusId() {
+ String category="category.one";
+ String name1="serviceName1";
+ String name2="serviceName2";
+
+ ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
+
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+
+ TestESBService service1=new TestESBService();
+ service1.setCategory(category);
+ service1.setName(name1);
+
+ model.addService(service1);
+
+ if (service1.getJMSBusIdRef() == null) {
+ fail("JMS BusIdRef1 not set");
+ }
+
+ TestESBService service2=new TestESBService();
+ service2.setCategory(category);
+ service2.setName(name2);
+
+ model.addService(service2);
+
+ if (service2.getJMSBusIdRef() == null) {
+ fail("JMS BusIdRef2 not set");
+ }
+
+ if (service1.getJMSBusIdRef().equals(service2.getJMSBusIdRef())) {
+ fail("Service JMS bus ids should be unique");
+ }
+ }
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBServiceTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBServiceTest.java 2008-07-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBServiceTest.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -19,6 +19,8 @@
import junit.framework.TestCase;
+import org.jboss.tools.overlord.jbossesb.model.actions.*;
+
public class DefaultESBServiceTest extends TestCase {
public void testValidateSessionClassRequired() {
@@ -216,4 +218,146 @@
"' invalid, expecting: "+name);
}
}
+
+ public void testBaseConfiguration() {
+ String category="category";
+ String name="name";
+
+ DefaultESBService service=new DefaultESBService(new TestESBLanguageModel(),
+ category, name);
+
+ org.w3c.dom.Element servElem=service.getService();
+
+ if (servElem == null) {
+ fail("Service element is null");
+ }
+
+ if (servElem.getNodeName().equals(DefaultESBService.SERVICE_ELEMENT) == false) {
+ fail("Root element is incorrect: "+servElem.getNodeName());
+ }
+
+ if (servElem.getAttribute(DefaultESBService.CATEGORY_ATTR).equals(category) == false) {
+ fail("Category invalid: "+servElem.getAttribute(DefaultESBService.CATEGORY_ATTR));
+ }
+
+ if (servElem.getAttribute(DefaultESBService.NAME_ATTR).equals(name) == false) {
+ fail("Name invalid: "+servElem.getAttribute(DefaultESBService.NAME_ATTR));
+ }
+ }
+
+ public void testSetInitialBusIdRef() {
+ String category="category";
+ String name="name";
+ String busId="myBusId";
+
+ DefaultESBService service=new DefaultESBService(new TestESBLanguageModel(),
+ category, name);
+
+ org.w3c.dom.Element servElem=service.getService();
+
+ service.setJMSBusIdRef(busId);
+
+ if (service.getJMSBusIdRef() == null) {
+ fail("Bus id not set");
+ }
+
+ if (service.getJMSBusIdRef().equals(busId) == false) {
+ fail("Bus Id not '"+busId+"', got: "+service.getJMSBusIdRef());
+ }
+
+ org.w3c.dom.NodeList nl=servElem.getElementsByTagName(DefaultESBService.JMS_LISTENER_ELEMENT);
+
+ if (nl.getLength() != 1) {
+ fail("Expecting one JMS listener element, but got: "+
+ nl.getLength());
+ }
+
+ org.w3c.dom.Element jmslistener=(org.w3c.dom.Element)nl.item(0);
+
+ if (jmslistener.getParentNode().getNodeName().equals(DefaultESBService.LISTENERS_ELEMENT) == false) {
+ fail("JMS listener parent not expected");
+ }
+
+ if (jmslistener.getParentNode().getParentNode() != servElem) {
+ fail("JMS listener grandparent should be service");
+ }
+
+ if (jmslistener.getAttribute(DefaultESBService.BUSIDREF_ATTR).equals(busId) == false) {
+ fail("Bus Id not '"+busId+"', got: "+jmslistener.getAttribute(DefaultESBService.BUSIDREF_ATTR));
+ }
+
+ if (jmslistener.hasAttribute(DefaultESBService.NAME_ATTR) == false) {
+ fail("Name attribute not set on jms listener");
+ }
+
+ if (jmslistener.hasAttribute(DefaultESBService.MAX_THREADS_ATTR) == false) {
+ fail("Max Threads attribute not set on jms listener");
+ }
+ }
+
+ public void testChangeBusIdRef() {
+ String initialBusId="busId1";
+ String initialName="name1";
+ String initialMaxThreads="2";
+ String changedBusId="busId2";
+
+ org.w3c.dom.Element top=null;
+
+ // Create an empty document
+ org.w3c.dom.Document doc=null;
+ try {
+ doc = javax.xml.parsers.DocumentBuilderFactory.
+ newInstance().newDocumentBuilder().newDocument();
+
+ top = doc.createElement(DefaultESBLanguageModel.TOP_LEVEL_ELEMENT);
+
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+
+ org.w3c.dom.Element services=doc.createElement(DefaultESBLanguageModel.SERVICES_ELEMENT);
+ top.appendChild(services);
+
+ org.w3c.dom.Element serviceElem=doc.createElement(DefaultESBLanguageModel.SERVICE_ELEMENT);
+ services.appendChild(serviceElem);
+
+ org.w3c.dom.Element listeners=doc.createElement(DefaultESBService.LISTENERS_ELEMENT);
+ serviceElem.appendChild(listeners);
+
+ org.w3c.dom.Element jmslistener=doc.createElement(DefaultESBService.JMS_LISTENER_ELEMENT);
+ listeners.appendChild(jmslistener);
+
+ jmslistener.setAttribute(DefaultESBService.BUSIDREF_ATTR, initialBusId);
+ jmslistener.setAttribute(DefaultESBService.NAME_ATTR, initialName);
+ jmslistener.setAttribute(DefaultESBService.MAX_THREADS_ATTR, initialMaxThreads);
+
+ DefaultESBService service=new DefaultESBService(new TestESBLanguageModel(),
+ serviceElem);
+
+ if (service.getJMSBusIdRef() == null) {
+ fail("JMS bus id not set");
+ }
+
+ if (service.getJMSBusIdRef().equals(initialBusId) == false) {
+ fail("JMS bus id not '"+initialBusId+"', got: "+service.getJMSBusIdRef());
+ }
+
+ service.setJMSBusIdRef(changedBusId);
+
+ if (service.getJMSBusIdRef().equals(changedBusId) == false) {
+ fail("Changed JMS bus id not '"+changedBusId+"', got: "+service.getJMSBusIdRef());
+ }
+
+ if (jmslistener.getAttribute(DefaultESBService.BUSIDREF_ATTR).equals(changedBusId)==false) {
+ fail("Changed bus id not reflected in element");
+ }
+
+ if (jmslistener.getAttribute(DefaultESBService.NAME_ATTR).equals(initialName)==false) {
+ fail("Name attribute incorrect");
+ }
+
+ if (jmslistener.getAttribute(DefaultESBService.MAX_THREADS_ATTR).equals(initialMaxThreads)==false) {
+ fail("MaxThreads attribute incorrect");
+ }
+ }
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java 2008-07-25 15:48:04 UTC (rev 200)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java 2008-07-28 11:44:17 UTC (rev 201)
@@ -19,13 +19,27 @@
import java.util.Collection;
-import org.jboss.tools.overlord.jbossesb.model.ESBService;
+import org.jboss.tools.overlord.jbossesb.model.*;
import org.scribble.model.ModelListener;
import org.scribble.model.ModelReference;
import org.w3c.dom.Element;
public class TestESBLanguageModel implements org.jboss.tools.overlord.jbossesb.model.ESBLanguageModel {
+ public TestESBLanguageModel() {
+ org.w3c.dom.Document doc=null;
+
+ // Create an empty document
+ try {
+ doc = javax.xml.parsers.DocumentBuilderFactory.
+ newInstance().newDocumentBuilder().newDocument();
+
+ m_esbConfig = doc.createElement(DefaultESBLanguageModel.TOP_LEVEL_ELEMENT);
+
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
public String getOriginalContents() {
// TODO Auto-generated method stub
return null;
@@ -54,9 +68,9 @@
}
public Element getESBConfiguration() {
- // TODO Auto-generated method stub
- return null;
+ return(m_esbConfig);
}
private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
+ private org.w3c.dom.Element m_esbConfig=null;
}
More information about the overlord-commits
mailing list