[overlord-commits] Overlord SVN: r602 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src: java/org/jboss/tools/overlord/cdl/bpel/model/util and 1 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Mon Apr 27 18:32:30 EDT 2009


Author: objectiser
Date: 2009-04-27 18:32:30 -0400 (Mon, 27 Apr 2009)
New Revision: 602

Modified:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel
Log:
Cater for synchronous response, and pick with mutually exclusive receives.

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java	2009-04-27 22:32:30 UTC (rev 602)
@@ -156,24 +156,31 @@
 				}
 			}
 		} else if (InteractionPatterns.isResponseInFaultHandler(interaction) == false) {
-			act = new Receive(bpelModel);
-
-			if (InteractionUtil.isRequest(interaction)) {
+			
+			if (InteractionPatterns.isSyncNormalResponse(interaction)) {
+				
+				//System.out.println("ADD RESP VAR TO PRECEDING");
+				
+			} else if (InteractionPatterns.isInteractionPickPathTrigger(interaction) == false) {
+				act = new Receive(bpelModel);
 	
-				pl.setMyRole(role.getName()+"Service");
-				//pl.setPartnerRole(interaction.getToRole().getName());
-				pl.setName(interaction.getFromRole().getName()+"To"+role.getName());
-				pl.setPartnerLinkType(interaction.getFromRole().getName()+"To"+role.getName()+"Service"+"LT");
-
-				portType = role.getName()+"PT";
-			} else {
-				pl.setMyRole(role.getName()+"Requester");
-				pl.setPartnerRole(interaction.getFromRole().getName()+"Service");
-				pl.setName(role.getName()+"To"+interaction.getFromRole().getName());
-				pl.setPartnerLinkType(role.getName()+"To"+interaction.getFromRole().getName()+"Requester"+"LT");
-
-				portType = role.getName()+
-						interaction.getFromRole().getName()+"CallbackPT";				
+				if (InteractionUtil.isRequest(interaction)) {
+		
+					pl.setMyRole(role.getName()+"Service");
+					//pl.setPartnerRole(interaction.getToRole().getName());
+					pl.setName(interaction.getFromRole().getName()+"To"+role.getName());
+					pl.setPartnerLinkType(interaction.getFromRole().getName()+"To"+role.getName()+"Service"+"LT");
+	
+					portType = role.getName()+"PT";
+				} else {
+					pl.setMyRole(role.getName()+"Requester");
+					pl.setPartnerRole(interaction.getFromRole().getName()+"Service");
+					pl.setName(role.getName()+"To"+interaction.getFromRole().getName());
+					pl.setPartnerLinkType(role.getName()+"To"+interaction.getFromRole().getName()+"Requester"+"LT");
+	
+					portType = role.getName()+
+							interaction.getFromRole().getName()+"CallbackPT";				
+				}
 			}
 		}
 		

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/IfModelChangeRule.java	2009-04-27 22:32:30 UTC (rev 602)
@@ -163,13 +163,13 @@
 				
 				context.setParent(seq);
 				
-				for (int j=1; j < acts.size(); j++) {
+				for (int j=0; j < acts.size(); j++) {
 					context.insert(model, acts.get(j), null);
 				}
 				
 				context.setParent(parent);
 				
-				Interaction recv=(Interaction)acts.get(0);
+				Interaction recv=InteractionPatterns.getPickPathInteraction(path); //(Interaction)acts.get(0);
 				
 				OnMessage onm=new OnMessage(bpelModel);
 				onm.setActivity(seq);

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/InteractionPatterns.java	2009-04-27 22:32:30 UTC (rev 602)
@@ -128,13 +128,11 @@
 					
 					for (int i=0; i < paths.size(); i++) {
 						if (paths.get(i).getContents().size() > 0) {
-							org.scribble.model.Activity sub=
-								paths.get(i).getContents().get(0);
+							Interaction in=getPickPathInteraction(paths.get(i));
 							
-							if (sub instanceof Interaction &&
-									InteractionUtil.isRequest((Interaction)sub) == false &&
-									((Interaction)sub).getReplyToLabel() != null &&
-									((Interaction)sub).getReplyToLabel().equals(requestLabel)) {
+							if (in != null &&
+									InteractionUtil.isResponse(in) &&
+									in.getReplyToLabel().equals(requestLabel)) {
 								matched++;
 							}
 						}
@@ -150,6 +148,84 @@
 		return(ret);
 	}
 	
+	/**
+	 * This method obtains the interaction that triggers a
+	 * specified path in a BPEL pick activity.
+	 * 
+	 * @param path The path
+	 * @return The interaction that triggers the path in
+	 * 				the pick activity
+	 */
+	public static Interaction getPickPathInteraction(Block path) {
+		Interaction ret=null;
+		
+		// TODO: This method is the opposite of the
+		// 'isInteractionPickPathTrigger', so needs to be
+		// updated to reflect any changes to that method
+		
+		if (path.getContents().size() > 0) {
+			org.scribble.model.Activity sub=
+				path.getContents().get(0);
+								
+			// Check if scope
+			if (sub instanceof Compose) {
+				Definition defn=((Compose)sub).getDefinition();
+				org.scribble.model.Behaviour b=null;
+				
+				for (int j=0; b == null &&
+							j < defn.getBlock().getContents().size(); j++) {
+					if (defn.getBlock().getContents().get(j) instanceof org.scribble.model.Behaviour) {
+						b = (org.scribble.model.Behaviour)
+									defn.getBlock().getContents().get(j);
+					}
+				}
+				
+				if (b != null) {
+					sub = b;
+				}
+			}
+			
+			if (sub instanceof Interaction) {
+				ret = (Interaction)sub;
+			}
+		}
+		
+		return(ret);
+	}
+	
+	/**
+	 * This method determines whether the supplied interaction
+	 * is the trigger interaction within a BPEL pick activity.
+	 * 
+	 * @param in The interaction
+	 * @return Whether the interaction is a pick trigger activity
+	 */
+	public static boolean isInteractionPickPathTrigger(Interaction in) {
+		boolean ret=false;
+		
+		// TODO: Need to determine all situations and ensure
+		// is generic enough to cope with extensions to Scribble
+		// model
+		
+		Block path=(Block)in.getParent();
+		
+		if (path.getParent() instanceof If &&
+				InteractionPatterns.isSwitch((If)path.getParent())) {
+			ret = true;
+			
+		// Check if receive is directly contained within a
+		// sub-definition
+		} else if (InteractionUtil.isSend(in) == false &&
+				path.getParent() instanceof org.scribble.model.Definition &&
+				path.getParent().getParent() instanceof Block &&
+				path.getParent().getParent().getParent() instanceof 
+						org.scribble.model.Definition) {
+			ret = true;
+		}
+		
+		return(ret);
+	}
+	
 	public static boolean isSwitch(If choice) {
 		boolean ret=false;
 		
@@ -159,11 +235,10 @@
 			
 			for (int i=0; i < paths.size(); i++) {
 				if (paths.get(i).getContents().size() > 0) {
-					org.scribble.model.Activity sub=
-						paths.get(i).getContents().get(0);
+					Interaction in=getPickPathInteraction(paths.get(i));
 					
-					if (sub instanceof Interaction &&
-							InteractionUtil.isSend((Interaction)sub) == false) {
+					if (in != null &&
+							InteractionUtil.isSend(in) == false) {
 						matched++;
 					}
 				}
@@ -236,4 +311,37 @@
 		return((String)interaction.
 			getMessageSignature().getAnnotations().get(FAULT_NAME));
 	}
+	
+	public static boolean isSyncNormalResponse(Interaction interaction) {
+		boolean ret=false;
+
+		if (InteractionUtil.isResponse(interaction) &&
+				interaction.getParent() instanceof Block) {
+			Block block=(Block)interaction.getParent();
+		
+			int pos=block.getContents().indexOf(interaction);
+			
+			if (pos > 0 && block.getContents().get(pos-1) instanceof Interaction) {
+				Interaction req=(Interaction)block.getContents().get(pos-1);
+				
+				ret = isResponseForRequest(interaction, req);
+			}
+		}
+		
+		return(ret);
+	}
+	
+	public static boolean isResponseForRequest(Interaction resp,
+							Interaction req) {
+		boolean ret=false;
+		
+		if (InteractionUtil.isRequest(req) &&
+				InteractionUtil.isResponse(resp) &&
+				resp.getReplyToLabel().equals(
+						req.getRequestLabel())) {
+			ret = true;
+		}
+		
+		return(ret);
+	}
 }

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/util/InteractionUtil.java	2009-04-27 22:32:30 UTC (rev 602)
@@ -70,4 +70,20 @@
 		return(ret);
 	}
 	
+	/**
+	 * This method determines whether the supplied interaction
+	 * is a response.
+	 * 
+	 * @param interaction The interaction
+	 * @return Whether the interaction is a response
+	 */
+	public static boolean isResponse(Interaction interaction) {
+		boolean ret=false;
+
+		if (interaction.getReplyToLabel() != null) {
+			ret = true;
+		}
+		
+		return(ret);
+	}
 }

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at Broker.bpel	2009-04-27 22:32:30 UTC (rev 602)
@@ -1,9 +1,9 @@
 <process name="ESBBrokerProcess_Broker" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
     <partnerLinks>
         <partnerLink myRole="BrokerService" name="BuyerToBroker" partnerLinkType="BuyerToBrokerServiceLT"/>
-        <partnerLink myRole="BrokerRequester" name="BrokerToSupplierQuoteEngine" partnerLinkType="BrokerToSupplierQuoteEngineLT" partnerRole="SupplierQuoteEngineRequester"/>
+        <partnerLink name="BrokerToSupplierQuoteEngine" partnerLinkType="BrokerToSupplierQuoteEngineLT" partnerRole="SupplierQuoteEngineRequester"/>
         <partnerLink name="BrokerToCreditAgency" partnerLinkType="BrokerToCreditAgencyLT" partnerRole="CreditAgencyRequester"/>
-        <partnerLink myRole="BrokerRequester" name="BrokerToSupplierTxnProcessor" partnerLinkType="BrokerToSupplierTxnProcessorLT" partnerRole="SupplierTxnProcessorRequester"/>
+        <partnerLink name="BrokerToSupplierTxnProcessor" partnerLinkType="BrokerToSupplierTxnProcessorLT" partnerRole="SupplierTxnProcessorRequester"/>
     </partnerLinks>
     <sequence>
         <receive operation="makeEnquiry" partnerLink="BuyerToBroker" portType="BrokerPT"/>
@@ -12,40 +12,37 @@
                 <scope>
                     <sequence>
                         <invoke operation="getQuote" partnerLink="BrokerToSupplierQuoteEngine" portType="SupplierQuoteEnginePT"/>
-                        <receive operation="getQuote" partnerLink="BrokerToSupplierQuoteEngine" portType="BrokerSupplierQuoteEngineCallbackPT"/>
                     </sequence>
                 </scope>
             </sequence>
         </while>
         <reply operation="makeEnquiry" partnerLink="BuyerToBroker" portType="BrokerPT"/>
-        <if>
-            <sequence>
-                <scope>
-                    <sequence>
-                        <receive operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
-                        <scope>
-                            <faultHandlers>
-                                <catch faultName="invalidCredit">
-                                    <sequence>
-                                        <reply faultName="rejected" operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
-                                    </sequence>
-                                </catch>
-                            </faultHandlers>
-                            <sequence>
-                                <invoke operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
-                                <invoke operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="SupplierTxnProcessorPT"/>
-                                <receive operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="BrokerSupplierTxnProcessorCallbackPT"/>
-                                <reply operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
-                            </sequence>
-                        </scope>
-                    </sequence>
-                </scope>
-            </sequence>
-            <else>
+        <pick>
+            <onMessage operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT">
                 <sequence>
-                    <receive operation="cancel" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+                    <scope>
+                        <sequence>
+                            <scope>
+                                <faultHandlers>
+                                    <catch faultName="invalidCredit">
+                                        <sequence>
+                                            <reply faultName="rejected" operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+                                        </sequence>
+                                    </catch>
+                                </faultHandlers>
+                                <sequence>
+                                    <invoke operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+                                    <invoke operation="confirm" partnerLink="BrokerToSupplierTxnProcessor" portType="SupplierTxnProcessorPT"/>
+                                    <reply operation="buy" partnerLink="BuyerToBroker" portType="BrokerPT"/>
+                                </sequence>
+                            </scope>
+                        </sequence>
+                    </scope>
                 </sequence>
-            </else>
-        </if>
+            </onMessage>
+            <onMessage operation="cancel" partnerLink="BuyerToBroker" portType="BrokerPT">
+                <sequence/>
+            </onMessage>
+        </pick>
     </sequence>
 </process>

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel	2009-04-27 08:05:58 UTC (rev 601)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ESBBroker at CreditAgency.bpel	2009-04-27 22:32:30 UTC (rev 602)
@@ -3,24 +3,25 @@
         <partnerLink myRole="CreditAgencyService" name="BrokerToCreditAgency" partnerLinkType="BrokerToCreditAgencyServiceLT"/>
     </partnerLinks>
     <sequence>
-        <if>
-            <sequence>
-                <scope>
-                    <sequence>
-                        <receive operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
-                        <if>
-                            <sequence>
-                                <reply operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
-                            </sequence>
-                            <else>
+        <pick>
+            <onMessage operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT">
+                <sequence>
+                    <scope>
+                        <sequence>
+                            <if>
                                 <sequence>
-                                    <reply faultName="invalidCredit" operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+                                    <reply operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
                                 </sequence>
-                            </else>
-                        </if>
-                    </sequence>
-                </scope>
-            </sequence>
-        </if>
+                                <else>
+                                    <sequence>
+                                        <reply faultName="invalidCredit" operation="checkCredit" partnerLink="BrokerToCreditAgency" portType="CreditAgencyPT"/>
+                                    </sequence>
+                                </else>
+                            </if>
+                        </sequence>
+                    </scope>
+                </sequence>
+            </onMessage>
+        </pick>
     </sequence>
 </process>




More information about the overlord-commits mailing list