KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > systest > ws > addressing > MAPVerifier


1 package org.objectweb.celtix.systest.ws.addressing;
2
3
4 import java.util.ArrayList JavaDoc;
5 import java.util.HashMap JavaDoc;
6 import java.util.List JavaDoc;
7 import java.util.Map JavaDoc;
8
9 import javax.xml.ws.handler.LogicalHandler;
10 import javax.xml.ws.handler.LogicalMessageContext;
11 import javax.xml.ws.handler.MessageContext;
12
13 import org.objectweb.celtix.bus.ws.addressing.AddressingPropertiesImpl;
14 import org.objectweb.celtix.bus.ws.addressing.ContextUtils;
15 import org.objectweb.celtix.bus.ws.addressing.Names;
16 import static org.objectweb.celtix.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND;
17 import static org.objectweb.celtix.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_OUTBOUND;
18
19
20 /**
21  * Verifies presence of MAPs in the context.
22  */

23 public class MAPVerifier implements LogicalHandler<LogicalMessageContext> {
24     VerificationCache verificationCache;
25     List JavaDoc<String JavaDoc> expectedExposedAs = new ArrayList JavaDoc<String JavaDoc>();
26     private Map JavaDoc<String JavaDoc, Object JavaDoc> mapProperties;
27
28     public MAPVerifier() {
29         mapProperties = new HashMap JavaDoc<String JavaDoc, Object JavaDoc>();
30         mapProperties.put(MAPTest.INBOUND_KEY, CLIENT_ADDRESSING_PROPERTIES_INBOUND);
31         mapProperties.put(MAPTest.OUTBOUND_KEY, CLIENT_ADDRESSING_PROPERTIES_OUTBOUND);
32     }
33     
34     public void init(Map JavaDoc<String JavaDoc, Object JavaDoc> params) {
35         if (params != null && params.size() > 0) {
36             mapProperties = params;
37         }
38     }
39
40     public boolean handleMessage(LogicalMessageContext context) {
41         verify(context);
42         return true;
43     }
44
45     public boolean handleFault(LogicalMessageContext context) {
46         verify(context);
47         return true;
48     }
49
50     public void close(MessageContext context) {
51     }
52
53     public void destroy() {
54     }
55
56     private void verify(LogicalMessageContext context) {
57         boolean isOutbound = ContextUtils.isOutbound(context);
58         String JavaDoc mapProperty =
59             (String JavaDoc)mapProperties.get(isOutbound
60                                       ? MAPTest.OUTBOUND_KEY
61                                       : MAPTest.INBOUND_KEY);
62         AddressingPropertiesImpl maps =
63             (AddressingPropertiesImpl)context.get(mapProperty);
64         if (ContextUtils.isRequestor(context)) {
65             if (isOutbound) {
66                 String JavaDoc exposeAs = getExpectedExposeAs(false);
67                 if (exposeAs != null) {
68                     maps.exposeAs(exposeAs);
69                 }
70             } else {
71                 String JavaDoc exposeAs = getExpectedExposeAs(true);
72                 String JavaDoc expected = exposeAs != null
73                                   ? exposeAs
74                                   : Names.WSA_NAMESPACE_NAME;
75                 if (maps.getNamespaceURI() != expected) {
76                     verificationCache.put("Incoming version mismatch"
77                                           + " expected: " + expected
78                                           + " got: " + maps.getNamespaceURI());
79                 }
80                 exposeAs = null;
81             }
82         }
83         verificationCache.put(MAPTest.verifyMAPs(maps, this));
84     }
85     
86     private String JavaDoc getExpectedExposeAs(boolean remove) {
87         int size = expectedExposedAs.size();
88         return size == 0
89                 ? null
90                 : remove
91                   ? expectedExposedAs.remove(size - 1)
92                   : expectedExposedAs.get(size - 1);
93     }
94     
95     public void setVerificationCache(VerificationCache cache) {
96         verificationCache = cache;
97     }
98     
99     public void addToExpectedExposedAs(String JavaDoc str) {
100         expectedExposedAs.add(str);
101     }
102 }
103
Popular Tags