Author: objectiser
Date: 2009-04-20 18:08:19 -0400 (Mon, 20 Apr 2009)
New Revision: 589
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Buyer.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Seller.bpel
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/testmodels/ReqRespFault.cdm
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/META-INF/MANIFEST.MF
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/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/GeneratorTest.java
Log:
Generate fault name in reply - and support plugin tests based on a cdm file.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/META-INF/MANIFEST.MF
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/META-INF/MANIFEST.MF 2009-04-14
10:33:27 UTC (rev 588)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/META-INF/MANIFEST.MF 2009-04-20
22:08:19 UTC (rev 589)
@@ -14,7 +14,8 @@
org.eclipse.jdt.core,
org.junit,
org.scribble.conversation.parser,
- org.apache.log4j;bundle-version="1.2.13"
+ org.apache.log4j;bundle-version="1.2.13",
+ org.pi4soa.scribble;resolution:=optional
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor:
www.jboss.org
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-14
10:33:27 UTC (rev 588)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/java/org/jboss/tools/overlord/cdl/bpel/model/change/ConversationInteractionModelChangeRule.java 2009-04-20
22:08:19 UTC (rev 589)
@@ -131,6 +131,11 @@
pl.setPartnerLinkType(interaction.getToRole().getName()+"To"+role.getName()+"Service"+"LT");
portType = role.getName()+"PT";
+
+ if
(interaction.getMessageSignature().getAnnotations().keySet().contains("faultName"))
{
+ ((Reply)act).setFaultName((String)interaction.
+ getMessageSignature().getAnnotations().get("faultName"));
+ }
}
} else {
act = new Receive(bpelModel);
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/GeneratorTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/GeneratorTest.java 2009-04-14
10:33:27 UTC (rev 588)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/GeneratorTest.java 2009-04-20
22:08:19 UTC (rev 589)
@@ -25,6 +25,7 @@
import org.jboss.tools.overlord.cdl.bpel.model.DefaultBPELLanguageModel;
import org.jboss.tools.overlord.cdl.bpel.util.XMLUtils;
import org.scribble.conversation.model.ConversationNotation;
+import org.pi4soa.scribble.cdm.model.CDMNotation;
import org.scribble.extensions.RegistryFactory;
import org.scribble.model.ModelReference;
import org.scribble.model.change.ModelGenerator;
@@ -35,6 +36,8 @@
TestSuite suite = new TestSuite("Conversation->BPEL Generator
Tests");
suite.addTest(new ConversationToBPELTest("ESBBrokerProcess@Broker"));
suite.addTest(new
ConversationToBPELTest("PurchaseGoodsProcess@Store"));
+ suite.addTest(new ChoreographyToBPELTest("ReqRespFault",
"Buyer"));
+ suite.addTest(new ChoreographyToBPELTest("ReqRespFault",
"Seller"));
return suite;
}
@@ -165,4 +168,143 @@
private String m_name=null;
}
+ /**
+ * The test case for running the choreography to BPEL test.
+ */
+ protected static class ChoreographyToBPELTest extends TestCase {
+
+ /**
+ * This constructor is initialized with the test
+ * name.
+ *
+ * @param name The test name
+ * @param role The role
+ */
+ public ChoreographyToBPELTest(String name, String role) {
+ super(name+"@"+role);
+ m_name = name;
+ m_role = role;
+ }
+
+ /**
+ * This method runs the test.
+ *
+ * @param result The test result
+ */
+ public void run(TestResult result) {
+ result.startTest(this);
+
+ String filename="testmodels/"+m_name+".cdm";
+
+ java.io.InputStream is=
+ GeneratorTest.class.getResourceAsStream(filename);
+
+ if (is == null) {
+ result.addError(this,
+ new Throwable("Unable to locate resource: "+filename));
+ } else {
+ org.scribble.parser.Parser p=new org.pi4soa.scribble.cdm.parser.CDMParser();
+ org.scribble.model.ModelReference ref=
+ new org.scribble.model.ModelReference(CDMNotation.NOTATION_CODE);
+ org.scribble.model.admin.ModelListener l=
+ new org.scribble.model.admin.DefaultModelListener();
+
+ org.scribble.model.Model model=p.parse(ref, is, l);
+
+ if (model == null) {
+ result.addError(this, new Throwable("Model is null"));
+ } else {
+ org.scribble.projector.Projector projector=
+ new org.scribble.projector.DefaultProjector();
+
+ org.scribble.model.Role role=
+ new org.scribble.model.Role(m_role);
+
+ org.scribble.model.Model projected=
+ projector.project(ref, model, role, l);
+
+ ModelGenerator generator=(ModelGenerator)
+ RegistryFactory.getRegistry().getExtension(
+ ModelGenerator.class, null);
+
+ if (generator != null) {
+ ModelReference targetRef=
+ new ModelReference(BPELNotation.NOTATION_CODE);
+
+ DefaultBPELLanguageModel target=
+ new DefaultBPELLanguageModel(targetRef);
+
+ generator.generate(targetRef,
+ model.getModelName().getLocatedRole(),
+ target, projected);
+
+ if (target.getBPELProcess().getDOMElement() != null) {
+ try {
+ String text=XMLUtils.toText(target.getBPELProcess().getDOMElement());
+ checkResults(result, text);
+ } catch(Exception e) {
+ result.addError(this, e);
+ }
+ } else {
+ result.addError(this,
+ new Throwable("No BPEL generated"));
+ }
+
+ } else {
+ result.addError(this,
+ new Throwable("Unable to find Model Generator"));
+ }
+ }
+ }
+
+ result.endTest(this);
+ }
+
+ /**
+ * This method checks the generated BPEL against a
+ * previously stored correct version.
+ *
+ * @param result The test result
+ * @param bpel The BPEL
+ */
+ protected void checkResults(TestResult result, String bpel) {
+
+ String filename="results/"+m_name+"(a)"+m_role+".bpel";
+
+ java.io.InputStream is=
+ GeneratorTest.class.getResourceAsStream(filename);
+
+ if (is != null) {
+
+ try {
+ byte[] b=new byte[is.available()];
+
+ is.read(b);
+
+ is.close();
+
+ String orig=new String(b);
+
+ if (orig.equals(bpel) == false) {
+ result.addError(this,
+ new Throwable("Generated BPEL does not match stored version"));
+
+ System.out.println("COMPARED GENERATED:");
+ System.out.println("["+bpel+"]");
+ System.out.println("WITH ORIGINAL:");
+ System.out.println("["+orig+"]");
+ }
+ } catch(Exception e) {
+ result.addError(this, e);
+ }
+ } else {
+ result.addError(this,
+ new Throwable("Resulting BPEL '"+filename+
+ "' not found for comparison"));
+ }
+ }
+
+ private String m_name=null;
+ private String m_role=null;
+ }
}
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Buyer.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Buyer.bpel
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Buyer.bpel 2009-04-20
22:08:19 UTC (rev 589)
@@ -0,0 +1,18 @@
+<process
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"...
+ <partnerLinks>
+ <partnerLink myRole="BuyerRequester" name="BuyerToSeller"
partnerLinkType="BuyerToSellerLT" partnerRole="SellerRequester"/>
+ </partnerLinks>
+ <sequence>
+ <invoke operation="checkCredit"
partnerLink="BuyerToSeller" portType="SellerPT"/>
+ <if>
+ <sequence>
+ <receive operation="checkCredit"
partnerLink="BuyerToSeller" portType="BuyerSellerCallbackPT"/>
+ </sequence>
+ <else>
+ <sequence>
+ <receive operation="checkCredit"
partnerLink="BuyerToSeller" portType="BuyerSellerCallbackPT"/>
+ </sequence>
+ </else>
+ </if>
+ </sequence>
+</process>
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Seller.bpel
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Seller.bpel
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/results/ReqRespFault(a)Seller.bpel 2009-04-20
22:08:19 UTC (rev 589)
@@ -0,0 +1,18 @@
+<process
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"...
+ <partnerLinks>
+ <partnerLink myRole="SellerService" name="BuyerToSeller"
partnerLinkType="BuyerToSellerServiceLT"/>
+ </partnerLinks>
+ <sequence>
+ <receive operation="checkCredit"
partnerLink="BuyerToSeller" portType="SellerPT"/>
+ <if>
+ <sequence>
+ <reply operation="checkCredit"
partnerLink="BuyerToSeller" portType="SellerPT"/>
+ </sequence>
+ <else>
+ <sequence>
+ <reply faultName="insufficientCredit"
operation="checkCredit" partnerLink="BuyerToSeller"
portType="SellerPT"/>
+ </sequence>
+ </else>
+ </if>
+ </sequence>
+</process>
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/testmodels/ReqRespFault.cdm
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/testmodels/ReqRespFault.cdm
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.bpel/src/plugintest/org/jboss/tools/overlord/cdl/bpel/generator/testmodels/ReqRespFault.cdm 2009-04-20
22:08:19 UTC (rev 589)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="Cp1252"?>
+<org.pi4soa.cdl:Package xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:org.pi4soa.cdl="http:///org/pi4soa/cdl.ecore" description="The
choreography description for ReqRespFault" name="ReqRespFault"
author="gary" version="0.3"
targetNamespace="http://www.pi4soa.org/ReqRespFault">
+ <typeDefinitions>
+ <nameSpaces description="Target Namespace for ReqRespFault"
prefix="tns"
uRI="http://www.pi4soa.org/ReqRespFault"/>
+ <nameSpaces description="XML Schema Namespace" prefix="xsd"
uRI="http://www.w3.org/2001/XMLSchema"/>
+ <informationTypes description="This is the information type
CreditInformation" name="CreditInformation"
elementName="CreditCheckRequest"/>
+ <informationTypes description="This is the information type
CreditInvalid" name="CreditInvalid"
elementName="CreditCheckInvalid"/>
+ <informationTypes description="This is the information type CreditValid"
name="CreditValid" elementName="CreditCheckOk"/>
+ <informationTypes description="This is the information type URIType"
name="URIType"/>
+ <tokens description="This is the token URI" name="URI"
informationType="//@typeDefinitions/(a)informationTypes.3"/>
+ <roleTypes description="This is the role type Buyer"
name="Buyer">
+ <behaviors description="This is the behavior BuyerBehavior"
name="BuyerBehavior"/>
+ </roleTypes>
+ <roleTypes description="This is the role type Seller"
name="Seller">
+ <behaviors description="This is the behavior SellerBehavior"
name="SellerBehavior"/>
+ </roleTypes>
+ <relationshipTypes description="Relationship between Buyer and Seller"
name="BuyerToSellerRel"
firstRoleType="//@typeDefinitions/(a)roleTypes.0"
secondRoleType="//@typeDefinitions/(a)roleTypes.1"/>
+ <participantTypes description="This is the participant type Buyer"
name="Buyer" roleTypes="//@typeDefinitions/(a)roleTypes.0">
+ <semanticAnnotations
annotation="overlord.cdl.samples.LoanBroker@Buyer"
name="conversationType"/>
+ </participantTypes>
+ <participantTypes description="This is the participant type Seller"
name="Seller" roleTypes="//@typeDefinitions/(a)roleTypes.1">
+ <semanticAnnotations
annotation="overlord.cdl.samples.LoanBroker@Broker"
name="conversationType"/>
+ </participantTypes>
+ <channelTypes description="This is the channel type SellerChannelType"
name="SellerChannelType" referenceToken="//@typeDefinitions/(a)tokens.0"
roleType="//@typeDefinitions/(a)roleTypes.1"/>
+ </typeDefinitions>
+ <choreographies description="Choreography flow for the ReqRespFault
process" name="ReqRespFaultProcess" root="true">
+ <variableDefinitions description="Channel to facilitate interaction to
Broker" name="BrokerChannel"
type="//@typeDefinitions/(a)channelTypes.0"
roleTypes="//@typeDefinitions/(a)roleTypes.1
//@typeDefinitions/(a)roleTypes.0"/>
+ <activities xsi:type="org.pi4soa.cdl:Interaction"
name="CreditCheck" operation="checkCredit"
channelVariable="//@choreographies.0/(a)variableDefinitions.0"
relationship="//@typeDefinitions/(a)relationshipTypes.0">
+ <exchangeDetails description="This is the exchange details for the request
exchange associated with interaction CreditCheck"
name="CreditCheckRequestExchange"
type="//@typeDefinitions/(a)informationTypes.0"/>
+ </activities>
+ <activities xsi:type="org.pi4soa.cdl:Choice">
+ <activities xsi:type="org.pi4soa.cdl:Sequence">
+ <activities xsi:type="org.pi4soa.cdl:Interaction"
name="CreditCheckValid" operation="checkCredit"
channelVariable="//@choreographies.0/(a)variableDefinitions.0"
relationship="//@typeDefinitions/(a)relationshipTypes.0">
+ <exchangeDetails description="This is the exchange details for the
respond exchange associated with interaction CreditCheckValid"
name="CreditCheckValidRespondExchange"
type="//@typeDefinitions/(a)informationTypes.2" action="Respond"/>
+ </activities>
+ </activities>
+ <activities xsi:type="org.pi4soa.cdl:Sequence">
+ <activities xsi:type="org.pi4soa.cdl:Interaction"
name="CreditCheckInvalid" operation="checkCredit"
channelVariable="//@choreographies.0/(a)variableDefinitions.0"
relationship="//@typeDefinitions/(a)relationshipTypes.0">
+ <exchangeDetails description="This is the exchange details for the
respond exchange associated with interaction CreditCheckInvalid"
name="CreditCheckInvalidRespondExchange"
type="//@typeDefinitions/(a)informationTypes.1" action="Respond"
faultName="insufficientCredit"/>
+ </activities>
+ </activities>
+ </activities>
+ </choreographies>
+</org.pi4soa.cdl:Package>