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

View File

@@ -16,7 +16,7 @@
package org.springframework.ws.server.endpoint.mapping; package org.springframework.ws.server.endpoint.mapping;
import java.util.Properties; import java.util.Map;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
@@ -29,6 +29,7 @@ import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.context.MessageContext; import org.springframework.ws.context.MessageContext;
import org.springframework.xml.xpath.XPathExpression; import org.springframework.xml.xpath.XPathExpression;
import org.springframework.xml.xpath.XPathExpressionFactory; import org.springframework.xml.xpath.XPathExpressionFactory;
import org.w3c.dom.Element; import org.w3c.dom.Element;
/** /**
@@ -53,7 +54,7 @@ import org.w3c.dom.Element;
* *
* @author Arjen Poutsma * @author Arjen Poutsma
* @see #setExpression(String) * @see #setExpression(String)
* @see #setNamespaces(java.util.Properties) * @see #setNamespaces(java.util.Map)
* @since 1.0.0 * @since 1.0.0
*/ */
public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping implements InitializingBean { public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping implements InitializingBean {
@@ -62,7 +63,7 @@ public class XPathPayloadEndpointMapping extends AbstractMapBasedEndpointMapping
private XPathExpression expression; private XPathExpression expression;
private Properties namespaces; private Map<String, String> namespaces;
private TransformerFactory transformerFactory; 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. */ /** 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; 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Properties; import java.util.Map;
import javax.xml.namespace.QName; import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; 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.DOMResult;
import javax.xml.transform.dom.DOMSource; 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.util.StringUtils;
import org.springframework.ws.soap.SoapFault; import org.springframework.ws.soap.SoapFault;
import org.springframework.ws.soap.SoapHeader; 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.XPathExpression;
import org.springframework.xml.xpath.XPathExpressionFactory; 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 * Abstract base class for {@link AddressingVersion} implementations. Uses {@link XPathExpression}s to retrieve
* addressing information. * addressing information.
@@ -82,8 +83,8 @@ public abstract class AbstractAddressingVersion extends TransformerObjectSupport
private final XPathExpression referenceParametersExpression; private final XPathExpression referenceParametersExpression;
protected AbstractAddressingVersion() { protected AbstractAddressingVersion() {
Properties namespaces = new Properties(); Map<String, String> namespaces = new HashMap<String, String>();
namespaces.setProperty(getNamespacePrefix(), getNamespaceUri()); namespaces.put(getNamespacePrefix(), getNamespaceUri());
toExpression = createNormalizedExpression(getToName(), namespaces); toExpression = createNormalizedExpression(getToName(), namespaces);
actionExpression = createNormalizedExpression(getActionName(), namespaces); actionExpression = createNormalizedExpression(getActionName(), namespaces);
messageIdExpression = createNormalizedExpression(getMessageIdName(), 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(); String expression = name.getPrefix() + ":" + name.getLocalPart();
return XPathExpressionFactory.createXPathExpression(expression, namespaces); 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() + ")"; String expression = "normalize-space(" + name.getPrefix() + ":" + name.getLocalPart() + ")";
return XPathExpressionFactory.createXPathExpression(expression, namespaces); 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() + "/*"; String expression = name.getPrefix() + ":" + name.getLocalPart() + "/*";
return XPathExpressionFactory.createXPathExpression(expression, namespaces); return XPathExpressionFactory.createXPathExpression(expression, namespaces);
} }

View File

@@ -16,9 +16,10 @@
package org.springframework.ws.transport.http; package org.springframework.ws.transport.http;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.Source; 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 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; private String locationExpression = DEFAULT_LOCATION_EXPRESSION;

View File

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

View File

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