KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > wsdl > EndpointReferenceUtilsTest


1 package org.objectweb.celtix.wsdl;
2
3 import java.io.InputStream JavaDoc;
4 import java.net.URL JavaDoc;
5 import java.util.ArrayList JavaDoc;
6 import java.util.List JavaDoc;
7
8 import javax.wsdl.Definition;
9 import javax.wsdl.Port;
10 import javax.wsdl.WSDLException;
11 import javax.wsdl.extensions.ExtensionRegistry;
12 import javax.wsdl.factory.WSDLFactory;
13 import javax.wsdl.xml.WSDLReader;
14 import javax.xml.bind.JAXBContext;
15 import javax.xml.bind.JAXBElement;
16 import javax.xml.bind.Unmarshaller;
17 import javax.xml.namespace.QName JavaDoc;
18 import javax.xml.transform.Source JavaDoc;
19 import javax.xml.transform.stream.StreamSource JavaDoc;
20 import javax.xml.validation.Schema JavaDoc;
21 import javax.xml.ws.Provider;
22 import javax.xml.ws.WebServiceProvider;
23
24 import org.w3c.dom.Element JavaDoc;
25
26 import junit.framework.TestCase;
27
28 import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
29 import org.objectweb.celtix.ws.addressing.MetadataType;
30 import org.objectweb.celtix.ws.addressing.ObjectFactory;
31 import org.objectweb.celtix.ws.addressing.wsdl.AttributedQNameType;
32 import org.objectweb.celtix.ws.addressing.wsdl.ServiceNameType;
33
34 public class EndpointReferenceUtilsTest extends TestCase {
35     
36
37     public EndpointReferenceUtilsTest(String JavaDoc arg0) {
38         super(arg0);
39     }
40
41     public static void main(String JavaDoc[] args) {
42         junit.textui.TestRunner.run(EndpointReferenceUtilsTest.class);
43     }
44
45     class TestWSDLManager implements WSDLManager {
46         WSDLFactory factory;
47         TestWSDLManager() {
48             try {
49                 factory = WSDLFactory.newInstance();
50                 //registry = factory.newPopulatedExtensionRegistry();
51
} catch (WSDLException e) {
52                 e.printStackTrace();
53             }
54         }
55
56         public ExtensionRegistry getExtenstionRegistry() {
57             return null;
58         }
59
60         public WSDLFactory getWSDLFactory() {
61             return factory;
62         }
63
64         public Definition getDefinition(URL JavaDoc url) throws WSDLException {
65             return loadDefinition(url.toString());
66         }
67
68         public Definition getDefinition(String JavaDoc url) throws WSDLException {
69             return loadDefinition(url);
70         }
71
72         public Definition getDefinition(Element element) throws WSDLException {
73             WSDLReader reader = factory.newWSDLReader();
74             reader.setFeature("javax.wsdl.verbose", false);
75             reader.setExtensionRegistry(getExtenstionRegistry());
76             return reader.readWSDL(null, element);
77         }
78
79         public Definition getDefinition(Class JavaDoc<?> sei) throws WSDLException {
80             // TODO Auto-generated method stub
81
return null;
82         }
83         private Definition loadDefinition(String JavaDoc url) throws WSDLException {
84             WSDLReader reader = factory.newWSDLReader();
85             reader.setFeature("javax.wsdl.verbose", false);
86             reader.setExtensionRegistry(getExtenstionRegistry());
87             return reader.readWSDL(url);
88         }
89
90         public void shutdown() {
91             // do nothing
92
}
93
94         public void addDefinition(Object JavaDoc key, Definition wsdl) {
95             // TODO Auto-generated method stub
96

97         }
98
99     };
100
101     @WebServiceProvider(wsdlLocation = "resources/Test.wsdl",
102                         portName = "TestPort",
103                         serviceName = "TestService",
104                         targetNamespace = "http://schemas.xmlsoap.org/wsdl/soap/http")
105     class TestProvider1 implements Provider<Source JavaDoc> {
106         TestProvider1() {
107             //Complete
108
}
109         
110         public Source JavaDoc invoke(Source JavaDoc source) {
111             return null;
112         }
113     }
114
115     @WebServiceProvider
116     class TestProvider2 implements Provider<Source JavaDoc> {
117         TestProvider2() {
118             //Complete
119
}
120         
121         public Source JavaDoc invoke(Source JavaDoc source) {
122             return null;
123         }
124     }
125     
126     public void testGetWSDLDefinition() throws Exception JavaDoc {
127         
128         WSDLManager manager = new TestWSDLManager();
129         URL JavaDoc url = getClass().getResource("/wsdl/hello_world.wsdl");
130         assertNotNull(url);
131         QName JavaDoc serviceName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http", "SOAPService_Test1");
132         String JavaDoc portName = new String JavaDoc("SoapPort_Test2");
133
134         EndpointReferenceType ref =
135             EndpointReferenceUtils.getEndpointReference(url, serviceName, portName);
136
137         assertNotNull("Could not create endpoint reference", ref);
138
139         Definition def = EndpointReferenceUtils.getWSDLDefinition(manager,
140                                                                   ref);
141         assertNotNull("Could not load wsdl", def);
142
143
144         Port port = EndpointReferenceUtils.getPort(manager, ref);
145         assertNotNull("Could not find port", port);
146     }
147
148     public void testGetWSDLDefinitionEmbeddedWsdl() throws Exception JavaDoc {
149         WSDLManager manager = new TestWSDLManager();
150
151         Class JavaDoc cls[] = new Class JavaDoc[] {
152             ObjectFactory.class,
153             org.objectweb.celtix.ws.addressing.wsdl.ObjectFactory.class
154         };
155         JAXBContext context = JAXBContext.newInstance(cls);
156         Unmarshaller u = context.createUnmarshaller();
157
158         EndpointReferenceType ref = (EndpointReferenceType)
159                                     ((JAXBElement<?>)u.unmarshal(
160                                         getClass().getResource("resources/reference2.xml"))).getValue();
161
162         Definition def = EndpointReferenceUtils.getWSDLDefinition(manager,
163                                                                   ref);
164         assertNotNull("Could not load wsdl", def);
165
166
167         Port port = EndpointReferenceUtils.getPort(manager, ref);
168         assertNotNull("Could not find port", port);
169     }
170
171     public void testGetSchema() throws Exception JavaDoc {
172         WSDLManager manager = new TestWSDLManager();
173         URL JavaDoc url = getClass().getResource("/wsdl/hello_world.wsdl");
174         assertNotNull(url);
175         QName JavaDoc serviceName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http", "SOAPService_Test1");
176         String JavaDoc portName = new String JavaDoc("SoapPort_Test2");
177
178         EndpointReferenceType ref =
179             EndpointReferenceUtils.getEndpointReference(url, serviceName, portName);
180
181         assertNotNull("Could not create endpoint reference", ref);
182
183         Schema JavaDoc schema = EndpointReferenceUtils.getSchema(manager, ref);
184         assertNotNull("Could not load schema from wsdl", schema);
185     }
186
187     public void testGetEndpointReference() throws Exception JavaDoc {
188         WSDLManager manager = new TestWSDLManager();
189         URL JavaDoc url = getClass().getResource("/wsdl/hello_world.wsdl");
190         assertNotNull(url);
191         QName JavaDoc serviceName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http", "SOAPService_Test1");
192         String JavaDoc portName = new String JavaDoc("SoapPort_Test2");
193
194         EndpointReferenceType ref =
195             EndpointReferenceUtils.getEndpointReference(url, serviceName, portName);
196
197         assertNotNull("Could not create endpoint reference", ref);
198
199         Port port = EndpointReferenceUtils.getPort(manager, ref);
200
201         assertNotNull("Could not find port", port);
202         assertEquals(portName, port.getName());
203     }
204
205     public void testGetAddress() throws Exception JavaDoc {
206         URL JavaDoc url = getClass().getResource("/wsdl/hello_world.wsdl");
207         QName JavaDoc serviceName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http", "SOAPService_Test1");
208         String JavaDoc portName = new String JavaDoc("SoapPort_Test2");
209
210         EndpointReferenceType ref =
211             EndpointReferenceUtils.getEndpointReference(url, serviceName, portName);
212
213         String JavaDoc address = EndpointReferenceUtils.getAddress(ref);
214         assertNull(address);
215         // only when getAddress implements search in wsdl
216
// assertEquals("http://localhost:9101", address);
217

218         address = "http://localhost:8080/hello_world_soap_http";
219         EndpointReferenceUtils.setAddress(ref, address);
220         assertEquals(address, EndpointReferenceUtils.getAddress(ref));
221
222         EndpointReferenceUtils.setAddress(ref, null);
223         assertNull(EndpointReferenceUtils.getAddress(ref));
224     }
225     
226     public void testGetEndpointReferenceFromProvider() throws Exception JavaDoc {
227         WSDLManager manager = new TestWSDLManager();
228
229         //Test with fully populated WebServiceProvider Annotation
230
TestProvider1 provider1 = new TestProvider1();
231         
232         EndpointReferenceType ref =
233             EndpointReferenceUtils.getEndpointReference(manager, provider1);
234         assertNotNull(ref);
235         
236         WebServiceProvider wsp = provider1.getClass().getAnnotation(WebServiceProvider.class);
237         assertNotNull(wsp);
238         assertEquals(wsp.portName(), EndpointReferenceUtils.getPortName(ref));
239         assertNotNull(EndpointReferenceUtils.getServiceName(ref));
240         
241         QName JavaDoc portTypeName = new QName JavaDoc(wsp.targetNamespace(),
242                                        TestProvider1.class.getSimpleName());
243         assertEquals(portTypeName, EndpointReferenceUtils.getInterfaceName(ref));
244         
245         //Test with default values for WebServiceProvider Annotation
246
TestProvider2 provider2 = new TestProvider2();
247         
248         ref = EndpointReferenceUtils.getEndpointReference(manager, provider2);
249         assertNotNull(ref);
250         
251         assertNull(EndpointReferenceUtils.getPortName(ref));
252         assertNull(EndpointReferenceUtils.getServiceName(ref));
253
254         //REVISIT
255
portTypeName = new QName JavaDoc("", TestProvider2.class.getSimpleName());
256         assertEquals(portTypeName, EndpointReferenceUtils.getInterfaceName(ref));
257         
258         //Test for No WebServiceProvider Annotation.
259
ref = EndpointReferenceUtils.getEndpointReference(manager, ref);
260         assertNull(ref);
261     }
262
263     public void testSetServiceAndPortName() throws Exception JavaDoc {
264         QName JavaDoc serviceName1 = new QName JavaDoc("http://objectweb.org/soap_http1", "SOAPService_Test1");
265         QName JavaDoc portName1 = new QName JavaDoc("http://objectweb.org/soap_http1", "SoapPort_Test1");
266
267         EndpointReferenceType ref = new EndpointReferenceType();
268         
269         EndpointReferenceUtils.setServiceAndPortName(ref, serviceName1, portName1.getLocalPart());
270         
271         MetadataType metadata = ref.getMetadata();
272         List JavaDoc<Object JavaDoc> anyList = metadata.getAny();
273         Object JavaDoc obj = anyList.get(0);
274         assertTrue(obj instanceof JAXBElement);
275         obj = ((JAXBElement)obj).getValue();
276         assertNotNull(obj);
277         assertTrue(obj instanceof ServiceNameType);
278         
279         ServiceNameType snt = (ServiceNameType) obj;
280         assertEquals(serviceName1, snt.getValue());
281         assertEquals(portName1.getLocalPart(), snt.getEndpointName());
282     }
283
284     public void testSetInterfaceName() throws Exception JavaDoc {
285         QName JavaDoc portTypeName1 = new QName JavaDoc("http://objectweb.org/soap_http1", "SOAPPortType");
286
287         EndpointReferenceType ref = new EndpointReferenceType();
288         
289         EndpointReferenceUtils.setInterfaceName(ref, portTypeName1);
290         MetadataType metadata = ref.getMetadata();
291         List JavaDoc<Object JavaDoc> anyList = metadata.getAny();
292         Object JavaDoc obj = anyList.get(0);
293         assertTrue(obj instanceof JAXBElement);
294         obj = ((JAXBElement)obj).getValue();
295         assertNotNull(obj);
296         assertTrue(obj instanceof AttributedQNameType);
297         
298         AttributedQNameType aqt = (AttributedQNameType) obj;
299         assertEquals(portTypeName1, aqt.getValue());
300     }
301     
302     public void testSetMetaData() throws Exception JavaDoc {
303         EndpointReferenceType ref = new EndpointReferenceType();
304         List JavaDoc<Source JavaDoc> metadata = new ArrayList JavaDoc<Source JavaDoc>();
305         //Read a Schema File
306
InputStream JavaDoc isXsd = getClass().getResourceAsStream("resources/addressing.xsd");
307         StreamSource JavaDoc ssXsd = new StreamSource JavaDoc(isXsd);
308         metadata.add(ssXsd);
309         
310         //Read a WSDL File
311
InputStream JavaDoc isWSDL = getClass().getResourceAsStream("resources/hello_world.wsdl");
312         StreamSource JavaDoc ssWSDL = new StreamSource JavaDoc(isWSDL);
313         metadata.add(ssWSDL);
314         
315         EndpointReferenceUtils.setMetadata(ref, metadata);
316         assertNotNull("MetaData should not be empty", ref.getMetadata());
317         List JavaDoc<Object JavaDoc> anyList = ref.getMetadata().getAny();
318         assertNotNull("AnyList in MetaData should not be empty", anyList);
319         assertEquals(2, anyList.size());
320         
321         WSDLManager manager = new TestWSDLManager();
322         assertNotNull("Defintion element should be present",
323                       EndpointReferenceUtils.getWSDLDefinition(manager, ref));
324         isXsd.close();
325         isWSDL.close();
326     }
327 }
328
Popular Tags