[savara-commits] savara SVN: r521 - in branches/experimental/2.0.x/bundles: org.savara.bpel/src/main/java/org/savara/bpel/util and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Jan 1 15:06:27 EST 2011
Author: objectiser
Date: 2011-01-01 15:06:27 -0500 (Sat, 01 Jan 2011)
New Revision: 521
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/PurchaseGoods at CreditAgency.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/util/InteractionUtil.java
Log:
Fix reply as part of choice.
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-01 18:12:26 UTC (rev 520)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/model/change/ChoiceModelChangeRule.java 2011-01-01 20:06:27 UTC (rev 521)
@@ -31,6 +31,7 @@
import org.savara.bpel.model.TPartnerLink;
import org.savara.bpel.model.TPick;
import org.savara.bpel.model.TProcess;
+import org.savara.bpel.model.TReply;
import org.savara.bpel.model.TScope;
import org.savara.bpel.model.TSequence;
import org.savara.bpel.model.TVariable;
@@ -106,6 +107,20 @@
(org.scribble.protocol.model.Choice)mobj;
java.util.List<When> paths=elem.getWhens();
+ Role role=null;
+ String roleNamespace=null;
+
+ if (elem.enclosingProtocol() != null) {
+ role = elem.enclosingProtocol().getRole();
+ }
+
+ Contract contract=ModelChangeUtils.getContract(context,
+ elem.enclosingProtocol().getRole().getName());
+
+ if (contract != null) {
+ roleNamespace = contract.getNamespace();
+ }
+
// Check if the 'If' construct is to handle responses
// to a preceding request being sent
if (InteractionPatterns.isResponseAndFaultHandler(elem)) {
@@ -135,11 +150,11 @@
InteractionPatterns.isFaultResponse(path)) {
String faultName=InteractionPatterns.getFaultName(path);
- Contract contract = ModelChangeUtils.getContract(context,
+ Contract fromContract = ModelChangeUtils.getContract(context,
elem.getFromRole().getName());
// Define fault message type
- QName qname= WSDLGeneratorUtil.getFaultMessageType(contract.getNamespace(),
+ QName qname= WSDLGeneratorUtil.getFaultMessageType(fromContract.getNamespace(),
faultName);
String faultVarName=qname.getLocalPart()+"Var";
@@ -177,18 +192,18 @@
if (acts.size() > 0 && //act instanceof Interaction &&
acts.get(acts.size()-1) instanceof TInvoke) {
- Contract contract = ModelChangeUtils.getContract(context,
+ Contract fromContract = ModelChangeUtils.getContract(context,
elem.getFromRole().getName());
QName qname=null;
if (InteractionUtil.isRequest(path)) {
- qname = WSDLGeneratorUtil.getRequestMessageType(contract.getNamespace(),
+ qname = WSDLGeneratorUtil.getRequestMessageType(fromContract.getNamespace(),
path.getMessageSignature().getOperation());
} else if (InteractionPatterns.isFaultResponse(path)) {
- qname = WSDLGeneratorUtil.getFaultMessageType(contract.getNamespace(),
+ qname = WSDLGeneratorUtil.getFaultMessageType(fromContract.getNamespace(),
InteractionPatterns.getFaultName(path));
} else {
- qname = WSDLGeneratorUtil.getResponseMessageType(contract.getNamespace(),
+ qname = WSDLGeneratorUtil.getResponseMessageType(fromContract.getNamespace(),
path.getMessageSignature().getOperation());
}
@@ -221,24 +236,10 @@
} else if (InteractionPatterns.isSwitch(elem)) {
TPick act=new TPick();
- Contract contract=ModelChangeUtils.getContract(context,
- elem.enclosingProtocol().getRole().getName());
-
if (context.getParent() instanceof TSequence) {
((TSequence)context.getParent()).getActivity().add(act);
}
- Role role=null;
- String roleNamespace=null;
-
- if (elem.enclosingProtocol() != null) {
- role = elem.enclosingProtocol().getRole();
- }
-
- if (contract != null) {
- roleNamespace = contract.getNamespace();
- }
-
for (int i=0; i < paths.size(); i++) {
When path=paths.get(i);
@@ -319,9 +320,9 @@
//portType = role.getName()+
// recv.getFromRole().getName()+"CallbackPT";
- contract = ModelChangeUtils.getContract(context, elem.getFromRole().getName());
- if (contract != null && contract.getInterfaces().size() > 0) {
- Interface intf = contract.getInterfaces().iterator().next();
+ Contract fromContract = ModelChangeUtils.getContract(context, elem.getFromRole().getName());
+ if (fromContract != null && fromContract.getInterfaces().size() > 0) {
+ Interface intf = fromContract.getInterfaces().iterator().next();
portType = intf.getName();
namespace = intf.getNamespace();
@@ -405,6 +406,92 @@
TSequence seq=new TSequence();
+ // Handle when message signature
+ if (InteractionUtil.isResponse(path)) {
+ QName qname=null;
+ if (InteractionUtil.isRequest(path)) {
+ qname = WSDLGeneratorUtil.getRequestMessageType(contract.getNamespace(),
+ path.getMessageSignature().getOperation());
+ } else if (InteractionPatterns.isFaultResponse(path)) {
+ qname = WSDLGeneratorUtil.getFaultMessageType(contract.getNamespace(),
+ InteractionPatterns.getFaultName(path));
+ } else {
+ qname = WSDLGeneratorUtil.getResponseMessageType(contract.getNamespace(),
+ path.getMessageSignature().getOperation());
+ }
+
+ String varName = qname.getLocalPart()+"Var";
+
+ TVariable var=VariableUtil.getVariable(bpelModel, varName);
+
+ if (var == null) {
+ var = new TVariable();
+ var.setName(varName);
+
+ var.setMessageType(qname);
+
+ bpelModel.getVariables().getVariable().add(var);
+ }
+
+ TReply reply = new TReply();
+ seq.getActivity().add(reply);
+
+ // TODO: What about if multiple 'to' roles
+ TPartnerLink pl=new TPartnerLink();
+
+ pl.setMyRole(role.getName()+"Service");
+ pl.setName(elem.getToRole().getName()+"To"+role.getName());
+
+ String plt=elem.getToRole().getName()+"To"+role.getName()+"Service"+"LT";
+
+ pl.setPartnerLinkType(new QName(roleNamespace, plt));
+
+ //portType = role.getName()+"PT";
+
+ if (InteractionPatterns.isFaultResponse(path)) {
+ String faultName=InteractionPatterns.getFaultName(path);
+
+ // TODO: Not sure what to do about namespace here?
+ reply.setFaultName(new QName(contract.getNamespace(), faultName));
+ }
+
+ if (varName != null) {
+ reply.setVariable(varName);
+ }
+
+ // Create partner link
+ TPartnerLink other=
+ PartnerLinkUtil.getPartnerLink(bpelModel, pl.getName());
+ if (other == null) {
+ bpelModel.getPartnerLinks().getPartnerLink().add(pl);
+ } else {
+ if (other.getPartnerRole() == null &&
+ pl.getPartnerRole() != null) {
+ other.setPartnerRole(pl.getPartnerRole());
+ }
+ if (other.getMyRole() == null &&
+ pl.getMyRole() != null) {
+ other.setMyRole(pl.getMyRole());
+ }
+ }
+
+ String portType=null;
+
+ if (contract.getInterfaces().size() > 0) {
+ portType = contract.getInterfaces().iterator().next().getName();
+ }
+
+ reply.setPartnerLink(pl.getName());
+ reply.setPortType(new QName(contract.getNamespace(),portType));
+ if (path.getMessageSignature() != null) {
+ reply.setOperation(path.getMessageSignature().getOperation());
+ }
+
+ reply.setName(InteractionUtil.getName(path));
+ } else {
+ // TODO: HANDLE REQUEST - not sure if required, need an example
+ }
+
// Process the activities within the conversation
java.util.List<Activity> acts=path.getBlock().getContents();
Modified: branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/InteractionUtil.java
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/InteractionUtil.java 2011-01-01 18:12:26 UTC (rev 520)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel/src/main/java/org/savara/bpel/util/InteractionUtil.java 2011-01-01 20:06:27 UTC (rev 521)
@@ -68,6 +68,28 @@
}
/**
+ * This method returns the name associated with the interaction.
+ *
+ * @param when The when
+ * @return The name
+ */
+ public static String getName(When when) {
+ String ret=null;
+
+ if (isSend(when)) {
+ ret = "Send";
+ } else {
+ ret = "Receive";
+ }
+
+ for (TypeReference ref : when.getMessageSignature().getTypeReferences()) {
+ ret += "_"+ref.getName();
+ }
+
+ return(ret);
+ }
+
+ /**
* This method determines whether the supplied interaction
* is a send.
*
@@ -96,6 +118,33 @@
/**
* This method determines whether the supplied interaction
+ * is a send.
+ *
+ * @param interaction The interaction
+ * @return Whether the interaction is a send
+ */
+ public static boolean isSend(When when) {
+ boolean ret=false;
+ Role role=null;
+
+ if (((Choice)when.getParent()).enclosingProtocol() != null) {
+ role = ((Choice)when.getParent()).enclosingProtocol().getRole();
+ }
+
+ if (role != null && ((((Choice)when.getParent()).getFromRole() != null &&
+ ((Choice)when.getParent()).getFromRole().equals(
+ role)) ||
+ (((Choice)when.getParent()).getToRole() != null &&
+ ((Choice)when.getParent()).getToRole().equals(
+ role) == false))) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the supplied interaction
* is a request.
*
* @param interaction The interaction
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-01 18:12:26 UTC (rev 520)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/java/org/savara/bpel/generator/GeneratorTest.java 2011-01-01 20:06:27 UTC (rev 521)
@@ -47,11 +47,13 @@
suite.addTest(new ChoreographyToBPELTester("ESBBroker",
"SupplierQuoteEngine"));
suite.addTest(new ChoreographyToBPELTester("PurchaseGoods", "Buyer"));
+ */
suite.addTest(new ChoreographyToBPELTester("PurchaseGoods", "CreditAgency"));
- */
suite.addTest(new ChoreographyToBPELTester("PurchaseGoods", "Store"));
/*
+
+
suite.addTest(new ChoreographyToBPELTester("ReqRespFault", "Buyer"));
suite.addTest(new ChoreographyToBPELTester("ReqRespFault", "Seller"));
*/
Modified: branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/PurchaseGoods at CreditAgency.bpel
===================================================================
--- branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/PurchaseGoods at CreditAgency.bpel 2011-01-01 18:12:26 UTC (rev 520)
+++ branches/experimental/2.0.x/bundles/org.savara.bpel.tests/src/test/resources/generator/results/PurchaseGoods at CreditAgency.bpel 2011-01-01 20:06:27 UTC (rev 521)
@@ -1,26 +1,27 @@
-<process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:pur="java:org.jboss.savara.examples.purchasing" xmlns:sto="http://www.jboss.org/examples/store" xmlns:tns="http://www.jboss.org/savara/examples" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://www.scribble.org/conversation" ns0:conversationType="savara.samples.Common at CreditAgency" name="PurchaseGoodsProcess_CreditAgency" targetNamespace="java:org.jboss.savara.examples.purchasing" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
- <import importType="http://schemas.xmlsoap.org/wsdl/" location="PurchaseGoodsProcess_CreditAgency.wsdl" namespace="java:org.jboss.savara.examples.purchasing"/>
- <import importType="http://schemas.xmlsoap.org/wsdl/" location="PurchaseGoodsProcess_Store.wsdl" namespace="http://www.jboss.org/examples/store"/>
- <import importType="http://schemas.xmlsoap.org/wsdl/" location="PurchaseGoodsProcess_CreditAgencyArtifacts.wsdl" namespace="java:org.jboss.savara.examples.purchasing"/>
- <partnerLinks>
- <partnerLink myRole="CreditAgencyInterface" name="StoreToCreditAgency" partnerLinkType="pur:StoreToCreditAgencyServiceLT"/>
- </partnerLinks>
- <variables>
- <variable messageType="pur:checkCreditRequest" name="checkCreditRequestVar"/>
- <variable messageType="pur:checkCreditResponse" name="checkCreditResponseVar"/>
- <variable messageType="pur:CreditCheckFailedFault" name="CreditCheckFailedFaultVar"/>
- </variables>
- <sequence>
- <receive createInstance="yes" name="Receive_CreditCheckRequest" operation="checkCredit" partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" variable="checkCreditRequestVar"/>
- <if>
- <sequence>
- <reply name="Send_CreditCheckOk" operation="checkCredit" partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" variable="checkCreditResponseVar"/>
- </sequence>
- <else>
- <sequence>
- <reply faultName="pur:CreditCheckFailed" name="Send_CreditCheckInvalid" operation="checkCredit" partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" variable="CreditCheckFailedFaultVar"/>
- </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:tns="http://www.jboss.org/savara/examples" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sto="http://www.jboss.org/examples/store" xmlns:pur="java:org.jboss.savara.examples.purchasing" name="PurchaseGoodsProcess_CreditAgency" targetNamespace="java:org.jboss.savara.examples.purchasing">
+ <import namespace="java:org.jboss.savara.examples.purchasing" location="PurchaseGoodsProcess_CreditAgency.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <import namespace="http://www.jboss.org/examples/store" location="PurchaseGoodsProcess_Store.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <import namespace="java:org.jboss.savara.examples.purchasing" location="PurchaseGoodsProcess_CreditAgencyArtifacts.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <partnerLinks>
+ <partnerLink name="StoreToCreditAgency" partnerLinkType="pur:StoreToCreditAgencyServiceLT" myRole="CreditAgencyInterface"/>
+ </partnerLinks>
+ <variables>
+ <variable name="checkCreditRequestVar" messageType="pur:checkCreditRequest"/>
+ <variable name="checkCreditResponseVar" messageType="pur:checkCreditResponse"/>
+ <variable name="CreditCheckFailedFaultVar" messageType="pur:CreditCheckFailedFault"/>
+ </variables>
+ <sequence>
+ <receive partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" operation="checkCredit" variable="checkCreditRequestVar" createInstance="yes" name="Receive_CreditCheckRequest"/>
+ <if>
+ <sequence>
+ <reply partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" operation="checkCredit" variable="checkCreditResponseVar" name="Send_CreditCheckOk"/>
+ </sequence>
+ <else>
+ <sequence>
+ <reply partnerLink="StoreToCreditAgency" portType="pur:CreditAgencyInterface" operation="checkCredit" variable="CreditCheckFailedFaultVar" faultName="pur:CreditCheckFailed" name="Send_CreditCheckInvalid"/>
+ </sequence>
+ </else>
+ </if>
+ </sequence>
+</process>
More information about the savara-commits
mailing list