001: /*
002: * $Id: BPELProcessFactoryImplTest.java,v 1.15 2004/12/09 17:41:45 kowap Exp $
003: *
004: * Copyright (c) 2004 Patric Fornasier, Pawel Kowalski
005: * Berne University of Applied Sciences
006: * School of Engineering and Information Technology
007: * All rights reserved.
008: */
009: package bexee.model;
010:
011: import java.io.*;
012: import java.net.URL;
013: import java.util.*;
014:
015: import javax.xml.namespace.QName;
016:
017: import bexee.BexeeTestCase;
018: import bexee.model.activity.*;
019: import bexee.model.activity.impl.*;
020: import bexee.model.elements.*;
021: import bexee.model.process.*;
022: import bexee.model.process.Process;
023:
024: /**
025: * @version $Revision: 1.15 $, $Date: 2004/12/09 17:41:45 $
026: * @author Pawel Kowalski
027: */
028: public class BPELProcessFactoryImplTest extends BexeeTestCase {
029:
030: private BPELProcessFactory factory;
031:
032: protected void setUp() throws Exception {
033: super .setUp();
034: factory = BPELProcessFactory.getInstance();
035: }
036:
037: protected void tearDown() throws Exception {
038: super .tearDown();
039: }
040:
041: public void testCreateBPELProcessFactory() {
042: BPELProcessFactory factory = BPELProcessFactory.getInstance();
043: assertNotNull(factory);
044: }
045:
046: public final void testGetRulesURL() {
047:
048: BPELProcessFactoryImpl factoryImpl = (BPELProcessFactoryImpl) BPELProcessFactory
049: .getInstance();
050:
051: URL rulesURL = factoryImpl.getRulesURL();
052:
053: assertNotNull(rulesURL);
054: }
055:
056: public void testCreateBaseBPELProcess() {
057: try {
058:
059: InputStream inputStream = getLoader().getResourceAsStream(
060: "baseBPEL.xml");
061: BPELProcess bpelProcess = factory
062: .createBPELProcess(inputStream);
063:
064: Process process = bpelProcess.getProcess();
065:
066: assertNotNull(process);
067: assertEquals("BaseBPEL", process.getName());
068: assertTrue(process.isSuppressJoinFailure());
069: assertFalse(process.isAbstractProcess());
070:
071: } catch (BPELDocumentException e) {
072: e.printStackTrace();
073: fail("must create a BPELProcess without throwing an Exception");
074: }
075: }
076:
077: public void testCreateTravelBpel() {
078: try {
079:
080: InputStream inputStream = getLoader().getResourceAsStream(
081: "BookTravel.bpel");
082: BPELProcess bpelProcess = factory
083: .createBPELProcess(inputStream);
084:
085: Process process = bpelProcess.getProcess();
086:
087: assertNotNull(process);
088: assertEquals("TravelProcess", process.getName());
089: assertTrue(process.isSuppressJoinFailure());
090: assertFalse(process.isAbstractProcess());
091:
092: } catch (BPELDocumentException e) {
093: e.printStackTrace();
094: fail("must create a BPELProcess without throwing an Exception");
095: }
096: }
097:
098: public void testPartnerLinksProcess() {
099: try {
100:
101: InputStream inputStream = getLoader().getResourceAsStream(
102: "partnerLinksBPEL.xml");
103: BPELProcess bpelProcess = factory
104: .createBPELProcess(inputStream);
105:
106: Process process = bpelProcess.getProcess();
107:
108: assertNotNull(process);
109: assertEquals("PartnerLinksBPEL", process.getName());
110: assertTrue(process.isSuppressJoinFailure());
111: assertFalse(process.isAbstractProcess());
112:
113: PartnerLinks partnerLinks = process.getPartnerLinks();
114:
115: assertNotNull(partnerLinks);
116: List listOfpartnerLinks = partnerLinks.getPartnerLinks();
117: Iterator iter = listOfpartnerLinks.iterator();
118:
119: PartnerLink partnerLink = (PartnerLink) iter.next();
120: assertNotNull(partnerLink);
121: assertEquals("client", partnerLink.getName());
122:
123: assertTrue(iter.hasNext());
124:
125: partnerLink = (PartnerLink) iter.next();
126: assertNotNull(partnerLink);
127: assertEquals("service", partnerLink.getName());
128:
129: assertFalse(iter.hasNext());
130:
131: } catch (BPELDocumentException e) {
132: e.printStackTrace();
133: fail("must create a BPELProcess without throwing an Exception");
134: }
135: }
136:
137: public void testFunctionDetailsExample() {
138: try {
139: InputStream inputStream = getLoader().getResourceAsStream(
140: "functionDetailsExample.xml");
141: BPELProcess bpelProcess = factory
142: .createBPELProcess(inputStream);
143:
144: Process process = bpelProcess.getProcess();
145:
146: // test the process
147: //
148: assertNotNull(process);
149: assertEquals("bexeeExample", process.getName());
150: assertFalse(process.isSuppressJoinFailure());
151: assertFalse(process.isAbstractProcess());
152:
153: // test the partner links
154: //
155: PartnerLinks partnerLinks = process.getPartnerLinks();
156: assertNotNull(partnerLinks);
157:
158: // test the particular partner links
159: //
160: List listOfpartnerLinks = partnerLinks.getPartnerLinks();
161: Iterator iter = listOfpartnerLinks.iterator();
162: PartnerLink partnerLink = (PartnerLink) iter.next();
163: assertNotNull(partnerLink);
164: assertEquals("client", partnerLink.getName());
165: assertTrue(iter.hasNext());
166: partnerLink = (PartnerLink) iter.next();
167: assertNotNull(partnerLink);
168: assertEquals("service", partnerLink.getName());
169: assertFalse(iter.hasNext());
170:
171: // test the variables
172: //
173: Variables variables = process.getVariables();
174: assertNotNull(variables);
175:
176: // test the particular variables
177: //
178: List listOfVariables = variables.getVariables();
179: Iterator varIter = listOfVariables.iterator();
180: Variable variable = (Variable) varIter.next();
181: assertNotNull(variable);
182: assertEquals("input", variable.getName());
183: assertEquals(new QName("http://bexee.sourceforge.net",
184: "ReceiveRequestMessage"), variable.getMessageType());
185: assertTrue(varIter.hasNext());
186: variable = (Variable) varIter.next();
187: assertNotNull(variable);
188: assertEquals("response", variable.getName());
189: assertEquals(new QName("http://bexee.sourceforge.net",
190: "ReceiveResultMessage"), variable.getMessageType());
191: assertFalse(iter.hasNext());
192:
193: // test the root activity
194: //
195: Activity rootActivity = process.getActivity();
196: assertEquals(SequenceImpl.class, rootActivity.getClass());
197:
198: Sequence mainSequence = (Sequence) rootActivity;
199: List activitiesList = mainSequence.getActivities();
200: Iterator iterator = activitiesList.iterator();
201: assertTrue(iterator.hasNext());
202: Activity activity = (Activity) iterator.next();
203:
204: assertEquals(ReceiveImpl.class, activity.getClass());
205: assertTrue(iterator.hasNext());
206: activity = (Activity) iterator.next();
207:
208: assertEquals(InvokeImpl.class, activity.getClass());
209: assertTrue(iterator.hasNext());
210: activity = (Activity) iterator.next();
211:
212: assertEquals(ReceiveImpl.class, activity.getClass());
213: assertFalse(iterator.hasNext());
214:
215: } catch (BPELDocumentException e) {
216: e.printStackTrace();
217: fail("must create a BPELProcess without throwing an Exception");
218: }
219: }
220:
221: public void testFunctionDetailsExampleTwo() {
222: try {
223: InputStream inputStream = getLoader().getResourceAsStream(
224: "functionDetailsExampleTwo.xml");
225: BPELProcess bpelProcess = factory
226: .createBPELProcess(inputStream);
227:
228: Process process = bpelProcess.getProcess();
229:
230: // test the process
231: //
232: assertNotNull(process);
233: assertEquals("bexeeExample", process.getName());
234: assertFalse(process.isSuppressJoinFailure());
235: assertFalse(process.isAbstractProcess());
236:
237: // test the partner links
238: //
239: PartnerLinks partnerLinks = process.getPartnerLinks();
240: assertNotNull(partnerLinks);
241:
242: // test the particular partner links
243: //
244: List listOfpartnerLinks = partnerLinks.getPartnerLinks();
245: Iterator iter = listOfpartnerLinks.iterator();
246: PartnerLink partnerLink = (PartnerLink) iter.next();
247: assertNotNull(partnerLink);
248: assertEquals("client", partnerLink.getName());
249: assertTrue(iter.hasNext());
250: partnerLink = (PartnerLink) iter.next();
251: assertNotNull(partnerLink);
252: assertEquals("service", partnerLink.getName());
253: assertFalse(iter.hasNext());
254:
255: // test the variables
256: //
257: Variables variables = process.getVariables();
258: assertNotNull(variables);
259:
260: // test the particular variables
261: //
262: List listOfVariables = variables.getVariables();
263: Iterator varIter = listOfVariables.iterator();
264: Variable variable = (Variable) varIter.next();
265: assertNotNull(variable);
266: assertEquals("input", variable.getName());
267: assertEquals(new QName("http://bexee.sourceforge.net",
268: "ReceiveRequestMessage"), variable.getMessageType());
269: assertTrue(varIter.hasNext());
270: variable = (Variable) varIter.next();
271: assertNotNull(variable);
272: assertEquals("response", variable.getName());
273: assertEquals(new QName("http://bexee.sourceforge.net",
274: "ReceiveResultMessage"), variable.getMessageType());
275: assertFalse(iter.hasNext());
276:
277: // test the root activity
278: //
279: Activity rootActivity = process.getActivity();
280: assertEquals(FlowImpl.class, rootActivity.getClass());
281:
282: } catch (BPELDocumentException e) {
283: e.printStackTrace();
284: fail("must create a BPELProcess without throwing an Exception");
285: }
286: }
287:
288: public void testComplexBPEL() {
289: try {
290: // process values
291: //
292: String processName = "LoanFlow";
293: String targetNamespace = "http://samples.otn.com";
294: String suppressJoinFailure = "yes";
295: String[] xmlns_tns = { "xmls:tns", "http://samples.otn.com" };
296: String[] xmlns_services = { "xmls:services",
297: "http://services.otn.com" };
298: String xmlns = "http://schemas.xmlsoap.org/ws/2003/03/business-process/";
299:
300: // partnerlinks
301: //
302: PartnerLink clientPLink = null;
303: String pLinkNameClient = "client";
304: PartnerLink servicePLinkOne = null;
305: String pLinkNameServiceOne = "UnitedLoanService";
306: PartnerLink servicePLinkTwo = null;
307: String pLinkNameServiceTwo = "AmericanLoanService";
308:
309: // variables
310: //
311: Variable inputVariable = null;
312: String inputVarName = "input";
313: Variable outputVariable = null;
314: String outputVarName = "output";
315: Variable loanAppVariable = null;
316: String loanAppVarName = "loanApplication";
317: Variable loanOneVariable = null;
318: String loanOneVarName = "loanOffer1";
319: Variable loanTwoVariable = null;
320: String loanTwoVarName = "loanOffer2";
321:
322: // create the bpelProcess from a file
323: //
324: InputStream inputStream = getLoader().getResourceAsStream(
325: "complexBPEL.xml");
326: BPELProcess bpelProcess = factory
327: .createBPELProcess(inputStream);
328: Process process = bpelProcess.getProcess();
329:
330: // do the tests
331: //
332: assertEquals(processName, process.getName());
333: assertEquals(targetNamespace, process.getTargetNamespace());
334: assertEquals(true, process.isSuppressJoinFailure());
335: assertEquals(false, process.isAbstractProcess());
336: assertEquals(false, process.isInstanceCompensable());
337:
338: List partnerLinks = process.getPartnerLinks()
339: .getPartnerLinks();
340: for (Iterator iter = partnerLinks.iterator(); iter
341: .hasNext();) {
342: PartnerLink pLink = (PartnerLink) iter.next();
343: if (pLink.getName().equals(pLinkNameClient)) {
344: clientPLink = pLink;
345: assertEquals(new QName(xmlns_tns[1], "FlowSample"),
346: pLink.getPartnerLinkType());
347: assertEquals("FlowSampleRequester", pLink
348: .getPartnerRole());
349: assertEquals("FlowSampleProvider", pLink
350: .getMyRole());
351: } else if (pLink.getName().equals(pLinkNameServiceOne)) {
352: servicePLinkOne = pLink;
353: assertEquals(new QName(xmlns_services[1],
354: "LoanService"), pLink.getPartnerLinkType());
355: assertEquals("LoanServiceProvider", pLink
356: .getPartnerRole());
357: assertEquals("LoanServiceRequester", pLink
358: .getMyRole());
359: } else if (pLink.getName().equals(pLinkNameServiceTwo)) {
360: servicePLinkTwo = pLink;
361: assertEquals(new QName(xmlns_services[1],
362: "LoanService"), pLink.getPartnerLinkType());
363: assertEquals("LoanServiceProvider", pLink
364: .getPartnerRole());
365: assertEquals("LoanServiceRequester", pLink
366: .getMyRole());
367: }
368: }
369:
370: List variables = process.getVariables().getVariables();
371: for (Iterator iter = variables.iterator(); iter.hasNext();) {
372: Variable var = (Variable) iter.next();
373: if (var.getName().equals(inputVarName)) {
374: inputVariable = var;
375: } else if (var.getName().equals(outputVarName)) {
376: outputVariable = var;
377: } else if (var.getName().equals(loanAppVarName)) {
378: loanAppVariable = var;
379: } else if (var.getName().equals(loanOneVarName)) {
380: loanOneVariable = var;
381: } else if (var.getName().equals(loanTwoVarName)) {
382: loanTwoVariable = var;
383: }
384: }
385:
386: Sequence rootActivity = (Sequence) process.getActivity();
387: List activities = rootActivity.getActivities();
388: Iterator iter = activities.iterator();
389:
390: Receive receiveOne = (Receive) iter.next();
391: assertEquals("receiveInput", receiveOne.getName());
392: assertEquals(clientPLink, receiveOne.getPartnerLink());
393: assertEquals("initiate", receiveOne.getOperation());
394: assertEquals(inputVariable, receiveOne.getVariable());
395: assertEquals(true, receiveOne.isCreateInstance());
396:
397: } catch (BPELDocumentException e) {
398: e.printStackTrace();
399: fail("must create a BPELProcess without throwing an Exception");
400: }
401: }
402:
403: }
|