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(a)Broker.bpel
branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker(a)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(a)Broker.bpel
===================================================================
---
branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker(a)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(a)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(a)Buyer.bpel
===================================================================
---
branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/ESBBroker(a)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(a)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@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=