[overlord-commits] Overlord SVN: r488 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model: actions/stateless and 1 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Tue Feb 10 16:05:51 EST 2009


Author: objectiser
Date: 2009-02-10 16:05:51 -0500 (Tue, 10 Feb 2009)
New Revision: 488

Modified:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBService.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBService.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/SwitchAction.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationInteractionModelChangeRule.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/IfModelChangeRule.java
Log:
Changed to deal with responses in separate service descriptors, not through the top level SwitchAction.

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBService.java	2009-02-10 18:06:51 UTC (rev 487)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBService.java	2009-02-10 21:05:51 UTC (rev 488)
@@ -235,6 +235,16 @@
 	}
 	
 	/**
+	 * This method sets the name associated with the service
+	 * descriptor.
+	 * 
+	 * @param name The service name
+	 */
+	public void setName(String name) {
+		m_service.setAttribute(NAME_ATTR, name);
+	}
+	
+	/**
 	 * This method returns the XML configuration representation of the service.
 	 * 
 	 * @return The XML configuration for the service

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBService.java	2009-02-10 18:06:51 UTC (rev 487)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBService.java	2009-02-10 21:05:51 UTC (rev 488)
@@ -58,6 +58,14 @@
 	public String getName();
 	
 	/**
+	 * This method sets the name associated with the service
+	 * descriptor.
+	 * 
+	 * @param name The service name
+	 */
+	public void setName(String name);
+	
+	/**
 	 * This method returns the ESB model.
 	 * 
 	 * @return The ESB model

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/SwitchAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/SwitchAction.java	2009-02-10 18:06:51 UTC (rev 487)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/SwitchAction.java	2009-02-10 21:05:51 UTC (rev 488)
@@ -255,6 +255,7 @@
 	 * @param name The service name
 	 * @param messageTypes The set of interactions
 	 * @param position The position
+	 * @return Whether the path is added
 	 */
 	public void addCase(String category, String name,
 			java.util.Set<Interaction> messageTypes, int position) {

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationInteractionModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationInteractionModelChangeRule.java	2009-02-10 18:06:51 UTC (rev 487)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationInteractionModelChangeRule.java	2009-02-10 21:05:51 UTC (rev 488)
@@ -160,7 +160,7 @@
 			ESBService gw=esbModel.getGatewayService();
 
 			action.setResponseDestination(gw.getCategory(),
-					gw.getName());
+					interaction.getRequestLabel());
 		}
 		
 		/* IS REQUIRED??

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/IfModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/IfModelChangeRule.java	2009-02-10 18:06:51 UTC (rev 487)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/IfModelChangeRule.java	2009-02-10 21:05:51 UTC (rev 488)
@@ -233,6 +233,10 @@
 			Model model, ESBService service,
 			If ifElem, int pos) {
 		ESBLanguageModel esbModel=(ESBLanguageModel)model;
+		java.util.Map<String,java.util.List<ESBService>> replyServices=
+				new java.util.Hashtable<String,java.util.List<ESBService>>();
+		java.util.Map<ESBService,java.util.Set<Interaction>> replyServiceMTypes=
+			new java.util.Hashtable<ESBService,java.util.Set<Interaction>>();
 		
 		// Check if 'when' needs to be placed in new service
 		// descriptor - i.e. if insert at end, but current service
@@ -339,9 +343,12 @@
 			ConditionalBlock cb=ifElem.getConditionalBlocks().get(i);
 			
 			java.util.Set<Interaction> interactions=null;
+			String replyLabel=null;
 			
 			if (la != null) {
 				interactions = la.getInteractions(cb);
+
+				replyLabel = getReplyLabel(interactions);
 			}
 			
 			ESBService subService=
@@ -357,8 +364,22 @@
 				context.insert(model, cb.getContents().get(j), null);
 			}
 
-			switchAction.addCase(subService.getCategory(),
-					subService.getName(), interactions, i);
+			if (replyLabel != null) {
+				java.util.List<ESBService> services=
+					replyServices.get(replyLabel);
+				
+				if (services == null) {
+					services = new java.util.Vector<ESBService>();
+					replyServices.put(replyLabel, services);
+				}
+				
+				services.add(subService);
+				
+				replyServiceMTypes.put(subService, interactions);
+			} else {
+				switchAction.addCase(subService.getCategory(),
+						subService.getName(), interactions, i);
+			}
 			
 			/* REQUIRED?
 			ScheduleStateAction schedule=
@@ -411,13 +432,30 @@
 			}
 				
 			java.util.Set<Interaction> interactions=null;
+			String replyLabel=null;
 			
 			if (la != null) {
 				interactions = la.getInteractions(ifElem.getElseBlock());
+
+				replyLabel = getReplyLabel(interactions);
 			}
 			
-			switchAction.addCase(subService.getCategory(),
-					subService.getName(), interactions, -1);
+			if (replyLabel != null) {
+				java.util.List<ESBService> services=
+					replyServices.get(replyLabel);
+				
+				if (services == null) {
+					services = new java.util.Vector<ESBService>();
+					replyServices.put(replyLabel, services);
+				}
+				
+				services.add(subService);
+				
+				replyServiceMTypes.put(subService, interactions);
+			} else {
+				switchAction.addCase(subService.getCategory(),
+						subService.getName(), interactions, -1);
+			}
 
 			/*
 			ScheduleStateAction schedule=
@@ -453,6 +491,39 @@
 			*/
 		}
 		
+		java.util.Iterator<String> replyLabels=replyServices.keySet().iterator();
+		
+		while (replyLabels.hasNext()) {
+			String replyLabel=replyLabels.next();
+			
+			java.util.List<ESBService> services=replyServices.get(replyLabel);
+			
+			if (services.size() == 1) {
+				ESBService serv=services.get(0);
+				
+				serv.setName(replyLabel);
+			} else {
+				ESBService subService=
+					esbModel.createService(service.getCategory(),
+								replyLabel);
+
+				esbModel.addService(subService);				
+				
+				SwitchAction subSwitchAction=
+							new SwitchAction(subService);
+
+				subService.addAction(subSwitchAction, -1);
+
+				for (int i=0; i < services.size(); i++) {
+					ESBService serv=services.get(i);
+					
+					subSwitchAction.addCase(serv.getCategory(),
+							serv.getName(),
+							replyServiceMTypes.get(serv), -1);
+				}
+			}
+		}
+		
 		// Only record message router 'routes' if the switch
 		// receives request interactions, and it is the first
 		// session based action in the service
@@ -485,6 +556,25 @@
 		}
 		*/
 	}
+	
+	protected String getReplyLabel(java.util.Set<Interaction> interactions) {
+		String ret=null;
+		
+		if (interactions != null) {
+			java.util.Iterator<Interaction> iter=
+					interactions.iterator();
+			
+			while (ret == null && iter.hasNext()) {
+				Interaction interaction=iter.next();
 
+				if (InteractionUtil.isSend(interaction) == false) {
+					ret = interaction.getReplyToLabel();
+				}
+			}
+		}
+
+		return(ret);
+	}
+
 	private static Logger logger = Logger.getLogger("org.jboss.tools.overlord.cdl.runtime.jbossesb.model.change.stateless");
 }




More information about the overlord-commits mailing list