[jboss-svn-commits] JBL Code SVN: r14335 - in labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config: mappers and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 17 16:17:09 EDT 2007


Author: tcunning
Date: 2007-08-17 16:17:08 -0400 (Fri, 17 Aug 2007)
New Revision: 14335

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java
Log:
bug:JBESB-847
Logging full stack trace warnings if the service names are not unique
with an esb package's <services> tag, or if actio names are not unique
within a service.


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java	2007-08-17 14:30:16 UTC (rev 14334)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/GatewayGenerator.java	2007-08-17 20:17:08 UTC (rev 14335)
@@ -21,8 +21,10 @@
 
 package org.jboss.soa.esb.listeners.config;
 
+import java.util.HashMap;
 import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.dom.YADOMUtil;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.FsListenerDocument.FsListener;
@@ -32,6 +34,7 @@
 import org.jboss.soa.esb.listeners.config.xbeanmodel.HibernateListenerDocument.HibernateListener;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.JbrListenerDocument.JbrListener;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.JmsListenerDocument.JmsListener;
+import org.jboss.soa.esb.listeners.config.xbeanmodel.ServiceDocument.Service;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.SqlListenerDocument.SqlListener;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.Listener;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.JcaGatewayDocument;
@@ -48,6 +51,8 @@
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
 public class GatewayGenerator {
+	
+	private static final Logger logger = Logger.getLogger(GatewayGenerator.class);
 
     /**
      * XMLBeans based configuration model instance.
@@ -78,6 +83,21 @@
         root = YADOMUtil.addElement(doc, "jbossesb-gateways");
         root.setAttribute("parameterReloadSecs", model.getParameterReloadSecs());
 
+        try {
+	        List<Service> services = model.getServices();
+	        HashMap<String, String> hm = new HashMap();
+	        for (Service service : services) {
+	        	if (hm.containsKey(service.getName())) {
+	        		throw new ConfigurationException("Service names must be unique.    The service name " + service.getName()
+	        				+ " is already defined within the <services> tag.");
+	        	} else {
+	        		hm.put(service.getName(), service.getName());
+	        	}
+	        }
+        } catch (ConfigurationException ce) {
+        	logger.error("", ce);
+        }
+        
         // Iterate over all the gateway configs and map them to the gateway configuration...
         List<Listener> gateways = model.getGatewayListeners();
         for (Listener gateway : gateways) {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java	2007-08-17 14:30:16 UTC (rev 14334)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/ActionMapper.java	2007-08-17 20:17:08 UTC (rev 14335)
@@ -21,8 +21,11 @@
 
 package org.jboss.soa.esb.listeners.config.mappers;
 
+import java.util.HashMap;
 import java.util.List;
 
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.dom.YADOMUtil;
 import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.listeners.config.xbeanmodel.ActionDocument.Action;
@@ -38,19 +41,34 @@
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
 public class ActionMapper {
+	private static final Logger logger = Logger.getLogger(ActionMapper.class);
 
 	/**
-	 * Perform the mapping.
+	 * Perform the mapping.    Checks to ensure that action names are unique, and throws a ConfigurationException if 
+	 * a duplicate action name is registered.
 	 * @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.
+	 * @throws ConfigurationException 
 	 */
-	public static void map(Element listenerConfigTree, Service listenerService, XMLBeansModel model) {
+	public static void map(Element listenerConfigTree, Service listenerService, XMLBeansModel model) throws ConfigurationException {
 		if (listenerService.getActions()!=null) {
 			List<Action> actions = listenerService.getActions().getActionList();
 			
-			for(Action action : actions) {
-				mapAction(listenerConfigTree, action);
+			try {
+				HashMap<String,String> hm = new HashMap<String,String>();
+				for(Action action : actions) {
+					mapAction(listenerConfigTree, action);
+					if (hm.containsKey(action.getName())) {
+						throw new ConfigurationException("Tried to register a duplicate action name.  Service " 
+								+ listenerService.getName() + " already contains an action named "
+								+ action.getName() + ".    Action names must be unique per service.");
+					} else {
+						hm.put(action.getName(), action.getName());
+					}
+				}
+			} catch (ConfigurationException ce) {
+				logger.error("", ce);
 			}
 		}
 	}




More information about the jboss-svn-commits mailing list