| 1 package org.objectweb.celtix.systest.ws.addressing; 2 3 4 import java.util.ArrayList ; 5 import java.util.HashMap ; 6 import java.util.List ; 7 import java.util.Map ; 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 23 public class MAPVerifier implements LogicalHandler<LogicalMessageContext> { 24 VerificationCache verificationCache; 25 List <String > expectedExposedAs = new ArrayList <String >(); 26 private Map <String , Object > mapProperties; 27 28 public MAPVerifier() { 29 mapProperties = new HashMap <String , Object >(); 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 <String , Object > 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 mapProperty = 59 (String )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 exposeAs = getExpectedExposeAs(false); 67 if (exposeAs != null) { 68 maps.exposeAs(exposeAs); 69 } 70 } else { 71 String exposeAs = getExpectedExposeAs(true); 72 String 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 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 str) { 100 expectedExposedAs.add(str); 101 } 102 } 103 | Popular Tags |