[savara-commits] savara SVN: r527 - in branches/experimental/2.0.x/bundles: org.savara.bpel.tests/src/test/java/org/savara/bpel/generator and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Jan 4 06:55:43 EST 2011


Author: objectiser
Date: 2011-01-04 06:55:42 -0500 (Tue, 04 Jan 2011)
New Revision: 527

Modified:
   branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/java/org/savara/bpel/generator/GeneratorTest.java
   branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Broker.bpel
   branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Buyer.bpel
   branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/ChoiceModelChangeRule.java
   branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/InteractionPatterns.java
   branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ConverterContext.java
   branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/DefaultConverterContext.java
   branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/PerformConverterRuleImpl.java
   branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ProtocolConverterRuleImpl.java
Log:
Fixed additional invoke in the first choice path.

Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/ChoiceModelChangeRule.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/ChoiceModelChangeRule.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/ChoiceModelChangeRule.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -131,6 +131,20 @@
 				TScope scope=(TScope)context.getProperties().get(BPELDefinitions.BPEL_SCOPE_PROPERTY);
 				
 				if (scope == null) {
+					TSequence newseq = new TSequence();
+					
+					// Move invoke
+					java.util.List<Object> acts=
+						((TSequence)context.getParent()).getActivity();
+
+					if (acts.size() > 0 &&
+							acts.get(acts.size()-1) instanceof TInvoke) {
+						TInvoke invoke=(TInvoke)acts.get(acts.size()-1);
+						acts.remove(invoke);
+						newseq.getActivity().add(invoke);
+					}
+
+					// Create scope and fault handler
 					scope = new TScope();
 					scope.setFaultHandlers(new TFaultHandlers());
 
@@ -138,7 +152,7 @@
 					
 					seq.getActivity().add(scope);
 					
-					seq = new TSequence();
+					seq = newseq;
 					
 					scope.setSequence(seq);
 					
@@ -159,7 +173,7 @@
 							String faultName=InteractionPatterns.getFaultName(path);
 							
 							Contract fromContract = ModelChangeUtils.getContract(context,
-										elem.getFromRole());
+										(elem.getFromRole()==null?role:elem.getFromRole()));
 							
 							// Define fault message type
 							QName qname= WSDLGeneratorUtil.getFaultMessageType(fromContract.getNamespace(),

Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/InteractionPatterns.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/InteractionPatterns.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/InteractionPatterns.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -102,8 +102,35 @@
 	// to use for subsequent activities.
 	
 	public static boolean isResponseAndFaultHandler(Choice choice) {
-		boolean ret=false;
+		boolean ret=choice.getWhens().size() > 0;
 		
+		// Check if all paths are responses with same reply label
+		String label=null;
+		
+		for (int i=0; ret && i < choice.getWhens().size(); i++) {
+			When path=choice.getWhens().get(i);
+			
+			if (i == 0) {
+				label = getReplyToLabel(path);
+				
+				if (label == null || InteractionUtil.isRequest(path)
+						|| InteractionUtil.isSend(path)) {
+					ret = false;
+				}
+			} else {
+				String replyTo=getReplyToLabel(path);
+				
+				if (replyTo == null ||
+						replyTo.equals(label) == false ||
+						InteractionUtil.isRequest(path) ||
+						InteractionUtil.isSend(path)) {
+					ret = false;
+				}
+			}
+		}
+		
+		/*
+		
 		// Obtain interaction prior to 'If'
 		if (choice.getPaths().size() > 0 &&
 				choice.getParent() instanceof
@@ -136,17 +163,6 @@
 								getReplyToLabel(when).equals(requestLabel)) {
 							matched++;
 						}
-						/*
-						if (paths.get(i).getBlock().getContents().size() > 0) {
-							Interaction in=getPickPathInteraction(paths.get(i).getBlock());
-							
-							if (in != null &&
-									InteractionUtil.isResponse(in) &&
-									getReplyToLabel(in).equals(requestLabel)) {
-								matched++;
-							}
-						}
-						*/
 					}
 					
 					if (matched == paths.size()) {
@@ -155,6 +171,7 @@
 				}
 			}
 		}
+		*/
 
 		return(ret);
 	}

Modified: branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/java/org/savara/bpel/generator/GeneratorTest.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/java/org/savara/bpel/generator/GeneratorTest.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/java/org/savara/bpel/generator/GeneratorTest.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -38,19 +38,7 @@
     public static Test suite() {
         TestSuite suite = new TestSuite("Choreography->BPEL Generator Tests");
         
-        /*
-         * TWO ISSUES:
-         * 
-         * 1) Additional invoke being generated in first choice path, which
-         * appears to be related to the 'when' message signature - the problem
-         * being that the second instance of the invoke is created from the
-         * interaction inside the run sub-protocol.
-         * 
-         * 2) Additional 'myRole' on partnerlink - seems to be related to
-         * Broker rather tha Buyer which would have expected.
-         * 
         suite.addTest(new ChoreographyToBPELTester("ESBBroker", "Buyer"));
-        */
         
         // ISSUES:
         // Need to deal with case when top level protocol is not projected, but
@@ -58,8 +46,10 @@
         // if two separate nested protocols use the same role name? Possibly
         // this needs to be reported as an unhandled case for now.
         
-        suite.addTest(new ChoreographyToBPELTester("ESBBroker", "SupplierTxnProcessor"));
+        //suite.addTest(new ChoreographyToBPELTester("ESBBroker", "SupplierTxnProcessor"));
         //suite.addTest(new ChoreographyToBPELTester("ESBBroker", "CreditAgency"));
+        
+        
         suite.addTest(new ChoreographyToBPELTester("ESBBroker", "Broker"));
         
         /*

Modified: branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Broker.bpel
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Broker.bpel	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Broker.bpel	2011-01-04 11:55:42 UTC (rev 527)
@@ -15,13 +15,13 @@
         <variable name="getQuoteRequestVar" messageType="spr:getQuoteRequest"/>
         <variable name="getQuoteResponseVar" messageType="spr:getQuoteResponse"/>
         <variable name="makeEnquiryResponseVar" messageType="brk:makeEnquiryResponse"/>
-        <variable name="buyRequestVar" messageType="brk:buyRequest"/>
         <variable name="checkCreditRequestVar" messageType="cay:checkCreditRequest"/>
         <variable name="checkCreditResponseVar" messageType="cay:checkCreditResponse"/>
         <variable name="confirmRequestVar" messageType="spr:confirmRequest"/>
         <variable name="confirmResponseVar" messageType="spr:confirmResponse"/>
         <variable name="buyResponseVar" messageType="brk:buyResponse"/>
         <variable name="rejectedFaultVar" messageType="brk:rejectedFault"/>
+        <variable name="buyRequestVar" messageType="brk:buyRequest"/>
         <variable name="cancelRequestVar" messageType="brk:cancelRequest"/>
     </variables>
     <sequence>
@@ -40,21 +40,17 @@
             <onMessage partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="buy" variable="buyRequestVar">
                 <sequence>
                     <scope>
-                        <sequence>
-                            <scope>
-<faultHandlers>
-    <catch faultName="cay:invalidCredit" faultVariable="invalidCreditFaultVar" faultMessageType="cay:invalidCreditFault">
-        <sequence>
-            <reply partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="buy" variable="rejectedFaultVar" faultName="brk:rejected" name="Send_orderRejected"/>
-        </sequence>
-    </catch>
-</faultHandlers>
+                        <faultHandlers>
+                            <catch faultName="cay:invalidCredit" faultVariable="invalidCreditFaultVar" faultMessageType="cay:invalidCreditFault">
 <sequence>
-    <invoke partnerLink="BrokerToCreditAgency" portType="cay:CreditAgencyBehavior" operation="checkCredit" inputVariable="checkCreditRequestVar" outputVariable="checkCreditResponseVar" name="Send_CreditCheckRequest"/>
-    <invoke partnerLink="BrokerToSupplierTxnProcessor" portType="spr:SupplierBehavior" operation="confirm" inputVariable="confirmRequestVar" outputVariable="confirmResponseVar" name="Send_orderConfirmed"/>
-    <reply partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="buy" variable="buyResponseVar" name="Send_bookingReference"/>
+    <reply partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="buy" variable="rejectedFaultVar" faultName="brk:rejected" name="Send_orderRejected"/>
 </sequence>
-                            </scope>
+                            </catch>
+                        </faultHandlers>
+                        <sequence>
+                            <invoke partnerLink="BrokerToCreditAgency" portType="cay:CreditAgencyBehavior" operation="checkCredit" inputVariable="checkCreditRequestVar" outputVariable="checkCreditResponseVar" name="Send_CreditCheckRequest"/>
+                            <invoke partnerLink="BrokerToSupplierTxnProcessor" portType="spr:SupplierBehavior" operation="confirm" inputVariable="confirmRequestVar" outputVariable="confirmResponseVar" name="Send_orderConfirmed"/>
+                            <reply partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="buy" variable="buyResponseVar" name="Send_bookingReference"/>
                         </sequence>
                     </scope>
                 </sequence>

Modified: branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Buyer.bpel
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Buyer.bpel	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker at Buyer.bpel	2011-01-04 11:55:42 UTC (rev 527)
@@ -1,43 +1,39 @@
-<process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:brk="http://www.pi4soa.org/ESBBroker/Broker" xmlns:byr="http://www.pi4soa.org/ESBBroker/Buyer" xmlns:cay="http://www.pi4soa.org/ESBBroker/CreditAgency" xmlns:spr="http://www.pi4soa.org/ESBBroker/Supplier" xmlns:tns="http://www.pi4soa.org/ESBBroker" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://www.scribble.org/conversation" ns0:conversationType="overlord.cdl.samples.LoanBroker at Buyer" name="ESBBrokerProcess_Buyer" targetNamespace="http://www.pi4soa.org/ESBBroker/Buyer" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
-    <import importType="http://schemas.xmlsoap.org/wsdl/" location="ESBBrokerProcess_Broker.wsdl" namespace="http://www.pi4soa.org/ESBBroker/Broker"/>
-    <import importType="http://schemas.xmlsoap.org/wsdl/" location="ESBBrokerProcess_CreditAgency.wsdl" namespace="http://www.pi4soa.org/ESBBroker/CreditAgency"/>
-    <import importType="http://schemas.xmlsoap.org/wsdl/" location="ESBBrokerProcess_Supplier.wsdl" namespace="http://www.pi4soa.org/ESBBroker/Supplier"/>
-    <import importType="http://schemas.xmlsoap.org/wsdl/" location="ESBBrokerProcess_BuyerArtifacts.wsdl" namespace="http://www.pi4soa.org/ESBBroker/Buyer"/>
-    <partnerLinks>
-        <partnerLink myRole="BrokerBehavior" name="BuyerToBroker" partnerLinkType="byr:BuyerToBrokerLT" partnerRole="BrokerRequester"/>
-    </partnerLinks>
-    <variables>
-        <variable messageType="brk:makeEnquiryRequest" name="makeEnquiryRequestVar"/>
-        <variable messageType="brk:makeEnquiryResponse" name="makeEnquiryResponseVar"/>
-        <variable messageType="brk:buyRequest" name="buyRequestVar"/>
-        <variable messageType="brk:buyResponse" name="buyResponseVar"/>
-        <variable messageType="brk:cancelRequest" name="cancelRequestVar"/>
-    </variables>
-    <sequence>
-        <invoke inputVariable="makeEnquiryRequestVar" name="Send_enquiry" operation="makeEnquiry" partnerLink="BuyerToBroker" portType="brk:BrokerBehavior"/>
-        <receive name="Receive_quoteList" operation="makeEnquiry" partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" variable="makeEnquiryResponseVar"/>
-        <if>
-            <sequence>
-                <scope>
-                    <sequence>
-                        <scope>
-                            <faultHandlers>
-                                <catch faultMessageType="brk:rejectedFault" faultName="brk:rejected" faultVariable="rejectedFaultVar">
-                                    <sequence/>
-                                </catch>
-                            </faultHandlers>
-                            <sequence>
-                                <invoke inputVariable="buyRequestVar" name="Send_buy" operation="buy" outputVariable="buyResponseVar" partnerLink="BuyerToBroker" portType="brk:BrokerBehavior"/>
-                            </sequence>
-                        </scope>
-                    </sequence>
-                </scope>
-            </sequence>
-            <else>
-                <sequence>
-                    <invoke inputVariable="cancelRequestVar" name="Send_cancel" operation="cancel" partnerLink="BuyerToBroker" portType="brk:BrokerBehavior"/>
-                </sequence>
-            </else>
-        </if>
-    </sequence>
-</process>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<process xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:spr="http://www.pi4soa.org/ESBBroker/Supplier" xmlns:tns="http://www.pi4soa.org/ESBBroker" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cay="http://www.pi4soa.org/ESBBroker/CreditAgency" xmlns:byr="http://www.pi4soa.org/ESBBroker/Buyer" xmlns:brk="http://www.pi4soa.org/ESBBroker/Broker" name="ESBBrokerProcess_Buyer" targetNamespace="http://www.pi4soa.org/ESBBroker/Buyer">
+    <import namespace="http://www.pi4soa.org/ESBBroker/Broker" location="ESBBrokerProcess_Broker.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+    <import namespace="http://www.pi4soa.org/ESBBroker/CreditAgency" location="ESBBrokerProcess_CreditAgency.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+    <import namespace="http://www.pi4soa.org/ESBBroker/Supplier" location="ESBBrokerProcess_Supplier.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+    <import namespace="http://www.pi4soa.org/ESBBroker/Buyer" location="ESBBrokerProcess_BuyerArtifacts.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+    <partnerLinks>
+        <partnerLink name="BuyerToBroker" partnerLinkType="byr:BuyerToBrokerLT" partnerRole="BrokerRequester"/>
+    </partnerLinks>
+    <variables>
+        <variable name="makeEnquiryRequestVar" messageType="brk:makeEnquiryRequest"/>
+        <variable name="makeEnquiryResponseVar" messageType="brk:makeEnquiryResponse"/>
+        <variable name="buyRequestVar" messageType="byr:buyRequest"/>
+        <variable name="buyResponseVar" messageType="brk:buyResponse"/>
+        <variable name="cancelRequestVar" messageType="byr:cancelRequest"/>
+    </variables>
+    <sequence>
+        <invoke partnerLink="BuyerToBroker" portType="brk:BrokerBehavior" operation="makeEnquiry" inputVariable="makeEnquiryRequestVar" outputVariable="makeEnquiryResponseVar" name="Send_enquiry"/>
+        <if>
+            <sequence>
+                <scope>
+                    <faultHandlers>
+                        <catch faultName="brk:rejected" faultVariable="rejectedFaultVar" faultMessageType="brk:rejectedFault">
+                            <sequence/>
+                        </catch>
+                    </faultHandlers>
+                    <sequence>
+                        <invoke partnerLink="BuyerToBroker" portType="byr:BuyerBehavior" operation="buy" inputVariable="buyRequestVar" outputVariable="buyResponseVar" name="Send_buy"/>
+                    </sequence>
+                </scope>
+            </sequence>
+            <else>
+                <sequence>
+                    <invoke partnerLink="BuyerToBroker" portType="byr:BuyerBehavior" operation="cancel" inputVariable="cancelRequestVar" name="Send_cancel"/>
+                </sequence>
+            </else>
+        </if>
+    </sequence>
+</process>

Modified: branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ConverterContext.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ConverterContext.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ConverterContext.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -19,6 +19,7 @@
  */
 package org.savara.pi4soa.cdm.parser.rules;
 
+import org.pi4soa.cdl.Choreography;
 import org.pi4soa.cdl.ExchangeDetails;
 import org.scribble.protocol.model.*;
 
@@ -129,4 +130,16 @@
 	 */
 	public boolean shouldIgnore(ExchangeDetails ed);
 	
+	/**
+	 * This method determines whether the supplied choreography
+	 * is associated with exchange details to be ignored. If
+	 * so, then the choreography should be expanded, and the
+	 * relevant exchange details ignored.
+	 * 
+	 * @param choreo The choreography to check
+	 * @return Whether the choreography has an ignored exchange details,
+	 * 				and should therefore be expanded
+	 */
+	public boolean shouldExpandChoreography(Choreography choreo);
+	
 }

Modified: branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/DefaultConverterContext.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/DefaultConverterContext.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/DefaultConverterContext.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -21,6 +21,7 @@
 
 import java.util.logging.Logger;
 
+import org.pi4soa.cdl.Choreography;
 import org.pi4soa.cdl.ExchangeDetails;
 import org.scribble.protocol.model.*;
 
@@ -201,6 +202,29 @@
 		return(m_ignore.contains(ed));
 	}
 	
+	/**
+	 * This method determines whether the supplied choreography
+	 * is associated with exchange details to be ignored. If
+	 * so, then the choreography should be expanded, and the
+	 * relevant exchange details ignored.
+	 * 
+	 * @param choreo The choreography to check
+	 * @return Whether the choreography has an ignored exchange details,
+	 * 				and should therefore be expanded
+	 */
+	public boolean shouldExpandChoreography(Choreography choreo) {
+		boolean ret=false;
+		
+		for (ExchangeDetails ed : m_ignore) {
+			if (ed.getEnclosingChoreography() == choreo) {
+				ret = true;
+				break;
+			}
+		}
+		
+		return(ret);
+	}
+	
 	private static Logger logger = Logger.getLogger(DefaultConverterContext.class.getName());
 
 	//private ModelReference m_source=null;

Modified: branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/PerformConverterRuleImpl.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/PerformConverterRuleImpl.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/PerformConverterRuleImpl.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -53,72 +53,65 @@
 	 */
 	public ModelObject convert(ConverterContext context,
 			Class<?> scribbleType, CDLType cdlType) {
-		org.scribble.protocol.model.Run ret=new org.scribble.protocol.model.Run();
 		org.pi4soa.cdl.Perform cdl=(org.pi4soa.cdl.Perform)cdlType;
+		ModelObject ret=null;
 		
-		if (cdl.getWaitForCompletion() != Boolean.TRUE) {
-			// TODO: Need to consider how to deal with async perform
-			// possibly when split is supported
-		}
+		// Check if context contains an interaction from the performed choreography
+		// that is to be ignored - this would indicate that the perform is contained
+		// within a choice
+		if (context.shouldExpandChoreography(cdl.getChoreography())) {
+			ret = new Block();
+			
+			context.pushScope();
+			
+			// Define roles
+			ProtocolConverterRuleImpl.defineRoles(context, cdl.getChoreography(), (Block)ret);
+			
+			ProtocolConverterRuleImpl.convertActivities(context, cdl.getChoreography().getActivities(), (Block)ret);
 		
-		ret.getProperties().put("CDLType",
-				CDLTypeUtil.getURIFragment(cdl));
-
-		ProtocolReference ref=new ProtocolReference();
-		ref.setName(cdl.getChoreography().getName());
-		ref.setInner(true);
-		
-		ret.setProtocolReference(ref);
-		
-		// Find conversation related to reference, and use
-		// as inner definition initially - to help with
-		// subsequent processing (e.g. locating initiator
-		// roles). The inner definition will be cleared when
-		// the model is fully converted.
-		
-		/* TODO: Is this required for Scribble v2
-		Protocol conv=context.getProtocol(ref);
-		
-		if (conv != null) {
-			ret.setInlineDefinition(conv);
-			context.getComposeActivities().add(ret);
-		
-			// Bind roles
-			java.util.List<Role> roles=conv.getRoles();
+			context.popScope();
 			
-			for (int i=0; i < roles.size(); i++) {
-				Role role=roles.get(i);
-				
-				Object decl=context.getState(role.getName());
-				
-				if (decl instanceof Role) {
-					ret.getBindings().add(new DeclarationBinding(((Role)decl).getName(), role.getName()));
-				}
+		} else {
+			org.scribble.protocol.model.Run run=new org.scribble.protocol.model.Run();
+			
+			if (cdl.getWaitForCompletion() != Boolean.TRUE) {
+				// TODO: Need to consider how to deal with async perform
+				// possibly when split is supported
 			}
-		}
-		*/
-		
-		// Convert binding parameters
-		java.util.List<BindDetails> bds=cdl.getBindDetails();
-		
-		for (int i=0; i < bds.size(); i++) {
 			
-			// Only convert if a variable, not a channel
-			// TODO: Need to also convert explicit channels
-			if (bds.get(i).getThisVariable() instanceof org.pi4soa.cdl.Variable) {
-				Parameter db=new Parameter();
+			run.getProperties().put("CDLType",
+					CDLTypeUtil.getURIFragment(cdl));
+	
+			ProtocolReference ref=new ProtocolReference();
+			ref.setName(cdl.getChoreography().getName());
+			ref.setInner(true);
+			
+			run.setProtocolReference(ref);
+			
+			// Convert binding parameters
+			java.util.List<BindDetails> bds=cdl.getBindDetails();
+			
+			for (int i=0; i < bds.size(); i++) {
 				
-				Object state=context.getState(bds.get(i).getThisVariable().getName());
-				
-				if (state instanceof Role) {
-					db.setName(((Role)state).getName());
-					db.setBoundName(bds.get(i).getFreeVariable().getName());
-				
-					ret.getParameters().add(db);
-				} else {
-					logger.finer("State not found for '"+bds.get(i).getThisVariable().getName()+"'");
+				// Only convert if a variable, not a channel
+				// TODO: Need to also convert explicit channels
+				if (bds.get(i).getThisVariable() instanceof org.pi4soa.cdl.Variable) {
+					Parameter db=new Parameter();
+					
+					Object state=context.getState(bds.get(i).getThisVariable().getName());
+					
+					if (state instanceof Role) {
+						db.setName(((Role)state).getName());
+						db.setBoundName(bds.get(i).getFreeVariable().getName());
+					
+						run.getParameters().add(db);
+					} else {
+						logger.finer("State not found for '"+bds.get(i).getThisVariable().getName()+"'");
+					}
 				}
 			}
+			
+			ret = run;
 		}
 				
 		return(ret);

Modified: branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ProtocolConverterRuleImpl.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ProtocolConverterRuleImpl.java	2011-01-03 00:14:10 UTC (rev 526)
+++ branches/experimental/2.0.x/bundles/org.savara.pi4soa.cdm/src/main/java/org/savara/pi4soa/cdm/parser/rules/ProtocolConverterRuleImpl.java	2011-01-04 11:55:42 UTC (rev 527)
@@ -80,7 +80,7 @@
 		ret.setName(choreo.getName());
 		
 		// Define roles
-		defineRoles(context, choreo, ret);
+		defineRoles(context, choreo, ret.getBlock());
 		
 		// Check if root, then need to project other sibling choreos
 		if (choreo.getRoot() == Boolean.TRUE) {
@@ -249,8 +249,8 @@
 	}
 
 	
-	protected void defineRoles(ConverterContext context,
-			final Choreography choreo, Protocol conv) {
+	protected static void defineRoles(ConverterContext context,
+			final Choreography choreo, Block block) {
 	
 		org.pi4soa.cdl.interfaces.InterfaceDeriver intfDeriver=
 					org.pi4soa.cdl.interfaces.InterfaceFactory.getInterfaceDeriver();
@@ -310,7 +310,7 @@
 			
 			if (roleList == null) {
 				roleList = new RoleList();
-				conv.getBlock().getContents().add(roleList);
+				block.getContents().add(roleList);
 			}
 			
 			roleList.getRoles().add(role);
@@ -389,7 +389,7 @@
 				
 				//roleList.setOpen(choreo.getRoot() != Boolean.TRUE);
 				
-				conv.getBlock().getContents().add(roleList);
+				block.getContents().add(roleList);
 			}
 			
 			roleList.getRoles().add(role);
@@ -439,7 +439,7 @@
 		}
 	}
 	
-	protected void setupInterfaces(org.pi4soa.cdl.RoleType roleType, Contract contract,
+	protected static void setupInterfaces(org.pi4soa.cdl.RoleType roleType, Contract contract,
 					org.pi4soa.cdl.interfaces.InterfaceDeriver intfDeriver) {
 		
 		org.pi4soa.cdl.interfaces.RoleTypeDefinition rtd=
@@ -510,7 +510,7 @@
 	}
 	*/
 	
-	protected void convertActivities(ConverterContext context,
+	protected static void convertActivities(ConverterContext context,
 				java.util.List<org.pi4soa.cdl.Activity> acts, Block block) {
 		
 		java.util.Iterator<org.pi4soa.cdl.Activity> actiter=



More information about the savara-commits mailing list