[jboss-svn-commits] JBL Code SVN: r8339 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/listeners/config src/org/jboss/soa/esb/listeners/config/mappers tests/src/org/jboss/soa/esb/listeners/config
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Dec 15 06:36:54 EST 2006
Author: tfennelly
Date: 2006-12-15 06:36:46 -0500 (Fri, 15 Dec 2006)
New Revision: 8339
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/YADOMUtil.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/JmsListenerMapper.java
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/NotificationMapper.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_01.xml
Log:
added action mapping to the config
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/ESBAwareGenerator.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -26,6 +26,7 @@
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.listeners.config.Generator.XMLBeansModel;
import org.jboss.soa.esb.listeners.config.JmsListenerDocument.JmsListener;
+import org.jboss.soa.esb.listeners.config.ServiceDocument.Service;
import org.jboss.soa.esb.listeners.config.mappers.ActionMapper;
import org.jboss.soa.esb.listeners.config.mappers.JmsListenerMapper;
import org.jboss.soa.esb.listeners.config.mappers.NotificationMapper;
@@ -80,17 +81,21 @@
* @throws ConfigurationException Invalid listener configuration.
*/
private void addESBAwareConfig(Element root, Listener listener) throws ConfigurationException {
- Element configTree;
+ Element listenerConfigTree;
+ Service listenerService;
// Of course we could do the following reflectively if we really want to - TODO perhaps!!
if(listener instanceof JmsListener) {
- configTree = JmsListenerMapper.map(root, (JmsListener)listener, model);
+ listenerConfigTree = JmsListenerMapper.map(root, (JmsListener)listener, model);
} else {
throw new ConfigurationException("Unsupported ESB Aware listener type [" + listener.getClass().getName() + "]. No mapper class configured.");
}
+ // Locate the Service to which the listener is bound...
+ listenerService = model.getService(listener);
+
// Map the actions and notiications...
- ActionMapper.map(configTree, listener, model);
- NotificationMapper.map(configTree, listener, model);
+ ActionMapper.map(listenerConfigTree, listenerService, model);
+ NotificationMapper.map(listenerConfigTree, listenerService, model);
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -78,7 +78,6 @@
* @throws ConfigurationException Invalid listener configuration.
*/
private void addGatewayConfig(Element root, Listener gateway) throws ConfigurationException {
-
// Of course we could do the following reflectively if we really want to - TODO perhaps!!
if(gateway instanceof JmsListener) {
JmsListenerMapper.map(root, (JmsListener)gateway, model);
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/YADOMUtil.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/YADOMUtil.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/YADOMUtil.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -32,8 +32,10 @@
import javax.xml.transform.stream.StreamResult;
import org.jboss.soa.esb.ConfigurationException;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
/**
@@ -87,6 +89,24 @@
return element;
}
+
+ /**
+ * Remove all attributes having an empty value.
+ * @param element The element to be processed.
+ */
+ public static void removeEmptyAttributes(Element element) {
+ NamedNodeMap attributes = element.getAttributes();
+ int attribCount = attributes.getLength();
+
+ for(int i = attribCount - 1; i >= 0; i--) {
+ Attr attribute = (Attr) attributes.item(i);
+
+ // Note - doesn't account for namespaces. Not needed here !
+ if(attribute.getValue().equals("")) {
+ attributes.removeNamedItem(attribute.getName());
+ }
+ }
+ }
/**
* Serialize the supplied Document to the specified file in the specified output directory.
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -21,24 +21,58 @@
package org.jboss.soa.esb.listeners.config.mappers;
-import org.jboss.soa.esb.listeners.config.Listener;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
+import org.jboss.soa.esb.listeners.config.YADOMUtil;
+import org.jboss.soa.esb.listeners.config.ActionDocument.Action;
import org.jboss.soa.esb.listeners.config.Generator.XMLBeansModel;
+import org.jboss.soa.esb.listeners.config.PropertyDocument.Property;
+import org.jboss.soa.esb.listeners.config.ServiceDocument.Service;
import org.w3c.dom.Element;
/**
+ * Performs the mapping of XSD based configuration service actions onto a "ConfigTree"
+ * style listener configuration.
*
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
public class ActionMapper {
/**
- * @param configTree
- * @param listener
- * @param model
+ * Perform the mapping.
+ * @param listenerConfigTree The listener ConfigTree to which the actions are to be added.
+ * @param listenerService The Service to which the listener is bound. The Service defines the actions.
+ * @param model The configuration model from which the mapping is being performed.
*/
- public static void map(Element configTree, Listener listener, XMLBeansModel model) {
- // TODO Auto-generated method stub
+ public static void map(Element listenerConfigTree, Service listenerService, XMLBeansModel model) {
+ Action[] actions = listenerService.getActions().getActionArray();
+ for(Action action : actions) {
+ mapAction(listenerConfigTree, action);
+ }
}
+ /**
+ * Map an action instance onto the listener ConfigTree.
+ * @param listenerConfigTree The target listener ConfigTree.
+ * @param action The action instance.
+ */
+ private static void mapAction(Element listenerConfigTree, Action action) {
+ Element actionConfigTree = YADOMUtil.addElement(listenerConfigTree, "action");
+ Property[] properties = action.getPropertyArray();
+
+ actionConfigTree.setAttribute(ListenerTagNames.ACTION_ELEMENT_TAG, action.getName());
+ actionConfigTree.setAttribute(ListenerTagNames.ACTION_CLASS_TAG, action.getClass1());
+ actionConfigTree.setAttribute(ListenerTagNames.PROCESS_METHOD_TAG, action.getProcess());
+ // TODO: What will we do about the "okMethods" and "exceptionMethod" attributes supported by the ConfigTree model??
+
+ // Map the property elements to actions attributes...
+ for(Property property : properties) {
+ actionConfigTree.setAttribute(property.getName(), property.getValue());
+
+ // TODO: Add support for CDATA or xsd:anyType property contents...
+ }
+
+ // Remove any empty attributes set on the action config...
+ YADOMUtil.removeEmptyAttributes(actionConfigTree);
+ }
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/JmsListenerMapper.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/JmsListenerMapper.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/JmsListenerMapper.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -45,7 +45,7 @@
* Perform the mapping.
* @param root The "ConfigTree" configuration root node.
* @param listener The Jmslistener to be mapped into the ConfigTree.
- * @param model The model from which the Listener instance belongs.
+ * @param model The configuration model from which the mapping is being performed.
* @param The ConfigTree listener configuration node.
* @throws ConfigurationException Invalid listener configuration.
*/
@@ -79,6 +79,9 @@
listenerNode.setAttribute(JMSEpr.JNDI_PKG_PREFIX_TAG, bus.getJndiPkgPrefix());
listenerNode.setAttribute(JMSEpr.JNDI_URL_TAG, bus.getJndiURL());
+ // Remove any empty attributes set on the listener config...
+ YADOMUtil.removeEmptyAttributes(listenerNode);
+
return listenerNode;
}
}
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/NotificationMapper.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/NotificationMapper.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/NotificationMapper.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -23,6 +23,7 @@
import org.jboss.soa.esb.listeners.config.Listener;
import org.jboss.soa.esb.listeners.config.Generator.XMLBeansModel;
+import org.jboss.soa.esb.listeners.config.ServiceDocument.Service;
import org.w3c.dom.Element;
/**
@@ -32,11 +33,11 @@
public class NotificationMapper {
/**
- * @param configTree
- * @param listener
+ * @param listenerConfigTree
+ * @param listenerService
* @param model
*/
- public static void map(Element configTree, Listener listener, XMLBeansModel model) {
+ public static void map(Element listenerConfigTree, Service listenerService, XMLBeansModel model) {
// TODO Auto-generated method stub
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java 2006-12-15 11:36:46 UTC (rev 8339)
@@ -32,6 +32,7 @@
import org.jboss.soa.esb.listeners.config.JmsBusDocument.JmsBus;
import org.jboss.soa.esb.listeners.config.JmsListenerDocument.JmsListener;
import org.jboss.soa.esb.listeners.config.ServiceDocument.Service;
+import org.jboss.soa.esb.testutils.FileUtil;
/**
* Generator unit tests.
@@ -58,14 +59,17 @@
}
public void test_generate_files() throws ConfigurationException, IOException {
- @SuppressWarnings("unused")
Generator generator = new Generator(getClass().getResourceAsStream("jbossesb_config_01.xml"));
generator.generate(outdir);
+
gatewayConfig = new File(outdir, Generator.ESB_CONFIG_GATEWAY_XML_FILE);
assertTrue(gatewayConfig.exists());
+ System.out.println(FileUtil.readTextFile(gatewayConfig));
+
awareConfig = new File(outdir, Generator.ESB_CONFIG_XML_FILE);
assertTrue(awareConfig.exists());
+ System.out.println(FileUtil.readTextFile(awareConfig));
}
public void test_model() throws ConfigurationException, IOException {
@@ -74,9 +78,10 @@
JmsBus bus = (JmsBus)model.getBus("server1-jms");
assertEquals("server1-jms", bus.getBusid());
- assertEquals("ConnectionFactory", bus.getConnectionFactory());
- assertEquals("org.jnp.interfaces.NamingContextFactory", bus.getJndiContextFactory());
- assertEquals("localhost", bus.getJndiURL());
+ assertEquals("com.xyz.provider.XYZConnectionFactory", bus.getConnectionFactory());
+ assertEquals("com.xyz.provider.NamingContextFactory", bus.getJndiContextFactory());
+ assertEquals("xyz://server1:9876", bus.getJndiURL());
+ assertEquals("com.xyz", bus.getJndiPkgPrefix());
List<Listener> gateways = model.getGatewayListeners();
assertEquals(1, gateways.size());
@@ -93,7 +98,7 @@
assertEquals(1, awareListeners.size());
JmsListener awareListener = (JmsListener)awareListeners.get(0);
assertEquals("Bank-Listener", awareListener.getName());
- assertEquals("server1-jms", awareListener.getBusidref());
+ assertEquals("local-jms", awareListener.getBusidref());
assertTrue(!awareListener.getIsGateway());
assertEquals("queue/B", awareListener.getDestinationName());
assertEquals(JmsListener.DestinationType.TOPIC, awareListener.getDestinationType());
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_01.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_01.xml 2006-12-15 03:03:31 UTC (rev 8338)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_01.xml 2006-12-15 11:36:46 UTC (rev 8339)
@@ -2,10 +2,14 @@
<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.xsd">
<buses>
+ <jms-bus busid="local-jms"
+ connection-factory="ConnectionFactory"
+ jndi-URL="jnp://localhost:1099" />
<jms-bus busid="server1-jms"
- connection-factory="ConnectionFactory"
- jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
- jndi-URL="localhost" />
+ connection-factory="com.xyz.provider.XYZConnectionFactory"
+ jndi-context-factory="com.xyz.provider.NamingContextFactory"
+ jndi-URL="xyz://server1:9876"
+ jndi-pkg-prefix="com.xyz" />
</buses>
<services>
<service category="Bank" name="Reconciliation" description="Bank Reconciliation Service">
@@ -21,7 +25,7 @@
/>
<jms-listener name="Bank-Listener"
is-gateway="false"
- busidref="server1-jms"
+ busidref="local-jms"
destination-type="TOPIC"
destination-name="queue/B"
message-selector="service='Reconciliation'"
More information about the jboss-svn-commits
mailing list