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");
}