[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