1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.miloss.fgsms.agents;
21
22 import java.util.Collections;
23 import java.util.Set;
24
25 import javax.xml.namespace.QName;
26 import javax.xml.soap.SOAPException;
27 import javax.xml.ws.handler.MessageContext;
28 import javax.xml.ws.handler.soap.SOAPHandler;
29 import javax.xml.ws.handler.soap.SOAPMessageContext;
30 import org.miloss.fgsms.common.Constants;
31 import org.apache.log4j.Level;
32 import org.miloss.fgsms.common.Logger;;
33
34
35
36
37
38
39 public class JAXWSGenericAgent implements SOAPHandler<SOAPMessageContext> {
40
41 private Logger log;
42
43 public JAXWSGenericAgent() {
44 log = Logger.getLogger(org.miloss.fgsms.common.Constants.LoggerName);
45 }
46
47 public boolean handleMessage(SOAPMessageContext messageContext) {
48
49
50 Boolean isRequest = !(Boolean) messageContext.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY);
51
52 if (isRequest) {
53
54 try {
55 ProcessInboundMessage(messageContext);
56 } catch (SOAPException ex) {
57 log.log(Level.WARN, "fgsms Error processing inbound message", ex);
58 }
59 } else {
60 try {
61
62 ProcessOutboundMessage(messageContext, false);
63 } catch (SOAPException ex) {
64 log.log(Level.WARN, "fgsms Error processing outbound message", ex);
65 }
66
67 }
68 return true;
69 }
70
71 public Set<QName> getHeaders() {
72 return Collections.EMPTY_SET;
73 }
74
75 public boolean handleFault(SOAPMessageContext messageContext) {
76 try {
77 ProcessOutboundMessage(messageContext, true);
78 } catch (SOAPException ex) {
79 log.log(Level.WARN, "fgsms error processing fault message", ex);
80 }
81 return true;
82 }
83
84 public void close(MessageContext context) {
85 }
86
87 private void ProcessInboundMessage(SOAPMessageContext messageContext) throws SOAPException {
88
89 JAXWSGenericCommonMessageHandler.processRequest(messageContext, false, this.getClass().getCanonicalName());
90
91 }
92
93 private void ProcessOutboundMessage(SOAPMessageContext messageContext, boolean fault) throws SOAPException {
94 JAXWSGenericCommonMessageHandler.processResponse(messageContext, fault, false, this.getClass().getCanonicalName());
95
96 }
97 }