@Test
 public void testQNameIncludeEverythingExcludeEverything() throws Exception {
   _regexContextMapper.setIncludeNamespaces(".*");
   _regexContextMapper.setExcludeNamespaces(".*");
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "banana")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "banana")));
 }
 @Test
 public void testQNameInclude2Exclude1() throws Exception {
   _regexContextMapper.setIncludeNamespaces("urn:.*:2.0");
   _regexContextMapper.setExcludeNamespaces("urn:.*:1.0");
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "foo")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "foo")));
 }
 @Test
 public void testQNameFooExcludeTxt() throws Exception {
   _regexContextMapper.setIncludeNamespaces("urn:foo:.*");
   _regexContextMapper.setExcludes(".*.txt");
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "bar.xml")));
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "bar.pdf")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "bar.txt")));
 }
 @Test
 public void testQNameIncludeFooIncludeBar() throws Exception {
   _regexContextMapper.setIncludeNamespaces("urn:foo:1.0");
   _regexContextMapper.setIncludes("bar");
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "bar")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "banana")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "bar")));
 }
 @Test
 public void testMixedIncludesExcludes() throws Exception {
   _regexContextMapper.setIncludes("david, tom.*");
   _regexContextMapper.setExcludes("keith");
   _regexContextMapper.setIncludeNamespaces("urn:.*:2.0,urn:.*:3.0");
   _regexContextMapper.setExcludeNamespaces("urn:.*:3.0");
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "tomc")));
   assertTrue(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "tomf")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:1.0", "tomc")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:3.0", "david")));
   assertFalse(_regexContextMapper.matches(XMLHelper.createQName("urn:foo:2.0", "keith")));
 }
  @Test
  public void testCopyNamespacesSOAP11() throws Exception {
    _composer.setCopyNamespaces(true);
    SOAPMessage soapMessage =
        SOAPUtil.createMessage(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING);
    soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("foobarns", "urn:foobarns");
    soapMessage.getSOAPBody().addBodyElement(new QName("urn:test", "foobar"));
    logger.info(
        String.format("before compose:[\n%s]", XMLHelper.toPretty(soapMessage.getSOAPPart())));

    SOAPBindingData sbd = new SOAPBindingData(soapMessage);
    Node res = _composer.compose(sbd, _exchange).getContent(Node.class);
    logger.info(String.format("after compose:[\n%s]", XMLHelper.toPretty(res)));
    String envPrefix = soapMessage.getSOAPPart().getEnvelope().getPrefix();
    String envNS = soapMessage.getSOAPPart().getEnvelope().getNamespaceURI(envPrefix);
    String resNS = res.lookupNamespaceURI(envPrefix);
    Assert.assertEquals(envNS, resNS);
    Assert.assertEquals("urn:foobarns", res.lookupNamespaceURI("foobarns"));
  }
 @Override
 public void mapTo(Context context, SOAPBindingData target) throws Exception {
   SOAPMessage soapMessage = target.getSOAPMessage();
   MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
   SOAPHeader soapHeader = soapMessage.getSOAPHeader();
   for (Property property : context.getProperties(Scope.IN)) {
     Object value = property.getValue();
     if (value != null) {
       String name = property.getName();
       QName qname = XMLHelper.createQName(name);
       boolean qualifiedForSoapHeader = Strings.trimToNull(qname.getNamespaceURI()) != null;
       if (qualifiedForSoapHeader && matches(qname)) {
         if (value instanceof Node) {
           Node domNode = soapHeader.getOwnerDocument().importNode((Node) value, true);
           soapHeader.appendChild(domNode);
         } else if (value instanceof Configuration) {
           Element configElement = new ElementPuller().pull(new StringReader(value.toString()));
           Node configNode = soapHeader.getOwnerDocument().importNode(configElement, true);
           soapHeader.appendChild(configNode);
         } else {
           String v = value.toString();
           if (SOAPHeadersType.XML.equals(getSOAPHeadersType())) {
             try {
               Element xmlElement = new ElementPuller().pull(new StringReader(v));
               Node xmlNode = soapHeader.getOwnerDocument().importNode(xmlElement, true);
               soapHeader.appendChild(xmlNode);
             } catch (Throwable t) {
               soapHeader.addChildElement(qname).setValue(v);
             }
           } else {
             soapHeader.addChildElement(qname).setValue(v);
           }
         }
       } else {
         if (matches(name)) {
           mimeHeaders.addHeader(name, String.valueOf(value));
         }
       }
     }
   }
 }