[overlord-commits] Overlord SVN: r198 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb: src/java/org/jboss/tools/overlord/jbossesb/model and 3 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Thu Jul 24 07:06:52 EDT 2008


Author: objectiser
Date: 2008-07-24 07:06:52 -0400 (Thu, 24 Jul 2008)
New Revision: 198

Added:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java
Modified:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF
   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/ESBLanguageModel.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java
Log:
Initial work on using the in memory ESB config model to generate a new configuration.

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF	2008-07-23 14:28:48 UTC (rev 197)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF	2008-07-24 11:06:52 UTC (rev 198)
@@ -17,4 +17,4 @@
 Scribble-Extensions: org.jboss.tools.overlord.jbossesb.parser.JBossESBParser,
   org.jboss.tools.overlord.jbossesb.parser.JBossESBNotation,
   org.jboss.tools.overlord.jbossesb.validation.ESBLanguageModelValidationRule
-Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy

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-23 14:28:48 UTC (rev 197)
+++ 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)
@@ -40,9 +40,15 @@
 public class DefaultESBLanguageModel extends org.scribble.lang.model.LanguageModel
 					implements ESBLanguageModel {
 
+	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";
+	public static final String PARAMETER_RELOAD_SECS_ATTR = "parameterReloadSecs";
+	public static final String PROVIDERS_ELEMENT = "providers";
+	public static final String JMS_PROVIDER_ELEMENT = "jms-provider";
 	public static final String JAVA_NOTATION = "java";
-	private static final String SERVICE_ELEMENT = "service";
-	private static final String SERVICES_ELEMENT = "services";
+	public static final String SERVICE_ELEMENT = "service";
+	public static final String SERVICES_ELEMENT = "services";
 
 	public static final String JBOSSESB_NOTATION = "jboss-esb.xml";
 
@@ -60,13 +66,60 @@
 		m_contents = contents;
 
 		// Extract service action pipelines
-		initialize();
+		initializeExistingConfig();
 	}
 	
 	/**
+	 * This constructor initializes a new ESB configuration.
+	 * 
+	 * @param source The model reference for the JBossESB configuration
+	 */
+	public DefaultESBLanguageModel(ModelReference source) {
+		m_source = source;
+		
+		initializeNewConfig();
+	}
+	
+	/**
+	 * This method creates a new ESB configuration.
+	 */
+	protected void initializeNewConfig() {
+		
+		org.w3c.dom.Document doc=null;
+		
+		// Create an empty document
+		try {
+			doc = javax.xml.parsers.DocumentBuilderFactory.
+				newInstance().newDocumentBuilder().newDocument();
+			
+			m_esbConfig = doc.createElement(TOP_LEVEL_ELEMENT);
+			
+			m_esbConfig.setAttribute(XMLNS, 
+					JBOSSESB_XML_NAMESPACE);
+			m_esbConfig.setAttribute(PARAMETER_RELOAD_SECS_ATTR,"5000");
+			
+			doc.appendChild(m_esbConfig);
+			
+			// Create provider information
+			org.w3c.dom.Element providers=doc.createElement(PROVIDERS_ELEMENT);
+			m_esbConfig.appendChild(providers);
+			
+			m_jmsProviderElem = doc.createElement(JMS_PROVIDER_ELEMENT);
+			providers.appendChild(m_jmsProviderElem);
+			
+			m_servicesElem = doc.createElement(SERVICES_ELEMENT);
+			m_esbConfig.appendChild(m_servicesElem);
+			
+		} catch(Exception e) {
+			logger.severe("Failed to create initial jbossesb document: "+e);
+		}
+		
+	}
+	
+	/**
 	 * This method initializes the ESB Model.
 	 */
-	protected void initialize() {
+	protected void initializeExistingConfig() {
 		org.w3c.dom.NodeList services=
 				m_esbConfig.getElementsByTagName(SERVICES_ELEMENT);
 		
@@ -318,15 +371,50 @@
 	}
 	
 	/**
+	 * This method adds a new service to the model.
+	 * 
+	 * @param service The service
+	 */
+	public void addService(ESBService service) {
+		m_services.put(getKey(service.getCategory(), service.getName()),
+				service);
+		
+		// Add provider information
+		
+	}
+	
+	/**
+	 * This method removes a service from the model.
+	 * 
+	 * @param service The service
+	 */
+	public void removeService(ESBService service) {
+		m_services.remove(getKey(service.getCategory(),
+						service.getName()));
+		
+		// Remove provider information
+	}
+	
+	/**
 	 * This textual contents of the model.
 	 * 
 	 * @return The textual contents
 	 */
-	public String getContents() {
+	public String getOriginalContents() {
 		return(m_contents);
 	}
 	
 	/**
+	 * This method returns the reference to the DOM
+	 * representation of the ESB configuration.
+	 * 
+	 * @return The ESB configuration
+	 */
+	public org.w3c.dom.Element getESBConfiguration() {
+		return(m_esbConfig);
+	}
+	
+	/**
 	 * This method returns a custom classloader that uses the project's
 	 * classpath to locate classes referenced by the ESB config file.
 	 * 
@@ -349,6 +437,8 @@
 
 	private ModelReference m_source=null;
 	private org.w3c.dom.Element m_esbConfig=null;
+	private org.w3c.dom.Element m_jmsProviderElem=null;
+	private org.w3c.dom.Element m_servicesElem=null;
 	private String m_contents=null;
 	private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
 	private ClassLoader m_classLoader=null;

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-23 14:28:48 UTC (rev 197)
+++ 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)
@@ -35,6 +35,8 @@
  */
 public class DefaultESBService extends ModelObject implements ESBService {
 
+	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";
@@ -46,24 +48,54 @@
 	private static final String ACTIONS_ELEMENT = "actions";
 	
 	/**
-	 * This is the constructor for the ESB service.
+	 * This is the constructor for the ESB service. This construct
+	 * creates a new DOM element, contained within the supplied
+	 * model, to represent the service associated with the
+	 * supplied category and name.
 	 * 
 	 * @param model The ESB model in which the service has been defined
 	 * @param service The XML configuration of the service
 	 */
+	public DefaultESBService(ESBLanguageModel model,
+					String category, String name) {
+		m_model = model;
+		
+		// Create new element for the service
+		initializeNewServiceElement(category, name);
+	}
+	
+	/**
+	 * This is the constructor for the ESB service. This construct
+	 * creates a wrapper around the supplied DOM representation of
+	 * the existing service element within an ESB configuration.
+	 * 
+	 * @param model The ESB model in which the service has been defined
+	 * @param service The XML configuration of the service
+	 */
 	public DefaultESBService(ESBLanguageModel model, org.w3c.dom.Element service) {
 		m_model = model;
 		m_service = service;
 		
 		if (m_model != null && m_service != null) {
-			initialize();
+			initializeExistingServiceElement();
 		}
 	}
 	
+	protected void initializeNewServiceElement(String category, String name) {
+		
+		m_service = m_model.getESBConfiguration().
+					getOwnerDocument().createElement(SERVICE_ELEMENT);
+		
+		m_service.setAttribute(CATEGORY_ATTR, category);
+		m_service.setAttribute(NAME_ATTR, name);
+		
+		
+	}
+	
 	/**
 	 * This method initializes the service.
 	 */
-	protected void initialize() {
+	protected void initializeExistingServiceElement() {
 		// Check if relevant action
 		org.w3c.dom.NodeList actions=m_service.getElementsByTagName(ACTIONS_ELEMENT); 
 	
@@ -84,7 +116,7 @@
 		// Find positional information
 		int servCount=getServicePosition();
 		
-		String str=getModel().getContents();
+		String str=getModel().getOriginalContents();
 
 		int startPosition=str.indexOf("<service ");
 		int endPosition=-1;
@@ -167,7 +199,7 @@
 	 * @return The service category
 	 */
 	public String getCategory() {
-		return(m_service.getAttribute("category"));
+		return(m_service.getAttribute(CATEGORY_ATTR));
 	}
 	
 	/**
@@ -177,7 +209,7 @@
 	 * @return The service name
 	 */
 	public String getName() {
-		return(m_service.getAttribute("name"));
+		return(m_service.getAttribute(NAME_ATTR));
 	}
 	
 	/**
@@ -356,7 +388,7 @@
 					if (annotation != null) {
 						try {
 							java.lang.reflect.Method method=
-								annotation.getClass().getMethod("name", (Class<?>[])null);
+								annotation.getClass().getMethod(NAME_ATTR, (Class<?>[])null);
 							
 							Object val=method.invoke(annotation, (Object[])null);
 							

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java	2008-07-23 14:28:48 UTC (rev 197)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java	2008-07-24 11:06:52 UTC (rev 198)
@@ -66,6 +66,14 @@
 	 * 
 	 * @return The textual contents
 	 */
-	public String getContents();
+	public String getOriginalContents();
 	
+	/**
+	 * This method returns the reference to the DOM
+	 * representation of the ESB configuration.
+	 * 
+	 * @return The ESB configuration
+	 */
+	public org.w3c.dom.Element getESBConfiguration();
+
 }

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java	2008-07-23 14:28:48 UTC (rev 197)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java	2008-07-24 11:06:52 UTC (rev 198)
@@ -62,13 +62,13 @@
 		m_action = action;
 		
 		if (m_service.getModel() != null &&
-				m_service.getModel().getContents() != null) {
+				m_service.getModel().getOriginalContents() != null) {
 			
 			// Find positional information
 			int servCount=m_service.getServicePosition();
 			int actionCount=getActionPosition();
 			
-			String str=m_service.getModel().getContents();
+			String str=m_service.getModel().getOriginalContents();
 	
 			int startPosition=str.indexOf("<service ");
 			int endPosition=-1;

Added: 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	                        (rev 0)
+++ 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)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+package org.jboss.tools.overlord.jbossesb.model;
+
+import junit.framework.TestCase;
+import org.scribble.model.*;
+
+public class DefaultESBLanguageModelTest extends TestCase {
+
+	public void testBaseConfiguration() {
+		
+		ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
+		
+		DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+		
+		org.w3c.dom.Element config=model.getESBConfiguration();
+		
+		if (config.getNodeName().equals(DefaultESBLanguageModel.TOP_LEVEL_ELEMENT) == false) {
+			fail("Top level element should be '"+
+					DefaultESBLanguageModel.TOP_LEVEL_ELEMENT+"' but found: "+
+					config.getNodeName());
+		}
+		
+		boolean f_providers=false;
+		boolean f_services=false;
+		
+		org.w3c.dom.NodeList nl=config.getChildNodes();
+		
+		for (int i=0; i < nl.getLength(); i++) {
+			if (nl.item(i) instanceof org.w3c.dom.Element) {
+				org.w3c.dom.Element elem=
+					(org.w3c.dom.Element)nl.item(i);
+				
+				if (elem.getNodeName().equals(DefaultESBLanguageModel.PROVIDERS_ELEMENT)) {
+					
+					if (f_providers) {
+						fail("Duplicate '"+DefaultESBLanguageModel.PROVIDERS_ELEMENT+"' elements");
+					} else {
+						
+						// Check if jms provider defined
+						org.w3c.dom.NodeList nl2=
+							elem.getChildNodes();
+						boolean f_jmsProvider=false;
+						
+						for (int j=0; j < nl2.getLength(); j++) {
+							if (nl2.item(j) instanceof org.w3c.dom.Element) {
+								
+								if (nl2.item(j).getNodeName().equals(
+											DefaultESBLanguageModel.JMS_PROVIDER_ELEMENT)) {
+								
+									if (f_jmsProvider) {
+										fail("JMS Provider already defined");
+									}
+									
+									f_jmsProvider = true;
+								} else {
+									fail("Unknown provider element: "+
+											nl2.item(j).getNodeName());
+								}
+							}
+						}
+						
+						if (f_jmsProvider == false) {
+							fail("JMS provider not defined");
+						}
+					}
+					
+					f_providers = true;
+				} else if (elem.getNodeName().equals(DefaultESBLanguageModel.SERVICES_ELEMENT)) {
+					
+					if (f_services) {
+						fail("Duplicate '"+DefaultESBLanguageModel.SERVICES_ELEMENT+"' elements");
+					}
+					
+					f_services = true;
+				} else {
+					fail("Unknown element: "+nl.item(i).getNodeName());
+				}
+			}
+		}
+		
+		if (f_providers == false) {
+			fail("Element '"+DefaultESBLanguageModel.PROVIDERS_ELEMENT+"' not found");
+		}
+		
+		if (f_services == false) {
+			fail("Element '"+DefaultESBLanguageModel.SERVICES_ELEMENT+"' not found");
+		}
+	}
+}

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-23 14:28:48 UTC (rev 197)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java	2008-07-24 11:06:52 UTC (rev 198)
@@ -22,10 +22,11 @@
 import org.jboss.tools.overlord.jbossesb.model.ESBService;
 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 String getContents() {
+	public String getOriginalContents() {
 		// TODO Auto-generated method stub
 		return null;
 	}
@@ -52,5 +53,10 @@
 		
 	}
 
+	public Element getESBConfiguration() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 	private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
 }




More information about the overlord-commits mailing list