This commit is contained in:
Arjen Poutsma
2010-02-02 15:23:52 +00:00
parent 6da1403564
commit 52b3d2efef
6 changed files with 51 additions and 43 deletions

View File

@@ -18,7 +18,7 @@ package org.springframework.ws.server.endpoint.adapter;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.Properties;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
@@ -34,6 +34,7 @@ import org.springframework.ws.context.MessageContext;
import org.springframework.ws.server.endpoint.MethodEndpoint;
import org.springframework.ws.server.endpoint.annotation.XPathParam;
import org.springframework.xml.namespace.SimpleNamespaceContext;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -62,10 +63,10 @@ public class XPathParamAnnotationMethodEndpointAdapter extends AbstractMethodEnd
private XPathFactory xpathFactory;
private Properties namespaces;
private Map<String, String> namespaces;
/** Sets namespaces used in the XPath expression. Maps prefixes to namespaces. */
public void setNamespaces(Properties namespaces) {
public void setNamespaces(Map<String, String> namespaces) {
this.namespaces = namespaces;
}

View File

@@ -16,7 +16,7 @@
package org.springframework.ws.server.endpoint.mapping;
import java.util.Properties;
import java.util.Map;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@@ -29,6 +29,7 @@ import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.context.MessageContext;
import org.springframework.xml.xpath.XPathExpression;
import org.springframework.xml.xpath.XPathExpressionFactory;
import org.w3c.dom.Element;
/**
@@ -53,7 +54,7 @@ import org.w3c.dom.Element;
*
* @author Arjen Poutsma
* @see #setExpression(String)
* @see #setNamespaces(java.util.Properties)
* @see #setNamespaces(java.util.Map)
* @since 1.0.0
*/
public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping implements InitializingBean {
@@ -62,7 +63,7 @@ public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping
private XPathExpression expression;
private Properties namespaces;
private Map<String, String> namespaces;
private TransformerFactory transformerFactory;
@@ -72,7 +73,7 @@ public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping
}
/** Sets the namespaces bindings used in the expression. Keys are prefixes, values are namespaces. */
public void setNamespaces(Properties namespaces) {
public void setNamespaces(Map<String, String> namespaces) {
this.namespaces = namespaces;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2007 the original author or authors.
* Copyright 2005-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,10 +19,11 @@ package org.springframework.ws.soap.addressing.version;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -32,10 +33,6 @@ import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.springframework.util.StringUtils;
import org.springframework.ws.soap.SoapFault;
import org.springframework.ws.soap.SoapHeader;
@@ -52,6 +49,10 @@ import org.springframework.xml.transform.TransformerObjectSupport;
import org.springframework.xml.xpath.XPathExpression;
import org.springframework.xml.xpath.XPathExpressionFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* Abstract base class for {@link AddressingVersion} implementations. Uses {@link XPathExpression}s to retrieve
* addressing information.
@@ -82,8 +83,8 @@ public abstract class AbstractAddressingVersion extends TransformerObjectSupport
private final XPathExpression referenceParametersExpression;
protected AbstractAddressingVersion() {
Properties namespaces = new Properties();
namespaces.setProperty(getNamespacePrefix(), getNamespaceUri());
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put(getNamespacePrefix(), getNamespaceUri());
toExpression = createNormalizedExpression(getToName(), namespaces);
actionExpression = createNormalizedExpression(getActionName(), namespaces);
messageIdExpression = createNormalizedExpression(getMessageIdName(), namespaces);
@@ -105,17 +106,17 @@ public abstract class AbstractAddressingVersion extends TransformerObjectSupport
}
}
private XPathExpression createExpression(QName name, Properties namespaces) {
private XPathExpression createExpression(QName name, Map<String, String> namespaces) {
String expression = name.getPrefix() + ":" + name.getLocalPart();
return XPathExpressionFactory.createXPathExpression(expression, namespaces);
}
private XPathExpression createNormalizedExpression(QName name, Properties namespaces) {
private XPathExpression createNormalizedExpression(QName name, Map<String, String> namespaces) {
String expression = "normalize-space(" + name.getPrefix() + ":" + name.getLocalPart() + ")";
return XPathExpressionFactory.createXPathExpression(expression, namespaces);
}
private XPathExpression createChildrenExpression(QName name, Properties namespaces) {
private XPathExpression createChildrenExpression(QName name, Map<String, String> namespaces) {
String expression = name.getPrefix() + ":" + name.getLocalPart() + "/*";
return XPathExpressionFactory.createXPathExpression(expression, namespaces);
}

View File

@@ -16,9 +16,10 @@
package org.springframework.ws.transport.http;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.Source;
@@ -81,7 +82,7 @@ public class WsdlDefinitionHandlerAdapter extends TransformerObjectSupport imple
private static final Log logger = LogFactory.getLog(WsdlDefinitionHandlerAdapter.class);
private Properties expressionNamespaces = new Properties();
private Map<String, String> expressionNamespaces = new HashMap<String, String>();
private String locationExpression = DEFAULT_LOCATION_EXPRESSION;

View File

@@ -16,14 +16,13 @@
package org.springframework.ws.server.endpoint.adapter;
import java.util.Properties;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import junit.framework.TestCase;
import static org.easymock.EasyMock.*;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.context.DefaultMessageContext;
@@ -32,12 +31,16 @@ import org.springframework.ws.server.endpoint.MethodEndpoint;
import org.springframework.ws.server.endpoint.annotation.XPathParam;
import org.springframework.xml.transform.StringResult;
import org.springframework.xml.transform.StringSource;
import junit.framework.TestCase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import static org.easymock.EasyMock.*;
public class XPathParamAnnotationMethodEndpointAdapterTest extends TestCase {
private static final String CONTENTS = "<root><child><text>text</text><number>42.0</number></child></root>";
@@ -148,9 +151,9 @@ public class XPathParamAnnotationMethodEndpointAdapterTest extends TestCase {
replay(requestMock, factoryMock);
Properties namespaces = new Properties();
namespaces.setProperty("root", rootNamespace);
namespaces.setProperty("child", childNamespace);
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put("root", rootNamespace);
namespaces.put("child", childNamespace);
adapter.setNamespaces(namespaces);
MessageContext messageContext = new DefaultMessageContext(requestMock, factoryMock);

View File

@@ -17,21 +17,16 @@
package org.springframework.ws.soap.security.wss4j;
import java.io.InputStream;
import java.util.Properties;
import java.util.HashMap;
import java.util.Map;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.dom.DOMSource;
import junit.framework.TestCase;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.SOAP12Constants;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.ws.WebServiceMessage;
@@ -48,6 +43,12 @@ import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
import org.springframework.xml.transform.StringSource;
import org.springframework.xml.xpath.Jaxp13XPathTemplate;
import junit.framework.TestCase;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
public abstract class Wss4jTestCase extends TestCase {
protected MessageFactory saajSoap11MessageFactory;
@@ -66,17 +67,17 @@ public abstract class Wss4jTestCase extends TestCase {
}
saajSoap11MessageFactory = MessageFactory.newInstance();
saajSoap12MessageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
Properties namespaces = new Properties();
namespaces.setProperty("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.setProperty("wsse",
Map<String, String> namespaces = new HashMap<String, String>();
namespaces.put("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.put("wsse",
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
namespaces.setProperty("ds", "http://www.w3.org/2000/09/xmldsig#");
namespaces.setProperty("xenc", "http://www.w3.org/2001/04/xmlenc#");
namespaces.setProperty("wsse11", "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd");
namespaces.setProperty("echo", "http://www.springframework.org/spring-ws/samples/echo");
namespaces.setProperty("wsu",
namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
namespaces.put("xenc", "http://www.w3.org/2001/04/xmlenc#");
namespaces.put("wsse11", "http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd");
namespaces.put("echo", "http://www.springframework.org/spring-ws/samples/echo");
namespaces.put("wsu",
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
namespaces.setProperty("test", "http://test");
namespaces.put("test", "http://test");
xpathTemplate.setNamespaces(namespaces);
onSetup();
}