[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