[jboss-svn-commits] JBL Code SVN: r8530 - in labs/jbossesb/trunk/product/core/listeners: 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
Thu Dec 21 17:27:34 EST 2006


Author: tfennelly
Date: 2006-12-21 17:27:29 -0500 (Thu, 21 Dec 2006)
New Revision: 8530

Added:
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_03.xml
Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/UntypedListenerMapper.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java
Log:
Fix for http://jira.jboss.com/jira/browse/JBESB-293

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/UntypedListenerMapper.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/UntypedListenerMapper.java	2006-12-21 21:06:20 UTC (rev 8529)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/mappers/UntypedListenerMapper.java	2006-12-21 22:27:29 UTC (rev 8530)
@@ -23,9 +23,14 @@
 
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.listeners.ListenerTagNames;
+import org.jboss.soa.esb.listeners.config.Bus;
 import org.jboss.soa.esb.listeners.config.Listener;
+import org.jboss.soa.esb.listeners.config.Provider;
 import org.jboss.soa.esb.listeners.config.YADOMUtil;
 import org.jboss.soa.esb.listeners.config.Generator.XMLBeansModel;
+import org.jboss.soa.esb.listeners.config.impl.BusImpl;
+import org.jboss.soa.esb.listeners.config.impl.ListenerImpl;
+import org.jboss.soa.esb.listeners.config.impl.ProviderImpl;
 import org.w3c.dom.Element;
 
 /**
@@ -53,6 +58,8 @@
 	public static Element map(Element root, Listener listener, XMLBeansModel model) throws ConfigurationException {
 		Element listenerNode = YADOMUtil.addElement(root, listener.getName());
 		
+		assertListenerConfigOK(listener, model);
+		
 		// Map the standard listener attributes - common across all listener types...
 		MapperUtil.mapDefaultAttributes(listener, listenerNode, model);
 		// Map the <property> elements targeted at the listener - from the listener itself.
@@ -72,4 +79,28 @@
 		
 		return listenerNode;
 	}
+
+	/**
+	 * Assert that a valid mapping can be performed from the supplied listener, and the bus + provider it reverences.
+	 * @param listener The listener to be checked.
+	 * @param model The config model instance.
+	 * @throws ConfigurationException Invalid mappng request.
+	 */
+
+	private static void assertListenerConfigOK(Listener listener, XMLBeansModel model) throws ConfigurationException {
+		
+		// Note we're purposely performing instanceof comparisons here...
+		
+		if(listener.getClass() != ListenerImpl.class) {
+			throw new ConfigurationException("Can only use the " + UntypedListenerMapper.class.getName() + " mapper on the base listener type.  Cannot use on " + listener.getClass().getName());
+		}
+		Bus bus = model.getBus(listener.getBusidref());
+		if(bus.getClass() != BusImpl.class) {
+			throw new ConfigurationException("The base Listener config [" + listener.getName() + "] must reference a base Bus config type (<bus>).");
+		}
+		Provider provider = model.getProvider(bus);
+		if(provider.getClass() != ProviderImpl.class) {
+			throw new ConfigurationException("A base Bus config type (<bus>) must be contained within a base Provider type (<provider>).");
+		}
+	}
 }

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-21 21:06:20 UTC (rev 8529)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/GeneratorUnitTest.java	2006-12-21 22:27:29 UTC (rev 8530)
@@ -90,6 +90,19 @@
 		System.out.println("[" + actualESBAwareConfig + "]");
 		assertEquals(expectedESBAwareConfig, removeEOL(actualESBAwareConfig));
 	}
+
+	public void test_bad_base_listener_busref() throws ConfigurationException, IOException {
+		Generator generator = new Generator(getClass().getResourceAsStream("jbossesb_config_03.xml"));
+		
+		try {
+			generator.generate(outdir);
+			fail("Expected ConfigurationException");
+		} catch(ConfigurationException e) {
+			if(!e.getMessage().equals("The base Listener config [JMS-ESBListener] must reference a base Bus config type (<bus>).")) {
+				fail("Wrong exception");
+			}
+		}
+	}
 	
 	private String removeEOL(String string) {
 		StringBuffer stringBuf = new StringBuffer(string.length());

Added: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_03.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_03.xml	2006-12-21 21:06:20 UTC (rev 8529)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/config/jbossesb_config_03.xml	2006-12-21 22:27:29 UTC (rev 8530)
@@ -0,0 +1,43 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.xsd" >
+
+	<!-- 
+		This is a bad configuration.  The listener below is of the base listener type, yet it references a non-base type bus (jms-bus).
+		Should generate an error.
+	-->
+
+    <providers>
+          <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"
+                      jndi-context-factory="org.jnp.interfaces.NamingContextFactory "
+                      jndi-URL="localhost" >
+                      
+              <jms-bus busid="quickstartEsbChannel">
+                  <jms-message-filter
+                      dest-type="QUEUE"
+                      dest-name="queue/B"
+                  />
+              </jms-bus>
+
+          </jms-provider>
+      </providers>
+      
+      <services>
+          
+        <service category="HelloWorld_ActionESB" name="SimpleListener" description="Hello World" is-gateway="false">
+            <listeners>
+                <listener name="JMS-ESBListener"
+                              busidref="quickstartEsbChannel"
+                              maxThreads="1"
+                />                
+            </listeners>
+            <actions>
+               <action name="displayAction" 
+               		class="quickstart.helloworld_action.MyJMSListenerAction" 
+               		process="displayMessage">
+               		<property name="exceptionMethod" value="exceptionHandler"/>
+               </action>
+            </actions>
+        </service>
+      </services>
+     
+</jbossesb>




More information about the jboss-svn-commits mailing list