JBossWS SVN: r2787 - in trunk/jbossws-core/src/java/org/jboss/ws/core: soap and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-04-11 06:36:03 -0400 (Wed, 11 Apr 2007)
New Revision: 2787
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/client/RemotingConnectionImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java
Log:
Align exception handling with SAAJ API
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/client/RemotingConnectionImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/client/RemotingConnectionImpl.java 2007-04-11 10:35:16 UTC (rev 2786)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/client/RemotingConnectionImpl.java 2007-04-11 10:36:03 UTC (rev 2787)
@@ -23,32 +23,30 @@
// $Id$
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.SocketTimeoutException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.rpc.Stub;
-import javax.xml.soap.MimeHeader;
-import javax.xml.soap.MimeHeaders;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.addressing.EndpointReference;
-
import org.jboss.logging.Logger;
import org.jboss.remoting.Client;
import org.jboss.remoting.InvokerLocator;
import org.jboss.remoting.marshal.MarshalFactory;
import org.jboss.remoting.marshal.Marshaller;
import org.jboss.remoting.marshal.UnMarshaller;
-import org.jboss.ws.WSException;
import org.jboss.ws.core.MessageAbstraction;
import org.jboss.ws.core.MessageTrace;
import org.jboss.ws.core.StubExt;
import org.jboss.ws.core.WSTimeoutException;
+import javax.xml.rpc.Stub;
+import javax.xml.soap.MimeHeader;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.addressing.EndpointReference;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
/**
* SOAPConnection implementation
*
@@ -121,7 +119,7 @@
throw new IllegalArgumentException("Given endpoint cannot be null");
if (closed)
- throw new WSException("Connection is already closed");
+ throw new IOException("Connection is already closed");
Object timeout = null;
String targetAddress;
@@ -160,23 +158,14 @@
MessageTrace.traceMessage("Outgoing Request Message", reqMessage);
MessageAbstraction resMessage = null;
- try
+
+ if (oneway == true)
{
- if (oneway == true)
- {
- client.invokeOneway(reqMessage, metadata, false);
- }
- else
- {
- resMessage = (MessageAbstraction)client.invoke(reqMessage, metadata);
- }
+ client.invokeOneway(reqMessage, metadata, false);
}
- catch (RuntimeException rte)
+ else
{
- Throwable cause = rte.getCause();
- if (timeout != null && cause instanceof SocketTimeoutException)
- throw new WSTimeoutException("Timeout after: " + timeout + "ms", new Long(timeout.toString()));
- else throw rte;
+ resMessage = (MessageAbstraction)client.invoke(reqMessage, metadata);
}
// Disconnect the remoting client
@@ -190,12 +179,15 @@
return resMessage;
}
- catch (RuntimeException rte)
+ catch(SocketTimeoutException se)
{
- throw rte;
+ if(timeout!=null)
+ throw new WSTimeoutException("Timeout after: " + timeout + "ms", new Long(timeout.toString()));
+ else
+ throw new IOException(se.getMessage());
}
catch (Throwable th)
- {
+ {
IOException io = new IOException("Could not transmit message");
io.initCause(th);
throw io;
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java 2007-04-11 10:35:16 UTC (rev 2786)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPConnectionImpl.java 2007-04-11 10:36:03 UTC (rev 2787)
@@ -105,11 +105,7 @@
{
MessageAbstraction resMessage = remotingConnection.invoke((SOAPMessageImpl)reqMessage, endpoint, oneway);
return resMessage;
- }
- catch (RuntimeException rte)
- {
- throw rte;
- }
+ }
catch (Exception ex)
{
Throwable cause = ex.getCause();
17 years
JBossWS SVN: r2786 - trunk/jbossws-core/src/java/org/jboss/ws/core/soap.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-04-11 06:35:16 -0400 (Wed, 11 Apr 2007)
New Revision: 2786
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java
Log:
Fix namespace validation
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java 2007-04-10 16:20:15 UTC (rev 2785)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java 2007-04-11 10:35:16 UTC (rev 2786)
@@ -57,9 +57,9 @@
/** Add a SOAPHeaderElement as a child of this SOAPHeader instance.
*/
public SOAPElement addChildElement(SOAPElement child) throws SOAPException
- {
+ {
QName qname = child.getElementQName();
- if (qname == null || qname.getNamespaceURI().length() == 0 || qname.getPrefix().length() == 0)
+ if (qname == null || qname.getNamespaceURI().length() == 0)
throw new SOAPException("Invalid SOAPHeaderElement name: " + qname);
// Check that we get a SOAPHeaderElement
17 years
JBossWS SVN: r2785 - in trunk/jbossws-core/src: java/org/jboss/ws/core/jaxws/client and 3 other directories.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-04-10 12:20:15 -0400 (Tue, 10 Apr 2007)
New Revision: 2785
Added:
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchBinding.java
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchHTTPBinding.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchSOAPBinding.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/config/EndpointFeature.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
trunk/jbossws-core/src/resources/jbossws.sar/META-INF/standard-jaxws-client-config.xml
Log:
Fix dispatch validation
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -68,6 +68,13 @@
initDefaultMimeHeaders();
}
+ // TCL requirement
+ public boolean doValidate()
+ {
+ this.xmlFragment.toElement();
+ return true;
+ }
+
private void initDefaultMimeHeaders()
{
mimeHeaders.setHeader(MimeConstants.CONTENT_TYPE, MimeConstants.TYPE_XML_UTF8);
Added: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchBinding.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchBinding.java (rev 0)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchBinding.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.core.jaxws.client;
+
+import org.jboss.ws.metadata.config.Configurable;
+
+import java.util.Observable;
+
+public abstract class DispatchBinding implements Configurable
+{
+ protected boolean validateDispatch;
+
+ public boolean isValidateDispatch()
+ {
+ return validateDispatch;
+ }
+
+ public void setValidateDispatch(boolean validateDispatch)
+ {
+ this.validateDispatch = validateDispatch;
+ }
+
+
+ public void update(Observable o, Object arg)
+ {
+ // todo
+ }
+}
Property changes on: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchBinding.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchHTTPBinding.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchHTTPBinding.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchHTTPBinding.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -23,21 +23,18 @@
// $Id$
-import java.io.ByteArrayOutputStream;
+import org.jboss.logging.Logger;
+import org.jboss.ws.core.HTTPMessageImpl;
+import org.jboss.ws.core.MessageAbstraction;
+import org.jboss.ws.core.jaxrpc.binding.BufferedStreamResult;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.ws.WebServiceException;
import javax.xml.ws.Service.Mode;
+import javax.xml.ws.WebServiceException;
-import org.jboss.logging.Logger;
-import org.jboss.ws.core.HTTPMessageImpl;
-import org.jboss.ws.core.MessageAbstraction;
-import org.jboss.ws.core.jaxrpc.binding.BufferedStreamResult;
-
/**
* The Dispatch interface provides support for the dynamic invocation of a service endpoint operations.
* The javax.xml.ws.Service interface acts as a factory for the creation of Dispatch instances.
@@ -45,7 +42,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public class DispatchHTTPBinding
+public class DispatchHTTPBinding extends DispatchBinding
{
// provide logging
private final Logger log = Logger.getLogger(DispatchHTTPBinding.class);
@@ -70,6 +67,8 @@
{
Source source = (Source)obj;
reqMsg = new HTTPMessageImpl(source);
+ if(validateDispatch)
+ reqMsg.doValidate();
}
else if (jaxbContext != null)
{
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -45,11 +45,13 @@
import org.jboss.logging.Logger;
import org.jboss.util.NotImplementedException;
import org.jboss.ws.core.MessageAbstraction;
+import org.jboss.ws.core.ConfigProvider;
import org.jboss.ws.core.client.HTTPRemotingConnection;
import org.jboss.ws.core.client.RemotingConnection;
import org.jboss.ws.core.client.SOAPRemotingConnection;
import org.jboss.ws.core.jaxws.binding.BindingProviderImpl;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
+import org.jboss.ws.metadata.config.ConfigurationProvider;
/**
* The Dispatch interface provides support for the dynamic invocation of a service endpoint operations.
@@ -152,9 +154,9 @@
public void invokeOneWay(T msg)
{
- MessageAbstraction reqMsg = getRequestMessage(msg);
try
{
+ MessageAbstraction reqMsg = getRequestMessage(msg);
String targetAddress = epMetaData.getEndpointAddress();
getRemotingConnection().invoke(reqMsg, targetAddress, true);
}
@@ -232,11 +234,13 @@
if (HTTPBinding.HTTP_BINDING.equals(bindingID))
{
DispatchHTTPBinding helper = new DispatchHTTPBinding(mode, type, jaxbContext);
+ ((ConfigurationProvider)epMetaData).configure(helper);
message = helper.getRequestMessage(obj);
}
else
{
DispatchSOAPBinding helper = new DispatchSOAPBinding(mode, type, jaxbContext);
+ ((ConfigurationProvider)epMetaData).configure(helper);
message = helper.getRequestMessage(obj);
}
return message;
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchSOAPBinding.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchSOAPBinding.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/client/DispatchSOAPBinding.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -23,57 +23,48 @@
// $Id$
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.StringReader;
+import org.jboss.logging.Logger;
+import org.jboss.ws.core.MessageAbstraction;
+import org.jboss.ws.core.soap.*;
+import org.jboss.ws.core.utils.DOMWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPBody;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.*;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.Service.Mode;
import javax.xml.ws.WebServiceException;
-import javax.xml.ws.Service.Mode;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.StringReader;
-import org.jboss.logging.Logger;
-import org.jboss.ws.core.MessageAbstraction;
-import org.jboss.ws.core.soap.SOAPBodyElementDoc;
-import org.jboss.ws.core.soap.SOAPBodyImpl;
-import org.jboss.ws.core.soap.SOAPContentElement;
-import org.jboss.ws.core.soap.SOAPMessageImpl;
-import org.jboss.ws.core.soap.XMLFragment;
-import org.jboss.ws.core.utils.DOMWriter;
-
/**
* A helper that
*
* @author Thomas.Diesler(a)jboss.com
* @since 02-Apr-2007
*/
-public class DispatchSOAPBinding
+public class DispatchSOAPBinding extends DispatchBinding
{
// provide logging
private final Logger log = Logger.getLogger(DispatchSOAPBinding.class);
private JAXBContext jaxbContext;
private Class type;
- private Mode mode;
-
+ private Mode mode;
+
public DispatchSOAPBinding(Mode mode, Class type, JAXBContext jaxbContext)
{
this.mode = mode;
this.type = type;
this.jaxbContext = jaxbContext;
- }
+ }
public MessageAbstraction getRequestMessage(Object obj)
{
@@ -94,7 +85,16 @@
SOAPBodyImpl soapBody = (SOAPBodyImpl)reqMsg.getSOAPBody();
SOAPContentElement bodyElement = new SOAPBodyElementDoc(new QName("DispatchSOAPBodyElement"));
bodyElement = (SOAPContentElement)soapBody.addChildElement(bodyElement);
- bodyElement.setXMLFragment(new XMLFragment(source));
+ XMLFragment xmlFragment = new XMLFragment(source);
+ bodyElement.setXMLFragment(xmlFragment);
+
+ // validate payload if necessary
+ if(validateDispatch)
+ {
+ // expand to DOM will validate the contents
+ xmlFragment.toElement();
+ }
+
}
if (mode == Mode.MESSAGE)
{
Modified: trunk/jbossws-core/src/java/org/jboss/ws/metadata/config/EndpointFeature.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/metadata/config/EndpointFeature.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/metadata/config/EndpointFeature.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -27,5 +27,15 @@
* @since 14.12.2006
*/
public class EndpointFeature {
+
+ /**
+ * Enable MTOM per endpoint.
+ */
public final static String MTOM = "http://org.jboss.ws/mtom";
+
+ /**
+ * Validate the XML stream upon dispatch.
+ * Introduces an additional parsing overhead and could be disabled.
+ */
+ public final static String VALIDATE_DISPATCH = "http://org.jboss.ws/dispatch/validate";
}
Modified: trunk/jbossws-core/src/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java 2007-04-10 16:20:15 UTC (rev 2785)
@@ -23,23 +23,6 @@
// $Id$
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Observable;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.jws.soap.SOAPBinding.ParameterStyle;
-import javax.xml.namespace.QName;
-import javax.xml.rpc.ParameterMode;
-import javax.xml.ws.Service.Mode;
-
import org.jboss.logging.Logger;
import org.jboss.ws.Constants;
import org.jboss.ws.WSException;
@@ -55,16 +38,21 @@
import org.jboss.ws.core.jaxws.JAXBContextCache;
import org.jboss.ws.core.jaxws.JAXBDeserializerFactory;
import org.jboss.ws.core.jaxws.JAXBSerializerFactory;
+import org.jboss.ws.core.jaxws.client.DispatchBinding;
+import org.jboss.ws.core.jaxws.client.DispatchSOAPBinding;
import org.jboss.ws.core.utils.JavaUtils;
import org.jboss.ws.integration.UnifiedVirtualFile;
-import org.jboss.ws.metadata.config.CommonConfig;
-import org.jboss.ws.metadata.config.Configurable;
-import org.jboss.ws.metadata.config.ConfigurationProvider;
-import org.jboss.ws.metadata.config.EndpointFeature;
-import org.jboss.ws.metadata.config.JBossWSConfigFactory;
+import org.jboss.ws.metadata.config.*;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.xml.namespace.QName;
+import javax.xml.rpc.ParameterMode;
+import javax.xml.ws.Service.Mode;
+import java.lang.reflect.Method;
+import java.util.*;
+
/**
* A Service component describes a set of endpoints.
*
@@ -632,6 +620,11 @@
log.debug("Enable MTOM on endpoint " + getPortName());
}
}
+ else if (configurable instanceof DispatchBinding)
+ {
+ DispatchSOAPBinding dpb = (DispatchSOAPBinding)configurable;
+ dpb.setValidateDispatch(config.hasFeature(EndpointFeature.VALIDATE_DISPATCH));
+ }
}
public UnifiedVirtualFile getRootFile()
Modified: trunk/jbossws-core/src/resources/jbossws.sar/META-INF/standard-jaxws-client-config.xml
===================================================================
--- trunk/jbossws-core/src/resources/jbossws.sar/META-INF/standard-jaxws-client-config.xml 2007-04-10 15:56:19 UTC (rev 2784)
+++ trunk/jbossws-core/src/resources/jbossws.sar/META-INF/standard-jaxws-client-config.xml 2007-04-10 16:20:15 UTC (rev 2785)
@@ -7,6 +7,7 @@
<client-config>
<config-name>Standard Client</config-name>
+ <feature>http://org.jboss.ws/dispatch/validate</feature>
</client-config>
<client-config>
17 years
JBossWS SVN: r2784 - trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler.
by jbossws-commits@lists.jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2007-04-10 11:56:19 -0400 (Tue, 10 Apr 2007)
New Revision: 2784
Modified:
trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java
Log:
Layout code
Modified: trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java
===================================================================
--- trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java 2007-04-10 15:55:26 UTC (rev 2783)
+++ trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java 2007-04-10 15:56:19 UTC (rev 2784)
@@ -21,17 +21,12 @@
*/
package org.jboss.test.ws.jaxrpc.samples.handler;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
import javax.xml.namespace.QName;
import javax.xml.rpc.JAXRPCException;
import javax.xml.rpc.handler.GenericHandler;
import javax.xml.rpc.handler.HandlerInfo;
import javax.xml.rpc.handler.MessageContext;
import javax.xml.rpc.handler.soap.SOAPMessageContext;
-import javax.xml.soap.MimeHeader;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
@@ -67,9 +62,9 @@
QName[] headers = getHeaders();
if (headers == null || headers.length != 3)
throw new IllegalStateException("Invalid number of headers");
-
+
try
- {
+ {
SOAPMessage soapMessage = ((SOAPMessageContext)msgContext).getMessage();
SOAPHeader soapHeader = soapMessage.getSOAPHeader();
@@ -79,7 +74,7 @@
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
mimeHeaders.setHeader("Cookie", "client-cookie=true");
-
+
// testInHeader
if (rpcName.equals("testInHeader"))
{
@@ -111,7 +106,7 @@
}
catch (SOAPException e)
{
- throw new JAXRPCException(e);
+ throw new JAXRPCException(e);
}
return true;
@@ -123,7 +118,7 @@
SOAPMessage soapMessage = ((SOAPMessageContext)msgContext).getMessage();
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
-
+
String[] cookies = mimeHeaders.getHeader("Set-Cookie");
if (cookies == null || cookies.length != 1 || !cookies[0].equals("server-cookie=true"))
throw new IllegalStateException("Unexpected cookie list: " + mimeHeaders);
17 years
JBossWS SVN: r2783 - trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler.
by jbossws-commits@lists.jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2007-04-10 11:55:26 -0400 (Tue, 10 Apr 2007)
New Revision: 2783
Modified:
trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java
Log:
Remove dependency on jdk1.5
Modified: trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java
===================================================================
--- trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java 2007-04-10 15:53:26 UTC (rev 2782)
+++ trunk/jbossws-tests/src/java/org/jboss/test/ws/jaxrpc/samples/handler/ClientSideHandler.java 2007-04-10 15:55:26 UTC (rev 2783)
@@ -117,7 +117,6 @@
return true;
}
- @Override
public boolean handleResponse(MessageContext msgContext)
{
log.info("handleResponse");
17 years
JBossWS SVN: r2782 - trunk/jbossws-core/src/java/org/jboss/ws/core/soap.
by jbossws-commits@lists.jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2007-04-10 11:53:26 -0400 (Tue, 10 Apr 2007)
New Revision: 2782
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
Log:
Layout code
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2007-04-10 15:46:40 UTC (rev 2781)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2007-04-10 15:53:26 UTC (rev 2782)
@@ -36,6 +36,7 @@
import javax.xml.soap.Text;
import org.jboss.logging.Logger;
+import org.jboss.ws.Constants;
import org.jboss.ws.core.utils.DOMUtils;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
@@ -207,20 +208,14 @@
return super.replaceChild(newChild, oldChild);
}
- private static boolean needsConversionToBodyElement(Node node)
+ @Override
+ public SOAPElement addAttribute(Name name, String value) throws SOAPException
{
- // JBCTS-440 #addTextNodeTest1 appends a Text node to a SOAPBody
- return !(node instanceof SOAPBodyElement || node instanceof DocumentFragment || node instanceof Text);
- }
+ String envNamespace = getNamespaceURI();
+ if (Constants.NS_SOAP12_ENV.equals(envNamespace) && name.equals(new NameImpl("encodingStyle", Constants.PREFIX_ENV, envNamespace)))
+ throw new SOAPException("Cannot set encodingStyle on: " + getElementQName());
- private static SOAPBodyElementDoc convertToBodyElement(Node node)
- {
- if (!(node instanceof SOAPElementImpl))
- throw new IllegalArgumentException("SOAPElement expected");
-
- SOAPElementImpl element = (SOAPElementImpl)node;
- element.detachNode();
- return new SOAPBodyElementDoc(element);
+ return super.addAttribute(name, value);
}
public Document extractContentAsDocument() throws SOAPException
@@ -258,4 +253,20 @@
return newDocument;
}
+
+ private static boolean needsConversionToBodyElement(Node node)
+ {
+ // JBCTS-440 #addTextNodeTest1 appends a Text node to a SOAPBody
+ return !(node instanceof SOAPBodyElement || node instanceof DocumentFragment || node instanceof Text);
+ }
+
+ private static SOAPBodyElementDoc convertToBodyElement(Node node)
+ {
+ if (!(node instanceof SOAPElementImpl))
+ throw new IllegalArgumentException("SOAPElement expected");
+
+ SOAPElementImpl element = (SOAPElementImpl)node;
+ element.detachNode();
+ return new SOAPBodyElementDoc(element);
+ }
}
17 years
JBossWS SVN: r2781 - trunk/jbossws-tests/src/java/org/jboss/test/ws/common/soap.
by jbossws-commits@lists.jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2007-04-10 11:46:40 -0400 (Tue, 10 Apr 2007)
New Revision: 2781
Modified:
trunk/jbossws-tests/src/java/org/jboss/test/ws/common/soap/MessageFactoryTestCase.java
Log:
Header elements must be ns qualified
Modified: trunk/jbossws-tests/src/java/org/jboss/test/ws/common/soap/MessageFactoryTestCase.java
===================================================================
--- trunk/jbossws-tests/src/java/org/jboss/test/ws/common/soap/MessageFactoryTestCase.java 2007-04-10 13:21:22 UTC (rev 2780)
+++ trunk/jbossws-tests/src/java/org/jboss/test/ws/common/soap/MessageFactoryTestCase.java 2007-04-10 15:46:40 UTC (rev 2781)
@@ -153,11 +153,11 @@
public void testPreserveComments() throws Exception
{
String expMsg =
- "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>" +
+ "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns1='http://somens.org'>" +
" <!-- header -->" +
" <soapenv:Header>" +
" <!-- header element -->" +
- " <header>kermit</header>" +
+ " <ns1:header>kermit</ns1:header>" +
" </soapenv:Header>" +
" <!-- body -->" +
" <soapenv:Body>" +
17 years
JBossWS SVN: r2780 - trunk/jbossws-core/src/java/org/jboss/ws/core/soap.
by jbossws-commits@lists.jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2007-04-10 09:21:22 -0400 (Tue, 10 Apr 2007)
New Revision: 2780
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPContentElement.java
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPElementImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPEnvelopeImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java
Log:
Fix handling of encodingStyle attribute
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPContentElement.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPContentElement.java 2007-04-10 08:32:15 UTC (rev 2779)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPContentElement.java 2007-04-10 13:21:22 UTC (rev 2780)
@@ -406,11 +406,6 @@
super.setAttributeNS(namespaceURI, qualifiedName, value);
}
- public void setEncodingStyle(String encodingStyle) throws SOAPException
- {
- super.setEncodingStyle(encodingStyle);
- }
-
public void setIdAttribute(String name, boolean isId) throws DOMException
{
log.trace("setIdAttribute: [name=" + name + ",value=" + isId + "]");
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPElementImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPElementImpl.java 2007-04-10 08:32:15 UTC (rev 2779)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPElementImpl.java 2007-04-10 13:21:22 UTC (rev 2780)
@@ -69,11 +69,6 @@
private Element element;
// The element name
private Name elementName;
- // The element's encoding style
- /* JBCTS-440 #getEncodingStyleTest1 expects the initial value of the
- * encodingStyle property to be null
- */
- private String encodingStyle = null;
/** Called by SOAPFactory */
public SOAPElementImpl(String localPart)
@@ -533,16 +528,6 @@
}
/**
- * Returns the encoding style for this SOAPElement object.
- *
- * @return a String giving the encoding style
- */
- public String getEncodingStyle()
- {
- return encodingStyle;
- }
-
- /**
* Returns an Iterator over the namespace prefix Strings declared by this element.
* <p/>
* The prefixes returned by this iterator can be passed to the method getNamespaceURI to retrieve the URI of each namespace.
@@ -657,7 +642,21 @@
}
/**
+ * Returns the encoding style for this SOAPElement object.
+ * @return a String giving the encoding style
+ */
+ public String getEncodingStyle()
+ {
+ // JBCTS-440 #getEncodingStyleTest1 expects the initial value of the encodingStyle property to be null
+ String encodingStyle = getAttribute(Constants.PREFIX_ENV + ":encodingStyle");
+ return (encodingStyle.length() > 0 ? encodingStyle : null);
+ }
+
+ /**
* Sets the encoding style for this SOAPElement object to one specified.
+ *
+ * @see http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383495
+ * @see http://www.w3.org/TR/soap12-part1/#soapencattr
*
* @param encodingStyle a String giving the encoding style
* @throws IllegalArgumentException if there was a problem in the encoding style being set.
@@ -665,16 +664,9 @@
*/
public void setEncodingStyle(String encodingStyle) throws SOAPException
{
- if (Constants.NS_SOAP12_ENV.equals(getNamespaceURI()))
- throw new SOAPException("Setting the encodingStyle is invalid for this SOAP 1.2 Element: " + getLocalName());
-
- /* JBCTS-440 #getEncodingStyleTest1 expects the initial value of the
- * encodingStyle property to be null, hence null is a legal argument
- */
- if (!Constants.URI_LITERAL_ENC.equals(encodingStyle) && !Constants.URI_SOAP11_ENC.equals(encodingStyle) && encodingStyle != null)
- throw new IllegalArgumentException("Unsupported encodingStyle: " + encodingStyle);
-
- this.encodingStyle = encodingStyle;
+ String namespaceURI = getNamespaceURI(Constants.PREFIX_ENV);
+ NameImpl name = new NameImpl("encodingStyle", Constants.PREFIX_ENV, namespaceURI);
+ addAttribute(name, encodingStyle);
}
public String getTagName()
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPEnvelopeImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPEnvelopeImpl.java 2007-04-10 08:32:15 UTC (rev 2779)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPEnvelopeImpl.java 2007-04-10 13:21:22 UTC (rev 2780)
@@ -64,7 +64,7 @@
String prefix = getPrefix();
String namespaceURI = getNamespaceURI();
String localName = getLocalName();
-
+
if ("Envelope".equals(localName) == false)
throw new IllegalArgumentException("Cannot create SOAP envelope from: " + element.getElementQName());
@@ -72,8 +72,10 @@
addNamespaceDeclaration(prefix, namespaceURI);
// the Element source might already contain a Header and Body declaration
- if(null == soapPart.getEnvelope().getHeader()) addHeader();
- if(null == soapPart.getEnvelope().getBody()) addBody();
+ if (null == soapPart.getEnvelope().getHeader())
+ addHeader();
+ if (null == soapPart.getEnvelope().getBody())
+ addBody();
}
/** Construct a SOAP envelope for the given SOAP version URI.
@@ -92,16 +94,6 @@
addBody();
}
- private void assertEnvelopeNamespace(String namespaceURI)
- {
- if (!Constants.NS_SOAP12_ENV.equals(namespaceURI) && !Constants.NS_SOAP11_ENV.equals(namespaceURI))
- {
- QName faultCode = Constants.SOAP11_FAULT_CODE_VERSION_MISMATCH;
- String faultString = "Invalid SOAP envelope namespace: " + namespaceURI;
- throw new SOAPFaultException(faultCode, faultString, null, null);
- }
- }
-
public SOAPMessage getSOAPMessage()
{
return soapPart.getSOAPMessage();
@@ -128,11 +120,22 @@
return (SOAPHeader)addChildElement(header);
}
+ @Override
+ public SOAPElement addAttribute(Name name, String value) throws SOAPException
+ {
+ String envNamespace = getNamespaceURI();
+ if (Constants.NS_SOAP12_ENV.equals(envNamespace) && name.equals(new NameImpl("encodingStyle", Constants.PREFIX_ENV, envNamespace)))
+ throw new SOAPException("Cannot set encodingStyle on: " + getElementQName());
+
+ return super.addAttribute(name, value);
+ }
+
/** Make sure the child is either a SOAPHeader or SOAPBody */
public SOAPElement addChildElement(SOAPElement child) throws SOAPException
{
- if ((child instanceof SOAPHeader) == false && (child instanceof SOAPBody) == false)
- throw new IllegalArgumentException("SOAPHeader or SOAPBody expected");
+ String envNamespace = getNamespaceURI();
+ if (Constants.NS_SOAP12_ENV.equals(envNamespace) && !(child instanceof SOAPHeader) && !(child instanceof SOAPBody))
+ throw new SOAPException("SOAPHeader or SOAPBody expected");
return super.addChildElement(child);
}
@@ -183,4 +186,14 @@
{
return soapPart;
}
+
+ private void assertEnvelopeNamespace(String namespaceURI)
+ {
+ if (!Constants.NS_SOAP12_ENV.equals(namespaceURI) && !Constants.NS_SOAP11_ENV.equals(namespaceURI))
+ {
+ QName faultCode = Constants.SOAP11_FAULT_CODE_VERSION_MISMATCH;
+ String faultString = "Invalid SOAP envelope namespace: " + namespaceURI;
+ throw new SOAPFaultException(faultCode, faultString, null, null);
+ }
+ }
}
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java 2007-04-10 08:32:15 UTC (rev 2779)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPHeaderImpl.java 2007-04-10 13:21:22 UTC (rev 2780)
@@ -53,31 +53,15 @@
{
super("Header", prefix, namespace);
}
-
- private static boolean needsConversionToHeaderElement(Node newChild)
- {
- // JBCTS-440 #addTextNodeTest2 appends a Text node to a SOAPHeader
- return !(newChild instanceof SOAPHeaderElementImpl
- || newChild instanceof DocumentFragment
- || newChild instanceof Text);
- }
- private static SOAPHeaderElementImpl convertToHeaderElement(Node node)
- {
- if (!(node instanceof SOAPElementImpl))
- throw new IllegalArgumentException("SOAPElement expected");
-
- SOAPElementImpl element = (SOAPElementImpl)node;
-
- // convert to SOAPHeaderElement
- element.detachNode();
- return new SOAPHeaderElementImpl(element);
- }
-
/** Add a SOAPHeaderElement as a child of this SOAPHeader instance.
*/
public SOAPElement addChildElement(SOAPElement child) throws SOAPException
{
+ QName qname = child.getElementQName();
+ if (qname == null || qname.getNamespaceURI().length() == 0 || qname.getPrefix().length() == 0)
+ throw new SOAPException("Invalid SOAPHeaderElement name: " + qname);
+
// Check that we get a SOAPHeaderElement
if ((child instanceof SOAPHeaderElement) == false)
child = convertToHeaderElement(child);
@@ -93,7 +77,7 @@
// JBCTS-440 #addTextNodeTest2 adds a text node to a SOAPHeader and expects a SOAPException
if (Constants.NS_SOAP12_ENV.equals(getNamespaceURI()))
throw new SOAPException("Attaching a Text node to this SOAP 1.2 Element is not legal: " + getLocalName());
-
+
return super.addTextNode(value);
}
@@ -107,16 +91,16 @@
return addHeaderElement(((NameImpl)name).toQName());
}
- public SOAPHeaderElement addHeaderElement(QName name) throws SOAPException
+ public SOAPHeaderElement addHeaderElement(QName qname) throws SOAPException
{
- if (name == null || name.getNamespaceURI().length() == 0 || name.getPrefix().length() == 0)
- throw new SOAPException("Invalid SOAPHeaderElement name: " + name);
+ if (qname == null || qname.getNamespaceURI().length() == 0 || qname.getPrefix().length() == 0)
+ throw new SOAPException("Invalid SOAPHeaderElement name: " + qname);
- SOAPHeaderElementImpl headerElement = new SOAPHeaderElementImpl(name);
+ SOAPHeaderElementImpl headerElement = new SOAPHeaderElementImpl(qname);
addChildElement(headerElement);
return headerElement;
}
-
+
/** Returns an Iterator over all the SOAPHeaderElement objects in this SOAPHeader object.
*/
public Iterator examineAllHeaderElements()
@@ -281,7 +265,25 @@
{
if (supportedSoapUri == null)
throw new SOAPException("supported URI cannot be null");
-
+
return addUpgradeHeaderElement(Collections.singletonList(supportedSoapUri).iterator());
}
+
+ private static boolean needsConversionToHeaderElement(Node newChild)
+ {
+ // JBCTS-440 #addTextNodeTest2 appends a Text node to a SOAPHeader
+ return !(newChild instanceof SOAPHeaderElementImpl || newChild instanceof DocumentFragment || newChild instanceof Text);
+ }
+
+ private static SOAPHeaderElementImpl convertToHeaderElement(Node node)
+ {
+ if (!(node instanceof SOAPElementImpl))
+ throw new IllegalArgumentException("SOAPElement expected");
+
+ SOAPElementImpl element = (SOAPElementImpl)node;
+
+ // convert to SOAPHeaderElement
+ element.detachNode();
+ return new SOAPHeaderElementImpl(element);
+ }
}
\ No newline at end of file
17 years
JBossWS SVN: r2779 - trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-04-10 04:32:15 -0400 (Tue, 10 Apr 2007)
New Revision: 2779
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java
Log:
Rollback to prev. version
Modified: trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java 2007-04-09 20:20:07 UTC (rev 2778)
+++ trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java 2007-04-10 08:32:15 UTC (rev 2779)
@@ -26,7 +26,6 @@
import java.io.IOException;
import java.net.URL;
import java.util.Set;
-import java.util.Iterator;
import javax.xml.namespace.QName;
@@ -35,7 +34,8 @@
import org.jboss.ws.WSException;
import org.jboss.ws.integration.ResourceLoaderAdapter;
import org.jboss.ws.integration.UnifiedVirtualFile;
-import org.jboss.ws.metadata.j2ee.serviceref.*;
+import org.jboss.ws.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMappingFactory;
import org.jboss.ws.metadata.jaxrpcmapping.ServiceEndpointInterfaceMapping;
@@ -65,7 +65,7 @@
/** Build from WSDL and jaxrpc-mapping.xml
*/
public ServiceMetaData buildMetaData(QName serviceQName, URL wsdlURL, URL mappingURL, URL securityURL,
- UnifiedServiceRefMetaData serviceRefMetaData, ClassLoader loader)
+ UnifiedServiceRefMetaData serviceRefMetaData, ClassLoader loader)
{
try
{
@@ -97,7 +97,7 @@
/** Build from WSDL and jaxrpc-mapping.xml
*/
public ServiceMetaData buildMetaData(QName serviceQName, URL wsdlURL, JavaWsdlMapping javaWsdlMapping, WSSecurityConfiguration securityConfig,
- UnifiedServiceRefMetaData usrMetaData, ClassLoader loader)
+ UnifiedServiceRefMetaData usrMetaData, ClassLoader loader)
{
if(log.isDebugEnabled()) log.debug("START buildMetaData: [service=" + serviceQName + "]");
try
@@ -149,7 +149,7 @@
}
private void buildMetaDataInternal(ServiceMetaData serviceMetaData, WSDLDefinitions wsdlDefinitions, JavaWsdlMapping javaWsdlMapping,
- UnifiedServiceRefMetaData serviceRefMetaData) throws IOException
+ UnifiedServiceRefMetaData serviceRefMetaData) throws IOException
{
QName serviceQName = serviceMetaData.getServiceName();
@@ -212,32 +212,6 @@
}
}
- if(serviceRefMetaData!=null)
- {
- Iterator<UnifiedPortComponentRefMetaData> it = serviceRefMetaData.getPortComponentRefs().iterator();
- while(it.hasNext())
- {
- UnifiedPortComponentRefMetaData portComp = it.next();
-
- if(epMetaData.matches(portComp))
- {
- log.debug("Processing service-ref contribution on portType: "+epMetaData.getPortTypeName());
-
- // process stub properties
- for(UnifiedStubPropertyMetaData stubProp: portComp.getStubProperties())
- {
- epMetaData.getProperties().put(stubProp.getPropName(), stubProp.getPropValue());
- }
-
- // process call properties
- for(UnifiedCallPropertyMetaData callProp: portComp.getCallProperties())
- {
- epMetaData.getProperties().put(callProp.getPropName(), callProp.getPropValue());
- }
- }
- }
- }
-
processEndpointMetaDataExtensions(epMetaData, wsdlDefinitions);
setupOperationsFromWSDL(epMetaData, wsdlEndpoint, seiMapping);
setupHandlers(serviceRefMetaData, portName, epMetaData);
17 years
JBossWS SVN: r2777 - in trunk: jbossws-core/src/java/org/jboss/ws/core and 5 other directories.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-04-05 10:33:20 -0400 (Thu, 05 Apr 2007)
New Revision: 2777
Modified:
trunk/integration-jboss50/src/java/org/jboss/ws/integration/jboss50/ServiceEndpointInterceptor.java
trunk/jbossws-core/src/java/org/jboss/ws/core/CommonClient.java
trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java
trunk/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java
trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/MessageAbstraction.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/handler/LogicalMessageImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java
trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPMessageImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java
trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSClientMetaDataBuilder.java
Log:
Fix remaining TCK handler tests. Added MessageContext.isModified()
Modified: trunk/integration-jboss50/src/java/org/jboss/ws/integration/jboss50/ServiceEndpointInterceptor.java
===================================================================
--- trunk/integration-jboss50/src/java/org/jboss/ws/integration/jboss50/ServiceEndpointInterceptor.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/integration-jboss50/src/java/org/jboss/ws/integration/jboss50/ServiceEndpointInterceptor.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -34,9 +34,12 @@
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.EndpointInvocation;
import org.jboss.ws.core.MessageAbstraction;
+import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.jaxrpc.SOAPFaultHelperJAXRPC;
+import org.jboss.ws.core.jaxrpc.binding.BindingException;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
+import org.jboss.ws.WSException;
/**
* This Interceptor does the ws4ee handler processing.
@@ -85,6 +88,19 @@
// Call the next interceptor in the chain
if (handlersPass)
{
+ CommonBindingProvider bindingProvider = new CommonBindingProvider(opMetaData.getEndpointMetaData());
+ CommonBinding binding = bindingProvider.getCommonBinding();
+
+ // Verify that the the message has not been mofified
+ CommonMessageContext messageContext = MessageContextAssociation.peekMessageContext();
+ if(messageContext.isModified())
+ {
+ log.debug("Handler modified payload, unbind message and update invocation args");
+ epInv = bindingProvider.getCommonBinding().unbindRequestMessage(
+ opMetaData, messageContext.getMessageAbstraction()
+ );
+ }
+
// The SOAPContentElements stored in the EndpointInvocation might have changed after
// handler processing. Get the updated request payload. This should be a noop if request
// handlers did not modify the incomming SOAP message.
@@ -94,8 +110,6 @@
epInv.setReturnValue(resObj);
// Bind the response message
- CommonBindingProvider bindingProvider = new CommonBindingProvider(opMetaData.getEndpointMetaData());
- CommonBinding binding = (CommonBinding)bindingProvider.getCommonBinding();
SOAPMessage resMessage = (SOAPMessage)binding.bindResponseMessage(opMetaData, epInv);
msgContext.setSOAPMessage(resMessage);
}
@@ -125,11 +139,7 @@
log.warn("Cannot process handlerChain.handleFault, ignoring: ", subEx);
}
throw ex;
- }
- finally
- {
- // do nothing
- }
+ }
}
else
{
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/CommonClient.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/CommonClient.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/CommonClient.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -362,7 +362,7 @@
faultType[0] = null;
// Check if protocol handlers modified the payload
- if (reqMessage.isModified())
+ if (msgContext.isModified())
{
log.debug("Handler modified body payload, unbind message again");
MessageAbstraction resMessage = msgContext.getMessageAbstraction();
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -36,6 +36,7 @@
import org.jboss.ws.core.jaxrpc.binding.SerializationContext;
import org.jboss.ws.core.server.PropertyCallback;
import org.jboss.ws.core.soap.SOAPMessageImpl;
+import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.xb.binding.NamespaceRegistry;
@@ -69,6 +70,8 @@
// The current property scope
protected Scope currentScope = Scope.APPLICATION;
+ private boolean isModified;
+
public CommonMessageContext()
{
}
@@ -125,6 +128,7 @@
public void setSOAPMessage(SOAPMessage soapMessage)
{
this.message = (MessageAbstraction)soapMessage;
+ this.setModified(true);
}
public MessageAbstraction getMessageAbstraction()
@@ -249,6 +253,28 @@
scopedProps.clear();
}
+
+ public boolean isModified()
+ {
+ return isModified;
+ }
+
+ /**
+ * Mark a message as 'modified' when the SAAJ model becomes stale.
+ * This may be the case when:
+ * <ul>
+ * <li>the complete message is replaced at MessageContext level
+ * <li>the payload is set on a LogicalMessage
+ * <li>The SAAJ model is changed though the DOM or SAAJ API (handler)
+ * </ul>
+ *
+ * In any of these cases another 'unbind' invocation is required.
+ */
+ public void setModified(boolean modified)
+ {
+ isModified = modified;
+ }
+
public Set<String> keySet()
{
Set<String> keys = new HashSet<String>(scopedProps.size());
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -293,6 +293,7 @@
elQName = namespaceRegistry.registerQName(elQName);
}
+ int numParameters = 0;
for (ParameterMetaData paramMetaData : opMetaData.getParameters())
{
QName xmlName = paramMetaData.getXmlName();
@@ -317,12 +318,19 @@
}
else
{
- SOAPElement element = paramMetaData.isInHeader() ? soapHeader : soapBodyElement;
+ boolean isHeader = paramMetaData.isInHeader();
+ SOAPElement element = isHeader ? soapHeader : soapBodyElement;
+ if(!isHeader) numParameters++;
+
SOAPContentElement value = getParameterFromMessage(paramMetaData, element, false);
epInv.setRequestParamValue(xmlName, value);
}
}
}
+
+ // TCK: verify the numer of parameters matches the actual message payload
+ int numChildren = soapBodyElement.getChildNodes().getLength();
+ if(numChildren!=numParameters) throw new WSException("Invalid number of payload elements: " + numChildren);
}
// Generic message endpoint
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/HTTPMessageImpl.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -44,8 +44,7 @@
public class HTTPMessageImpl implements HTTPMessageAbstraction
{
private MimeHeaders mimeHeaders;
- private XMLFragment xmlFragment;
- private boolean modified;
+ private XMLFragment xmlFragment;
public HTTPMessageImpl(MimeHeaders mimeHeaders, InputStream inputStream)
{
@@ -111,15 +110,4 @@
{
throw new NotImplementedException();
}
-
- public boolean isModified()
- {
- return modified;
- }
-
- public void setModified(boolean modifiedInHandler)
- {
- this.modified = modifiedInHandler;
- }
-
}
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/MessageAbstraction.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/MessageAbstraction.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/MessageAbstraction.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -39,11 +39,7 @@
void writeTo(OutputStream outputStream) throws IOException;
- boolean isFaultMessage();
-
- boolean isModified();
-
- void setModified(boolean flag);
+ boolean isFaultMessage();
void addAttachmentPart(AttachmentPart part);
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/handler/LogicalMessageImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/handler/LogicalMessageImpl.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/handler/LogicalMessageImpl.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -40,10 +40,7 @@
import org.jboss.ws.core.HTTPMessageImpl;
import org.jboss.ws.core.MessageAbstraction;
import org.jboss.ws.core.jaxrpc.Style;
-import org.jboss.ws.core.soap.EnvelopeBuilderDOM;
-import org.jboss.ws.core.soap.SOAPBodyImpl;
-import org.jboss.ws.core.soap.SOAPContentElement;
-import org.jboss.ws.core.soap.XMLFragment;
+import org.jboss.ws.core.soap.*;
import org.jboss.ws.core.utils.DOMUtils;
import org.w3c.dom.Element;
@@ -133,7 +130,9 @@
HTTPMessageImpl httpMessage = (HTTPMessageImpl)message;
httpMessage.setXmlFragment(new XMLFragment(source));
}
- message.setModified(true);
+
+ MessageContextAssociation.peekMessageContext().setModified(true);
+
}
public Object getPayload(JAXBContext jaxbContext)
@@ -168,6 +167,7 @@
if (bodyElement != null)
{
bodyElement.setObjectValue(payload);
+ MessageContextAssociation.peekMessageContext().setModified(true);
}
}
else if (message instanceof HTTPMessageImpl)
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/server/AbstractServiceEndpointInvoker.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -196,7 +196,7 @@
try
{
// Check if protocol handlers modified the payload
- if (reqMessage.isModified())
+ if (msgContext.isModified())
{
log.debug("Handler modified payload, unbind message again");
reqMessage = msgContext.getMessageAbstraction();
Modified: trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPMessageImpl.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPMessageImpl.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/soap/SOAPMessageImpl.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -23,6 +23,16 @@
// $Id$
+import org.jboss.ws.WSException;
+import org.jboss.ws.core.SOAPMessageAbstraction;
+import org.jboss.ws.core.CommonMessageContext;
+import org.jboss.ws.core.soap.attachment.*;
+import org.jboss.ws.extensions.xop.XOPContext;
+import org.jboss.ws.metadata.umdm.EndpointMetaData;
+import org.jboss.ws.metadata.umdm.OperationMetaData;
+
+import javax.mail.MessagingException;
+import javax.xml.soap.*;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collection;
@@ -30,29 +40,6 @@
import java.util.LinkedList;
import java.util.List;
-import javax.mail.MessagingException;
-import javax.xml.soap.AttachmentPart;
-import javax.xml.soap.MimeHeader;
-import javax.xml.soap.MimeHeaders;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFault;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.soap.SOAPPart;
-
-import org.jboss.ws.WSException;
-import org.jboss.ws.core.SOAPMessageAbstraction;
-import org.jboss.ws.core.soap.attachment.AttachmentPartImpl;
-import org.jboss.ws.core.soap.attachment.CIDGenerator;
-import org.jboss.ws.core.soap.attachment.MimeConstants;
-import org.jboss.ws.core.soap.attachment.MultipartRelatedEncoder;
-import org.jboss.ws.core.soap.attachment.MultipartRelatedSwAEncoder;
-import org.jboss.ws.core.soap.attachment.MultipartRelatedXOPEncoder;
-import org.jboss.ws.extensions.xop.XOPContext;
-import org.jboss.ws.metadata.umdm.EndpointMetaData;
-import org.jboss.ws.metadata.umdm.OperationMetaData;
-
/**
* The root class for all SOAP messages. As transmitted on the "wire", a SOAP message is an XML document or a
* MIME message whose first body part is an XML/SOAP document.
@@ -68,8 +55,7 @@
private CIDGenerator cidGenerator = new CIDGenerator();
private boolean isXOPMessage;
private boolean isSWARefMessage;
- private SOAPPartImpl soapPart;
- private boolean modified;
+ private SOAPPartImpl soapPart;
private MultipartRelatedEncoder multipartRelatedEncoder;
// Cache the associated operation meta data
@@ -272,6 +258,9 @@
saveRequired = false;
}
+
+ CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+ if(msgContext!=null) msgContext.setModified(true);
}
public boolean saveRequired()
@@ -506,14 +495,4 @@
while (attachmentItr.next() != null)
attachmentItr.remove();
}
-
- public boolean isModified()
- {
- return modified;
- }
-
- public void setModified(boolean modifiedInHandler)
- {
- this.modified = modifiedInHandler;
- }
}
Modified: trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxrpc/JAXRPCClientMetaDataBuilder.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -26,6 +26,7 @@
import java.io.IOException;
import java.net.URL;
import java.util.Set;
+import java.util.Iterator;
import javax.xml.namespace.QName;
@@ -34,8 +35,7 @@
import org.jboss.ws.WSException;
import org.jboss.ws.integration.ResourceLoaderAdapter;
import org.jboss.ws.integration.UnifiedVirtualFile;
-import org.jboss.ws.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
+import org.jboss.ws.metadata.j2ee.serviceref.*;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMappingFactory;
import org.jboss.ws.metadata.jaxrpcmapping.ServiceEndpointInterfaceMapping;
@@ -65,7 +65,7 @@
/** Build from WSDL and jaxrpc-mapping.xml
*/
public ServiceMetaData buildMetaData(QName serviceQName, URL wsdlURL, URL mappingURL, URL securityURL,
- UnifiedServiceRefMetaData serviceRefMetaData, ClassLoader loader)
+ UnifiedServiceRefMetaData serviceRefMetaData, ClassLoader loader)
{
try
{
@@ -97,7 +97,7 @@
/** Build from WSDL and jaxrpc-mapping.xml
*/
public ServiceMetaData buildMetaData(QName serviceQName, URL wsdlURL, JavaWsdlMapping javaWsdlMapping, WSSecurityConfiguration securityConfig,
- UnifiedServiceRefMetaData usrMetaData, ClassLoader loader)
+ UnifiedServiceRefMetaData usrMetaData, ClassLoader loader)
{
if(log.isDebugEnabled()) log.debug("START buildMetaData: [service=" + serviceQName + "]");
try
@@ -149,7 +149,7 @@
}
private void buildMetaDataInternal(ServiceMetaData serviceMetaData, WSDLDefinitions wsdlDefinitions, JavaWsdlMapping javaWsdlMapping,
- UnifiedServiceRefMetaData serviceRefMetaData) throws IOException
+ UnifiedServiceRefMetaData serviceRefMetaData) throws IOException
{
QName serviceQName = serviceMetaData.getServiceName();
@@ -212,6 +212,32 @@
}
}
+ if(serviceRefMetaData!=null)
+ {
+ Iterator<UnifiedPortComponentRefMetaData> it = serviceRefMetaData.getPortComponentRefs().iterator();
+ while(it.hasNext())
+ {
+ UnifiedPortComponentRefMetaData portComp = it.next();
+
+ if(epMetaData.matches(portComp))
+ {
+ log.debug("Processing service-ref contribution on portType: "+epMetaData.getPortTypeName());
+
+ // process stub properties
+ for(UnifiedStubPropertyMetaData stubProp: portComp.getStubProperties())
+ {
+ epMetaData.getProperties().put(stubProp.getPropName(), stubProp.getPropValue());
+ }
+
+ // process call properties
+ for(UnifiedCallPropertyMetaData callProp: portComp.getCallProperties())
+ {
+ epMetaData.getProperties().put(callProp.getPropName(), callProp.getPropValue());
+ }
+ }
+ }
+ }
+
processEndpointMetaDataExtensions(epMetaData, wsdlDefinitions);
setupOperationsFromWSDL(epMetaData, wsdlEndpoint, seiMapping);
setupHandlers(serviceRefMetaData, portName, epMetaData);
Modified: trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSClientMetaDataBuilder.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSClientMetaDataBuilder.java 2007-04-05 13:49:22 UTC (rev 2776)
+++ trunk/jbossws-core/src/java/org/jboss/ws/metadata/builder/jaxws/JAXWSClientMetaDataBuilder.java 2007-04-05 14:33:20 UTC (rev 2777)
@@ -55,6 +55,7 @@
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
import org.jboss.ws.metadata.j2ee.serviceref.UnifiedStubPropertyMetaData;
+import org.jboss.ws.metadata.j2ee.serviceref.UnifiedCallPropertyMetaData;
/**
* A client side meta data builder.
@@ -204,9 +205,12 @@
epMetaData.getProperties().put(stubProp.getPropName(), stubProp.getPropValue());
}
- // process port-component-uri
+ // process call properties
+ for(UnifiedCallPropertyMetaData callProp: portComp.getCallProperties())
+ {
+ epMetaData.getProperties().put(callProp.getPropName(), callProp.getPropValue());
+ }
-
}
}
17 years, 1 month