View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
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  		// does not handle any headers
51  		return null;
52  	}
53  
54  	@Override
55  	public void close(MessageContext context) {
56  		// no cleanup needed
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  }