[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