[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