KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > jaxws > io > SOAPBodyDataWriter


1 package org.objectweb.celtix.bus.jaxws.io;
2
3
4
5 import javax.xml.bind.JAXBContext;
6 import javax.xml.bind.Marshaller;
7 import javax.xml.namespace.QName JavaDoc;
8 import javax.xml.parsers.DocumentBuilder JavaDoc;
9 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
10 import javax.xml.parsers.ParserConfigurationException JavaDoc;
11 import javax.xml.soap.SOAPBody JavaDoc;
12 import javax.xml.transform.dom.DOMResult JavaDoc;
13 import javax.xml.transform.dom.DOMSource JavaDoc;
14 import javax.xml.transform.sax.SAXSource JavaDoc;
15 import javax.xml.transform.stream.StreamSource JavaDoc;
16
17 import org.w3c.dom.Document JavaDoc;
18
19 import org.objectweb.celtix.bindings.DataWriter;
20 import org.objectweb.celtix.bus.jaxws.DynamicDataBindingCallback;
21 import org.objectweb.celtix.context.ObjectMessageContext;
22
23 public class SOAPBodyDataWriter<T> implements DataWriter<T> {
24
25     protected SOAPBody JavaDoc dest;
26     final DynamicDataBindingCallback callback;
27     
28     public SOAPBodyDataWriter(DynamicDataBindingCallback cb) {
29         callback = cb;
30     }
31
32     public void write(Object JavaDoc obj, T output) {
33         
34         dest = (SOAPBody JavaDoc)output;
35         try {
36             if (DOMSource JavaDoc.class.isAssignableFrom(obj.getClass())) {
37                 DOMSource JavaDoc domSource = (DOMSource JavaDoc)obj;
38                 dest.addDocument((Document JavaDoc)domSource.getNode());
39             } else if (SAXSource JavaDoc.class.isAssignableFrom(obj.getClass())) {
40                 SAXSource JavaDoc saxSource = (SAXSource JavaDoc)obj;
41                 Document JavaDoc doc = getDocBuilder().parse(saxSource.getInputSource());
42                 dest.addDocument(doc);
43             } else if (StreamSource JavaDoc.class.isAssignableFrom(obj.getClass())) {
44                 StreamSource JavaDoc streamSource = (StreamSource JavaDoc)obj;
45                 Document JavaDoc doc = getDocBuilder().parse(streamSource.getInputStream());
46                 dest.addDocument(doc);
47             } else if (Object JavaDoc.class.isAssignableFrom(obj.getClass())) {
48                 
49                 JAXBContext context = callback.getJAXBContext();
50                 
51                 Marshaller u = context.createMarshaller();
52                 u.setProperty(Marshaller.JAXB_ENCODING , "UTF-8");
53                 u.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
54                 u.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
55                 
56                 DOMResult JavaDoc domResult = new DOMResult JavaDoc();
57                 u.marshal(obj, domResult);
58                 dest.addDocument((Document JavaDoc)domResult.getNode());
59                 
60             }
61         } catch (Exception JavaDoc e) {
62             // TODO Auto-generated catch block
63
e.printStackTrace();
64         }
65         
66     }
67
68     public void write(Object JavaDoc obj, QName JavaDoc elName, T output) {
69         //Complete
70
}
71
72     public void writeWrapper(ObjectMessageContext objCtx, boolean isOutbound, T output) {
73         // Complete
74
}
75     
76     private DocumentBuilder JavaDoc getDocBuilder() throws ParserConfigurationException JavaDoc {
77         
78         DocumentBuilderFactory JavaDoc dbf = DocumentBuilderFactory.newInstance();
79         dbf.setNamespaceAware(true);
80         return dbf.newDocumentBuilder();
81         
82     }
83
84 }
85
Popular Tags