001: /*
002: * $Id: ProcessControllerTest.java,v 1.11 2004/12/08 10:19:19 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.core;
010:
011: import java.io.FileNotFoundException;
012: import java.io.InputStream;
013: import java.util.Collection;
014: import java.util.Hashtable;
015: import java.util.Iterator;
016:
017: import javax.wsdl.Binding;
018: import javax.wsdl.Definition;
019: import javax.wsdl.Port;
020: import javax.wsdl.Service;
021: import javax.wsdl.extensions.ExtensibilityElement;
022: import javax.wsdl.extensions.ExtensionRegistry;
023: import javax.wsdl.extensions.soap.SOAPAddress;
024: import javax.wsdl.factory.WSDLFactory;
025: import javax.wsdl.xml.WSDLReader;
026: import javax.xml.namespace.QName;
027:
028: import org.xml.sax.InputSource;
029:
030: import bexee.BexeeTestCase;
031: import bexee.model.BPELDocumentException;
032: import bexee.model.BPELProcessFactory;
033: import bexee.model.elements.PartnerLink;
034: import bexee.model.elements.impl.PartnerLinkImpl;
035: import bexee.model.process.BPELProcess;
036: import bexee.wsdl.extensions.partnerlinktype.PartnerLinkTypeExtensionRegistry;
037:
038: /**
039: * @author Pawel Kowalski
040: * @version $Revision: 1.11 $, $Date: 2004/12/08 10:19:19 $
041: */
042: public class ProcessControllerTest extends BexeeTestCase {
043:
044: private ProcessController controller;
045:
046: private BPELProcessFactory factory;
047:
048: private WSDLFactory wsdlFactory;
049:
050: private WSDLReader wsdlReader;
051:
052: private String inputPropertyName = "input";
053:
054: private String outputPropertyName = "output";
055:
056: private String inputValue = "someinput";
057:
058: //**************************************************/
059: // junit template methods
060: //**************************************************/
061:
062: protected void setUp() throws Exception {
063: super .setUp();
064: controller = new ProcessControllerImpl();
065: factory = BPELProcessFactory.getInstance();
066: wsdlFactory = WSDLFactory.newInstance();
067: wsdlReader = wsdlFactory.newWSDLReader();
068: // register extension partner links
069: ExtensionRegistry reg = new PartnerLinkTypeExtensionRegistry();
070: wsdlReader.setExtensionRegistry(reg);
071: wsdlReader.setFeature("javax.wsdl.importDocuments", false);
072: }
073:
074: protected void tearDown() throws Exception {
075: super .tearDown();
076: }
077:
078: //**************************************************/
079: // test methods
080: //**************************************************/
081:
082: public void testInvokationInformation() throws Exception {
083:
084: // create and setup a ProcessInstance
085: BPELProcess bpelProcess = createReceiveReplyProcess();
086:
087: InputStream inputStream = getLoader().getResourceAsStream(
088: "TravelService.wsdl");
089: bpelProcess.addPartnerWSDL(wsdlReader.readWSDL(null,
090: new InputSource(inputStream)));
091: PartnerLink pLink = new PartnerLinkImpl();
092: pLink.getPartnerLinkType();
093: QName partnerLinkType = new QName("OfferTravelPLT",
094: "http://bexee.sourceforge.net/Travel");
095: QName portTypeName = new QName(
096: "http://bexee.sourceforge.net/Travel", "TravelService");
097:
098: Binding binding = null;
099: SOAPAddress soapAddress = null;
100: Port port = null;
101:
102: Collection wsdlCollection = bpelProcess.getPartnerWSDL();
103: mainloop: for (Iterator iter = wsdlCollection.iterator(); iter
104: .hasNext();) {
105: Definition defn = (Definition) iter.next();
106: Collection bindings = defn.getBindings().values();
107: for (Iterator iterator = bindings.iterator(); iterator
108: .hasNext();) {
109: binding = (Binding) iterator.next();
110: if (binding.getPortType().getQName().equals(
111: portTypeName)) {
112: break mainloop;
113: }
114: }
115: }
116:
117: mainloop: for (Iterator iter = wsdlCollection.iterator(); iter
118: .hasNext();) {
119: Definition defn = (Definition) iter.next();
120: Collection services = defn.getServices().values();
121: for (Iterator iterator = services.iterator(); iterator
122: .hasNext();) {
123: Service service = (Service) iterator.next();
124: Collection portTypes = service.getPorts().values();
125: for (Iterator iter2 = portTypes.iterator(); iter2
126: .hasNext();) {
127: port = (Port) iter2.next();
128: if (port.getBinding().equals(binding)) {
129: break mainloop;
130: }
131: }
132: }
133: }
134:
135: if (port != null) {
136: Collection extElems = port.getExtensibilityElements();
137: for (Iterator iter = extElems.iterator(); iter.hasNext();) {
138: ExtensibilityElement element = (ExtensibilityElement) iter
139: .next();
140: if (element instanceof SOAPAddress) {
141: soapAddress = (SOAPAddress) element;
142: break;
143: }
144: }
145: }
146:
147: }
148:
149: public void testLocalController() throws Exception {
150:
151: // create and setup a ProcessInstance
152: BPELProcess bpelProcess = createReceiveReplyProcess();
153:
154: InputStream inputStream = getLoader().getResourceAsStream(
155: "TravelService.wsdl");
156:
157: bpelProcess.addPartnerWSDL(wsdlReader.readWSDL(null,
158: new InputSource(inputStream)));
159:
160: ProcessContext ctx = new ProcessContext();
161: ProcessInstance processInstance = new ProcessInstance(
162: bpelProcess, ctx);
163:
164: // create a message
165: BexeeMessage msg = createBexeeMessageOne();
166:
167: // process the message
168: controller.processMessage(processInstance, msg);
169:
170: // get the results and compare
171: Object result = processInstance.getContext().getResult();
172:
173: System.out.println();
174:
175: // String outputValue = (String) result;
176: // assertEquals(inputValue, outputValue);
177: }
178:
179: //**************************************************/
180: // private helper methods
181: //**************************************************/
182:
183: private BPELProcess createReceiveReplyProcess()
184: throws FileNotFoundException, BPELDocumentException {
185: InputStream inputStream = getLoader().getResourceAsStream(
186: "BookTravel.xml");
187: BPELProcess bpelProcess = factory
188: .createBPELProcess(inputStream);
189: return bpelProcess;
190: }
191:
192: private BexeeMessage createBexeeMessageOne() throws Exception {
193:
194: // create a BexeeMessage
195: BexeeMessage message = new BexeeMessage();
196: message.setOperation("process");
197:
198: Hashtable parts = new Hashtable();
199: parts.put("value", "inval");
200: message.setParts(parts);
201:
202: return message;
203: }
204: }
|