KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > bindings > soap > SOAPServerBindingTest


1 package org.objectweb.celtix.bus.bindings.soap;
2
3 import java.io.ByteArrayInputStream JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.io.InputStream JavaDoc;
6 import java.io.OutputStream JavaDoc;
7 import java.lang.reflect.Method JavaDoc;
8 import java.net.URL JavaDoc;
9 import java.util.List JavaDoc;
10 import java.util.Map JavaDoc;
11 import java.util.concurrent.ConcurrentHashMap JavaDoc;
12 import java.util.concurrent.Executor JavaDoc;
13
14 import javax.jws.WebMethod;
15 import javax.jws.soap.SOAPBinding.Style;
16 import javax.xml.namespace.QName JavaDoc;
17
18 import javax.xml.soap.Detail JavaDoc;
19 import javax.xml.soap.MessageFactory JavaDoc;
20 import javax.xml.soap.SOAPFault JavaDoc;
21 import javax.xml.soap.SOAPMessage JavaDoc;
22
23 import javax.xml.transform.Source JavaDoc;
24 import javax.xml.transform.dom.DOMSource JavaDoc;
25 import javax.xml.ws.Binding;
26 import javax.xml.ws.Endpoint;
27 import javax.xml.ws.Provider;
28 import javax.xml.ws.WebFault;
29 import javax.xml.ws.WebServiceProvider;
30 import javax.xml.ws.handler.Handler;
31 import javax.xml.ws.handler.MessageContext;
32
33 import org.w3c.dom.Node JavaDoc;
34 import org.w3c.dom.NodeList JavaDoc;
35
36 import junit.framework.TestCase;
37
38 import org.objectweb.celtix.Bus;
39 import org.objectweb.celtix.bindings.DataBindingCallback;
40 import org.objectweb.celtix.bindings.DataBindingCallback.Mode;
41 import org.objectweb.celtix.bindings.ServerBindingEndpointCallback;
42 import org.objectweb.celtix.bindings.ServerDataBindingCallback;
43 import org.objectweb.celtix.bus.bindings.TestInputStreamContext;
44 import org.objectweb.celtix.bus.bindings.TestOutputStreamContext;
45 import org.objectweb.celtix.bus.jaxws.EndpointUtils;
46 import org.objectweb.celtix.bus.jaxws.JAXBDataBindingCallback;
47 import org.objectweb.celtix.bus.jaxws.ServerDynamicDataBindingCallback;
48 import org.objectweb.celtix.context.InputStreamMessageContext;
49 import org.objectweb.celtix.context.ObjectMessageContext;
50 import org.objectweb.celtix.context.OutputStreamMessageContext;
51 import org.objectweb.celtix.transports.ServerTransport;
52 import org.objectweb.celtix.transports.ServerTransportCallback;
53 import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
54 import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
55
56 import org.objectweb.hello_world_soap_http.DocLitBareImpl;
57 import org.objectweb.hello_world_soap_http.HWSoapMessageProvider;
58 import org.objectweb.hello_world_soap_http.HWSourcePayloadProvider;
59 import org.objectweb.hello_world_soap_http.HelloWorldServiceProvider;
60 import org.objectweb.hello_world_soap_http.NoSuchCodeLitFault;
61 import org.objectweb.hello_world_soap_http.NotAnnotatedGreeterImpl;
62 import org.objectweb.hello_world_soap_http.NotAnnotatedGreeterImplRPCLit;
63
64 public class SOAPServerBindingTest extends TestCase {
65     Bus bus;
66     EndpointReferenceType epr;
67     
68     public SOAPServerBindingTest(String JavaDoc arg0) {
69         super(arg0);
70     }
71
72     public static void main(String JavaDoc[] args) {
73         junit.textui.TestRunner.run(SOAPServerBindingTest.class);
74     }
75     
76     protected void setUp() throws Exception JavaDoc {
77         super.setUp();
78         bus = Bus.init();
79         epr = new EndpointReferenceType();
80         
81         URL JavaDoc wsdlUrl = getClass().getResource("/wsdl/hello_world.wsdl");
82         QName JavaDoc serviceName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http", "SOAPService");
83         epr = EndpointReferenceUtils.getEndpointReference(wsdlUrl, serviceName, "SoapPort");
84     }
85
86     public void testGetBinding() throws Exception JavaDoc {
87         SOAPServerBinding serverBinding = new SOAPServerBinding(bus, epr, null);
88         assertNotNull(serverBinding.getBinding());
89     }
90
91     public void testProviderDispatchMessageModeSourceData() throws Exception JavaDoc {
92         HelloWorldServiceProvider provider = new HelloWorldServiceProvider();
93         TestEndpointImpl testEndpoint
94             = new TestEndpointImpl(
95                                   provider,
96                                   DataBindingCallback.Mode.MESSAGE,
97                                   DOMSource JavaDoc.class,
98                                   new QName JavaDoc[]{
99                                       new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types",
100                                                 "sayHi")
101                                   });
102         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
103         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
104         TestInputStreamContext inCtx = new TestInputStreamContext(null);
105         
106         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiDocLiteralReq.xml");
107         inCtx.setInputStream(is);
108
109         serverBinding.testDispatch(inCtx, serverTransport);
110
111         assertEquals(1, provider.getInvokeCount());
112         assertNotNull(serverTransport.getOutputStreamContext());
113         assertFalse(serverTransport.getOutputStreamContext().isFault());
114         OutputStream JavaDoc os = serverTransport.getOutputStreamContext().getOutputStream();
115         assertNotNull(os);
116     }
117
118     public void testProviderDispatchMessageModeSOAPMessageData() throws Exception JavaDoc {
119         HWSoapMessageProvider provider = new HWSoapMessageProvider();
120         TestEndpointImpl testEndpoint = new TestEndpointImpl(
121                                   provider,
122                                   DataBindingCallback.Mode.MESSAGE,
123                                   SOAPMessage JavaDoc.class,
124                                   new QName JavaDoc[]{
125                                       new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types",
126                                                 "sayHi")
127                                   });
128         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
129         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
130         TestInputStreamContext inCtx = new TestInputStreamContext(null);
131         
132         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiDocLiteralReq.xml");
133         inCtx.setInputStream(is);
134
135         serverBinding.testDispatch(inCtx, serverTransport);
136
137         assertEquals(1, provider.getInvokeCount());
138         assertNotNull(serverTransport.getOutputStreamContext());
139         assertFalse(serverTransport.getOutputStreamContext().isFault());
140         OutputStream JavaDoc os = serverTransport.getOutputStreamContext().getOutputStream();
141         assertNotNull(os);
142     }
143
144     public void testProviderDispatchPayloadModeSourceData() throws Exception JavaDoc {
145         HWSourcePayloadProvider provider = new HWSourcePayloadProvider();
146         TestEndpointImpl testEndpoint = new TestEndpointImpl(
147                           provider,
148                           DataBindingCallback.Mode.PAYLOAD,
149                           DOMSource JavaDoc.class,
150                           new QName JavaDoc[]{
151                               new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types",
152                                         "sayHi")
153                           });
154         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
155         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
156         TestInputStreamContext inCtx = new TestInputStreamContext(null);
157         
158         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiDocLiteralReq.xml");
159         inCtx.setInputStream(is);
160
161         serverBinding.testDispatch(inCtx, serverTransport);
162
163         assertEquals(1, provider.getInvokeCount());
164         assertNotNull(serverTransport.getOutputStreamContext());
165         assertFalse(serverTransport.getOutputStreamContext().isFault());
166         OutputStream JavaDoc os = serverTransport.getOutputStreamContext().getOutputStream();
167         assertNotNull(os);
168     }
169     public void testDocLitDispatch() throws Exception JavaDoc {
170         QName JavaDoc wrapName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "greetMe");
171         QName JavaDoc wrapName2 = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "sayHi");
172         
173         TestEndpointImpl testEndpoint = new TestEndpointImpl(new NotAnnotatedGreeterImpl(),
174                                                              new QName JavaDoc[]{wrapName, wrapName2});
175         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
176
177         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
178         
179         QName JavaDoc elName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "requestType");
180         String JavaDoc data = new String JavaDoc("TestSOAPInputMessage");
181
182         byte[] bArray = SOAPMessageUtil.createWrapDocLitSOAPMessage(wrapName, elName, data).getBytes();
183         TestInputStreamContext inCtx = new TestInputStreamContext(bArray);
184
185         serverBinding.testDispatch(inCtx, serverTransport);
186
187         assertNotNull(serverTransport.getOutputStreamContext());
188         assertFalse(serverTransport.getOutputStreamContext().isFault());
189         OutputStream JavaDoc os = serverTransport.getOutputStreamContext().getOutputStream();
190         assertNotNull(os);
191
192         wrapName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "greetMeResponse");
193         elName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "responseType");
194        
195         String JavaDoc ref = SOAPMessageUtil.createWrapDocLitSOAPMessage(wrapName, elName, data);
196        
197         assertEquals(ref, os.toString());
198         
199         //Doc Literal Case
200
inCtx.clear();
201         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiDocLiteralReq.xml");
202         inCtx.setInputStream(is);
203         serverBinding.testDispatch(inCtx, serverTransport);
204         assertNotNull(serverTransport.getOutputStreamContext());
205         assertFalse(serverTransport.getOutputStreamContext().isFault());
206         is.close();
207     }
208
209     public void testRPCLitDispatch() throws Exception JavaDoc {
210         QName JavaDoc qn = new QName JavaDoc("http://objectweb.org/hello_world_rpclit", "sayHi");
211         TestEndpointImpl testEndpoint = new TestEndpointImpl(new NotAnnotatedGreeterImplRPCLit(),
212                                                              new QName JavaDoc[]{qn});
213         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
214         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
215         TestInputStreamContext inCtx = new TestInputStreamContext(null);
216         
217         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiRpcLiteralReq.xml");
218         inCtx.setInputStream(is);
219         serverBinding.testDispatch(inCtx, serverTransport);
220         is.close();
221         
222         TestOutputStreamContext osc =
223             (TestOutputStreamContext)serverTransport.getOutputStreamContext();
224         assertNotNull(osc);
225         assertFalse(osc.isFault());
226         
227         ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(osc.getOutputStreamBytes());
228         
229         //System.out.println(new String(osc.getOutputStreamBytes()));
230

231         SOAPMessage JavaDoc msg = MessageFactory.newInstance().createMessage(null, bais);
232         assertNotNull(msg);
233         assertFalse(msg.getSOAPBody().hasFault());
234         Node JavaDoc xmlNode = msg.getSOAPBody();
235         assertNotNull(xmlNode);
236         assertEquals(1, xmlNode.getChildNodes().getLength());
237         //Check if the Response Node is "sayHiResponse"
238
xmlNode = xmlNode.getFirstChild();
239         assertEquals("sayHiResponse", xmlNode.getLocalName());
240     }
241     
242     public void testDispatchOneway() throws Exception JavaDoc {
243         QName JavaDoc wrapName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "greetMeOneWay");
244         TestEndpointImpl testEndpoint = new TestEndpointImpl(new NotAnnotatedGreeterImpl(),
245                                                              new QName JavaDoc[]{wrapName});
246         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
247         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
248
249         QName JavaDoc elName = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "requestType");
250         String JavaDoc data = new String JavaDoc("TestSOAPInputMessage");
251        
252         byte[] bArray = SOAPMessageUtil.createWrapDocLitSOAPMessage(wrapName, elName, data).getBytes();
253         
254         TestInputStreamContext inCtx = new TestInputStreamContext(bArray);
255         serverBinding.testDispatch(inCtx, serverTransport);
256
257         assertNotNull(serverTransport.getOutputStreamContext());
258         OutputStream JavaDoc os = serverTransport.getOutputStreamContext().getOutputStream();
259         assertNotNull(os);
260         
261         assertEquals("", os.toString());
262
263     }
264
265     public void testDocLitBareDispatch() throws Exception JavaDoc {
266         DocLitBareImpl dc = new DocLitBareImpl();
267         TestEndpointImpl testEndpoint = new TestEndpointImpl(dc, null);
268         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
269         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
270         TestInputStreamContext inCtx = new TestInputStreamContext(null);
271         
272         InputStream JavaDoc is = getClass().getResourceAsStream("resources/sayHiDocLiteralBareReq.xml");
273         inCtx.setInputStream(is);
274         serverBinding.testDispatch(inCtx, serverTransport);
275         is.close();
276         
277         assertEquals(1, dc.getSayHiInvocationCount());
278         assertNotNull(serverTransport.getOutputStreamContext());
279         assertFalse("Should not have a SOAP Fault", serverTransport.getOutputStreamContext().isFault());
280     }
281     public void testDocLitBareNoParamDispatch() throws Exception JavaDoc {
282         DocLitBareImpl dc = new DocLitBareImpl();
283         TestEndpointImpl testEndpoint = new TestEndpointImpl(dc, null);
284         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
285         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
286         TestInputStreamContext inCtx = new TestInputStreamContext(null);
287         
288         InputStream JavaDoc is = getClass().getResourceAsStream("resources/EmptyBody.xml");
289         inCtx.setInputStream(is);
290         serverBinding.testDispatch(inCtx, serverTransport);
291         is.close();
292         
293         assertEquals(1, dc.getBareNoParamCount());
294         assertNotNull(serverTransport.getOutputStreamContext());
295         assertFalse("Should not have a SOAP Fault", serverTransport.getOutputStreamContext().isFault());
296     }
297     public void testUserFaultDispatch() throws Exception JavaDoc {
298         QName JavaDoc qn = new QName JavaDoc("http://objectweb.org/hello_world_soap_http/types", "testDocLitFault");
299         TestEndpointImpl testEndpoint = new TestEndpointImpl(new NotAnnotatedGreeterImpl(),
300                                                              new QName JavaDoc[]{qn});
301         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
302         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
303         InputStream JavaDoc is = getClass().getResourceAsStream("resources/TestDocLitFaultReq.xml");
304         
305         TestInputStreamContext inCtx = new TestInputStreamContext(null);
306         inCtx.setInputStream(is);
307         serverBinding.testDispatch(inCtx, serverTransport);
308
309         assertNotNull(serverTransport.getOutputStreamContext());
310         assertTrue("Expecting a SOAP Fault", serverTransport.getOutputStreamContext().isFault());
311
312         TestOutputStreamContext osc = (TestOutputStreamContext)serverTransport.getOutputStreamContext();
313         ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(osc.getOutputStreamBytes());
314         checkUserFaultMessage(bais, NoSuchCodeLitFault.class, "TestException");
315     }
316     
317     public void testSystemFaultDispatch() throws Exception JavaDoc {
318         TestEndpointImpl testEndpoint = new TestEndpointImpl(new NotAnnotatedGreeterImpl(),
319                                                              new QName JavaDoc[]{});
320         TestServerBinding serverBinding = new TestServerBinding(bus, epr, testEndpoint, testEndpoint);
321         TestServerTransport serverTransport = new TestServerTransport(bus, epr);
322         InputStream JavaDoc is = getClass().getResourceAsStream("resources/BadSoapMessage.xml");
323         
324         TestInputStreamContext inCtx = new TestInputStreamContext(null);
325         inCtx.setInputStream(is);
326         serverBinding.testDispatch(inCtx, serverTransport);
327
328         assertNotNull(serverTransport.getOutputStreamContext());
329         assertTrue("Expecting a SOAP Fault", serverTransport.getOutputStreamContext().isFault());
330
331         TestOutputStreamContext osc = (TestOutputStreamContext)serverTransport.getOutputStreamContext();
332         ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(osc.getOutputStreamBytes());
333         checkSystemFaultMessage(bais);
334     }
335
336     private void checkSystemFaultMessage(ByteArrayInputStream JavaDoc bais) throws Exception JavaDoc {
337         SOAPMessage JavaDoc msg = MessageFactory.newInstance().createMessage(null, bais);
338         assertNotNull(msg);
339         Node JavaDoc xmlNode = msg.getSOAPBody();
340         assertNotNull(xmlNode);
341         assertEquals(1, xmlNode.getChildNodes().getLength());
342         
343         assertTrue(msg.getSOAPBody().hasFault());
344         
345         SOAPFault JavaDoc fault = msg.getSOAPBody().getFault();
346         assertNotNull(fault);
347         assertTrue(fault.hasChildNodes());
348         
349         //For Celtix Runtime Exceptions - SOAPFault will not have a Detail Node
350
Detail JavaDoc detail = fault.getDetail();
351         if (detail != null) {
352             assertFalse("Detail should be non-existent or empty", detail.hasChildNodes());
353         }
354     }
355     
356     private void checkUserFaultMessage(ByteArrayInputStream JavaDoc bais,
357                               Class JavaDoc<? extends Exception JavaDoc> clazz,
358                               String JavaDoc faultString) throws Exception JavaDoc {
359         
360         SOAPMessage JavaDoc msg = MessageFactory.newInstance().createMessage(null, bais);
361         assertNotNull(msg);
362         assertTrue(msg.getSOAPBody().hasFault());
363         SOAPFault JavaDoc fault = msg.getSOAPBody().getFault();
364         assertNotNull(fault);
365         
366         StringBuffer JavaDoc str = new StringBuffer JavaDoc(clazz.getName());
367         str.append(": ");
368         str.append(faultString);
369         assertEquals(str.toString(), fault.getFaultString());
370         assertTrue(fault.hasChildNodes());
371         Detail JavaDoc detail = fault.getDetail();
372         assertNotNull(detail);
373         
374         NodeList JavaDoc list = detail.getChildNodes();
375         assertEquals(1, list.getLength());
376         
377         WebFault wfAnnotation = clazz.getAnnotation(WebFault.class);
378         assertNotNull(wfAnnotation);
379         assertEquals(wfAnnotation.targetNamespace(), list.item(0).getNamespaceURI());
380         assertEquals(wfAnnotation.name(), list.item(0).getLocalName());
381     }
382     
383     class TestServerBinding extends SOAPServerBinding {
384
385         private QName JavaDoc qn;
386         
387         public TestServerBinding(Bus b, EndpointReferenceType ref, Endpoint ep,
388                                  ServerBindingEndpointCallback cbFactory) {
389             super(b, ref, cbFactory);
390         }
391
392         public ServerTransport getTransport(EndpointReferenceType ref) throws Exception JavaDoc {
393             return createTransport(ref);
394         }
395
396         public void testDispatch(InputStreamMessageContext inCtx, ServerTransport t) {
397             super.dispatch(inCtx, t);
398         }
399         
400         public QName JavaDoc getOperationName(MessageContext ctx) {
401             qn = super.getOperationName(ctx);
402             return qn;
403         }
404         
405         public QName JavaDoc getInvokedMethod() {
406             return qn;
407         }
408     }
409
410     class TestServerTransport implements ServerTransport {
411         private OutputStreamMessageContext osmc;
412         public TestServerTransport(Bus b, EndpointReferenceType ref) {
413         }
414
415         public void shutdown() {
416             //nothing to do
417
}
418
419         public OutputStreamMessageContext rebase(MessageContext context,
420                                                  EndpointReferenceType decoupledResponseEndpoint)
421             throws IOException JavaDoc {
422             return null;
423         }
424
425         public OutputStreamMessageContext createOutputStreamContext(MessageContext context)
426             throws IOException JavaDoc {
427             osmc = new TestOutputStreamContext(null, context);
428             return osmc;
429         }
430
431         public void finalPrepareOutputStreamContext(OutputStreamMessageContext context) throws IOException JavaDoc {
432         }
433         
434         public void postDispatch(MessageContext bindingContext,
435                                            OutputStreamMessageContext context) throws IOException JavaDoc {
436         }
437         
438         public void activate(ServerTransportCallback callback) throws IOException JavaDoc { }
439
440         public void deactivate() throws IOException JavaDoc { }
441         
442         public OutputStreamMessageContext getOutputStreamContext() {
443             return osmc;
444         }
445     }
446     
447     final class TestEndpointImpl extends javax.xml.ws.Endpoint implements ServerBindingEndpointCallback {
448
449         private final Object JavaDoc implementor;
450         private WebServiceProvider wsProvider;
451         private DataBindingCallback.Mode mode;
452         private Class JavaDoc<?> dataClazz;
453         private Map JavaDoc<QName JavaDoc, ServerDataBindingCallback> callbackMap
454             = new ConcurrentHashMap JavaDoc<QName JavaDoc, ServerDataBindingCallback>();
455         
456         TestEndpointImpl(Object JavaDoc impl, QName JavaDoc ops[]) {
457             implementor = impl;
458             mode = DataBindingCallback.Mode.PARTS;
459             initOpMap(ops);
460         }
461
462         TestEndpointImpl(Object JavaDoc impl,
463                          DataBindingCallback.Mode dataMode,
464                          Class JavaDoc<?> clazz,
465                          QName JavaDoc ops[]) {
466             implementor = impl;
467             mode = dataMode;
468             dataClazz = clazz;
469             initOpMap(ops);
470         }
471         
472         
473         private void initOpMap(QName JavaDoc ops[]) {
474             if (ops != null) {
475                 for (QName JavaDoc op : ops) {
476                     callbackMap.put(op, getDataBindingCallback(op, mode));
477                 }
478             } else {
479                 addMethods(implementor.getClass());
480             }
481         }
482         private void addMethods(Class JavaDoc<?> cls) {
483             if (cls == null) {
484                 return;
485             }
486             for (Method JavaDoc meth : cls.getMethods()) {
487                 WebMethod wm = meth.getAnnotation(WebMethod.class);
488                 if (wm != null) {
489                     QName JavaDoc op = new QName JavaDoc("", wm.operationName());
490                     ServerDataBindingCallback cb = getDataBindingCallback(op, mode);
491                     callbackMap.put(op, cb);
492                 }
493             }
494             for (Class JavaDoc<?> cls2 : cls.getInterfaces()) {
495                 addMethods(cls2);
496             }
497             addMethods(cls.getSuperclass());
498         }
499         
500         @SuppressWarnings JavaDoc("unchecked")
501         private ServerDataBindingCallback getDataBindingCallback(QName JavaDoc operationName,
502                                                                  Mode dataMode) {
503             if (dataMode == DataBindingCallback.Mode.PARTS) {
504                 return new JAXBDataBindingCallback(getMethod(operationName),
505                                                mode,
506                                                null,
507                                                null,
508                                                implementor);
509             }
510
511             return new ServerDynamicDataBindingCallback(dataClazz, mode, (Provider<?>)implementor);
512         }
513
514         public ServerDataBindingCallback getDataBindingCallback(QName JavaDoc operationName,
515                                                                 ObjectMessageContext objContext,
516                                                                 Mode dataMode) {
517             if (operationName == null) {
518                 return null;
519             }
520             return callbackMap.get(operationName);
521         }
522         
523         public Binding getBinding() {
524             return null;
525         }
526
527         public List JavaDoc<Handler> getHandlerChain() {
528             return null;
529         }
530
531         public Object JavaDoc getImplementor() {
532             return implementor;
533         }
534
535         public List JavaDoc<Source JavaDoc> getMetadata() {
536             return null;
537         }
538
539         public Executor JavaDoc getExecutor() {
540             return null;
541         }
542
543         public boolean isPublished() {
544             return false;
545         }
546
547         public void publish(Object JavaDoc serverContext) { }
548
549         public void publish(String JavaDoc address) { }
550
551         public void setHandlerChain(List JavaDoc<Handler> h) {
552         }
553
554         public void setMetadata(List JavaDoc<Source JavaDoc> m) {
555         }
556
557         public void setExecutor(Executor JavaDoc ex) {
558         }
559
560         public void stop() { }
561
562         @Override JavaDoc
563         public Map JavaDoc<String JavaDoc, Object JavaDoc> getProperties() {
564             // TODO Auto-generated method stub
565
return null;
566         }
567
568         @Override JavaDoc
569         public void setProperties(Map JavaDoc<String JavaDoc, Object JavaDoc> arg0) {
570             // TODO Auto-generated method stub
571

572         }
573
574         public Method JavaDoc getMethod(QName JavaDoc operationName) {
575             if (wsProvider != null) {
576                 try {
577                     return implementor.getClass().getDeclaredMethod(
578                                                      operationName.getLocalPart(), dataClazz);
579                 } catch (Exception JavaDoc ex) {
580                     //Ignore
581
}
582             }
583             return EndpointUtils.getMethod(implementor.getClass(), operationName);
584         }
585
586         public DataBindingCallback.Mode getServiceMode() {
587             return mode;
588         }
589
590         public WebServiceProvider getWebServiceProvider() {
591             if (wsProvider == null) {
592                 wsProvider = this.getImplementor().getClass().getAnnotation(WebServiceProvider.class);
593             }
594             return wsProvider;
595         }
596
597
598         public Map JavaDoc<QName JavaDoc, ? extends DataBindingCallback> getOperations() {
599             return callbackMap;
600         }
601
602         public Style getStyle() {
603             // TODO Auto-generated method stub
604
return Style.DOCUMENT;
605         }
606
607         public DataBindingCallback getFaultDataBindingCallback(ObjectMessageContext objContext) {
608             return new JAXBDataBindingCallback(null, DataBindingCallback.Mode.PARTS, null);
609         }
610
611     }
612     
613 }
614
Popular Tags