1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.common.ws.handler;
17
18 import java.io.PrintStream;
19 import java.util.Set;
20
21 import javax.xml.namespace.QName;
22 import javax.xml.ws.handler.MessageContext;
23 import javax.xml.ws.handler.soap.SOAPHandler;
24 import javax.xml.ws.handler.soap.SOAPMessageContext;
25
26 import org.apache.log4j.Logger;
27
28 public class DebugHandler implements SOAPHandler<SOAPMessageContext> {
29
30 final Logger logger = Logger.getLogger(DebugHandler.class);
31
32 private PrintStream err;
33 private PrintStream out;
34
35 public DebugHandler() {
36 this(System.out, System.err);
37 }
38
39 public DebugHandler(PrintStream ps) {
40 this(ps, ps);
41 }
42
43 public DebugHandler(PrintStream out, PrintStream err) {
44 this.out = out;
45 this.err = err;
46 }
47
48 @Override
49 public Set<QName> getHeaders() {
50
51 return null;
52 }
53
54 @Override
55 public void close(MessageContext context) {
56
57 }
58
59 @Override
60 public boolean handleFault(SOAPMessageContext context) {
61 return this.printMessage(context, this.err);
62 }
63
64 @Override
65 public boolean handleMessage(SOAPMessageContext context) {
66 return this.printMessage(context, this.out);
67 }
68
69 private boolean printMessage(SOAPMessageContext context, PrintStream ps) {
70 String message = "DebugHandler ";
71
72 Boolean out = (Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);
73 if(out.booleanValue())
74 message += "Out: ";
75 else
76 message += "In: ";
77
78 ps.print(message);
79
80 try {
81 context.getMessage().writeTo(ps);
82 ps.println();
83 }
84 catch(Exception ex) {
85 logger.error(this.err, ex);
86 }
87
88 return true;
89 }
90
91 }