KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > league > ws > WSLogger


1 package league.ws;
2
3 /**
4  * This is the implementation for the WSLoggerSOAP Message Handler.
5  * Created Jun 4, 2005 12:39:14 AM
6  * @author jungi
7  */

8 //<editor-fold defaultstate="collapsed" desc="import statements. Click the + sign on the left to edit the code.">
9
import javax.xml.rpc.handler.MessageContext JavaDoc;
10 import javax.xml.rpc.handler.HandlerInfo JavaDoc;
11 import javax.xml.rpc.handler.soap.SOAPMessageContext JavaDoc;
12 import javax.xml.namespace.QName JavaDoc;
13 import javax.xml.soap.SOAPElement JavaDoc;
14 import javax.xml.soap.SOAPMessage JavaDoc;
15 import javax.xml.soap.SOAPPart JavaDoc;
16 import javax.xml.soap.SOAPEnvelope JavaDoc;
17 import javax.xml.soap.SOAPHeader JavaDoc;
18 import javax.xml.soap.SOAPBody JavaDoc;
19 import java.util.Date JavaDoc;
20 //</editor-fold>
21
public class WSLogger extends javax.xml.rpc.handler.GenericHandler JavaDoc {
22     // TODO Change and enhance the handle methods to suit individual needs.
23

24     private QName JavaDoc[] headers;
25     
26     public void init(HandlerInfo JavaDoc config) {
27         headers = config.getHeaders();
28     }
29     
30     public javax.xml.namespace.QName JavaDoc[] getHeaders() {
31         return headers;
32     }
33     
34     // Currently prints out the contents of the SOAP body plus some date information.
35
public boolean handleRequest(MessageContext JavaDoc context) {
36         try{
37             SOAPMessageContext JavaDoc smc = (SOAPMessageContext JavaDoc) context;
38             SOAPMessage JavaDoc msg = smc.getMessage();
39             SOAPPart JavaDoc sp = msg.getSOAPPart();
40             SOAPEnvelope JavaDoc se = sp.getEnvelope();
41             SOAPHeader JavaDoc shd = se.getHeader();
42             
43             SOAPBody JavaDoc sb = se.getBody();
44             java.util.Iterator JavaDoc childElems = sb.getChildElements();
45             SOAPElement JavaDoc child;
46             StringBuffer JavaDoc message = new StringBuffer JavaDoc();
47             while (childElems.hasNext()) {
48                 child = (SOAPElement JavaDoc) childElems.next();
49                 message.append(new Date JavaDoc().toString() + "--");
50                 formLogMessage(child, message);
51             }
52             
53             System.out.println("Log message: " + message.toString());
54         } catch(Exception JavaDoc e){
55             e.printStackTrace();
56         }
57         return true;
58     }
59     
60     public boolean handleResponse(MessageContext JavaDoc context) {
61         return true;
62     }
63     
64     public boolean handleFault(MessageContext JavaDoc context) {
65         return true;
66     }
67     
68     public void destroy() {
69     }
70     
71     private void formLogMessage(SOAPElement JavaDoc child, StringBuffer JavaDoc message) {
72         message.append(child.getElementName().getLocalName());
73         message.append(child.getValue() != null ? ":" + child.getValue() + " " : " ");
74         
75         try{
76             java.util.Iterator JavaDoc childElems = child.getChildElements();
77             while (childElems.hasNext()) {
78                 Object JavaDoc c = childElems.next();
79                 if(c instanceof SOAPElement JavaDoc)
80                     formLogMessage((SOAPElement JavaDoc)c, message);
81             }
82         }catch(Exception JavaDoc e){
83             e.printStackTrace();
84         }
85     }
86 }
87
Popular Tags