KickJava   Java API By Example, From Geeks To Geeks.

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


1 package org.objectweb.celtix.bus.bindings.soap;
2
3 import java.lang.reflect.Array JavaDoc;
4 import java.lang.reflect.Method JavaDoc;
5
6 import javax.xml.namespace.QName JavaDoc;
7 import javax.xml.ws.Holder;
8
9 public final class SOAPMessageUtil {
10
11     private SOAPMessageUtil() {
12         // Utility class - never constructed
13
}
14     
15     public static Method JavaDoc getMethod(Class JavaDoc<?> clazz, String JavaDoc methodName) throws Exception JavaDoc {
16         Method JavaDoc[] declMethods = clazz.getDeclaredMethods();
17         for (Method JavaDoc method : declMethods) {
18             if (method.getName().equals(methodName)) {
19                 return method;
20             }
21         }
22         return null;
23     }
24
25     /* The method creates a object array based on the number of method parameters
26      * also creates holder objects for in-out and out params.
27      */

28     public static Object JavaDoc[] getMessageObjects(Method JavaDoc method) throws Exception JavaDoc {
29         int idx = 0;
30         Object JavaDoc[] methodArgs = (Object JavaDoc[])
31             Array.newInstance(Object JavaDoc.class, method.getParameterTypes().length);
32         for (Class JavaDoc<?> cls : method.getParameterTypes()) {
33             if (cls.isAssignableFrom(Holder.class)) {
34                 methodArgs[idx] = cls.newInstance();
35             }
36             idx++;
37         }
38
39         return methodArgs;
40     }
41
42     /* The method wraps inout, out method parameters into javax.xml.ws.Holder<T>
43      * and returns a array of objects.
44      */

45     
46     public static Object JavaDoc[] getMessageObjects(Method JavaDoc method, Object JavaDoc... args) throws Exception JavaDoc {
47         assert args.length == method.getParameterTypes().length;
48         int idx = 0;
49         Object JavaDoc[] methodArgs = (Object JavaDoc[])
50             Array.newInstance(Object JavaDoc.class, method.getParameterTypes().length);
51         for (Class JavaDoc<?> cls : method.getParameterTypes()) {
52             if (cls.isAssignableFrom(Holder.class)) {
53                 methodArgs[idx] = cls.newInstance();
54                 Holder.class.getField("value").set(methodArgs[idx], args[idx]);
55             } else {
56                 methodArgs[idx] = args[idx];
57             }
58             idx++;
59         }
60
61         return methodArgs;
62     }
63     
64     public static String JavaDoc createWrapDocLitSOAPMessage(QName JavaDoc wrapName, QName JavaDoc elName, String JavaDoc data) {
65         StringBuffer JavaDoc str = new StringBuffer JavaDoc();
66         
67         str.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
68         str.append("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" ");
69         str.append("xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" ");
70         str.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
71         str.append("<SOAP-ENV:Body>");
72
73         str.append("<ns4:" + wrapName.getLocalPart() + " xmlns:ns4=\"" + wrapName.getNamespaceURI() + "\">");
74         if (elName != null) {
75             str.append("<ns4:" + elName.getLocalPart() + ">");
76             str.append(data);
77             str.append("</ns4:" + elName.getLocalPart() + ">");
78         }
79         str.append("</ns4:" + wrapName.getLocalPart() + ">");
80         
81         str.append("</SOAP-ENV:Body>");
82         str.append("</SOAP-ENV:Envelope>");
83         
84         return str.toString();
85     }
86     
87     public static String JavaDoc createRPCLitSOAPMessage(QName JavaDoc operation, QName JavaDoc elName, String JavaDoc data) {
88         StringBuffer JavaDoc str = new StringBuffer JavaDoc();
89         
90         str.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
91         str.append("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" ");
92         str.append("xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" ");
93         str.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
94         str.append("<SOAP-ENV:Body>");
95
96         str.append("<ns4:" + operation.getLocalPart());
97         str.append(" xmlns:ns4=\"" + operation.getNamespaceURI() + "\">");
98         if (elName != null) {
99             str.append("<" + elName.getLocalPart() + ">");
100             str.append(data);
101             str.append("</" + elName.getLocalPart() + ">");
102         }
103         str.append("</ns4:" + operation.getLocalPart() + ">");
104         
105         str.append("</SOAP-ENV:Body>");
106         str.append("</SOAP-ENV:Envelope>");
107         
108         return str.toString();
109     }
110     
111     public static String JavaDoc createBareDocLitSOAPMessage(QName JavaDoc elName, String JavaDoc data) {
112         StringBuffer JavaDoc str = new StringBuffer JavaDoc();
113         
114         str.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
115         str.append("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" ");
116         str.append("xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" ");
117         str.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
118         str.append("<SOAP-ENV:Header/>");
119         str.append("<SOAP-ENV:Body>");
120
121         str.append("<ns4:" + elName.getLocalPart() + " xmlns:ns4=\"" + elName.getNamespaceURI() + "\">");
122         str.append(data);
123         str.append("</ns4:" + elName.getLocalPart() + ">");
124         
125         str.append("</SOAP-ENV:Body>");
126         str.append("</SOAP-ENV:Envelope>");
127         
128         return str.toString();
129     }
130 }
131
Popular Tags