Author: thomas.diesler(a)jboss.com
Date: 2007-04-13 13:33:29 -0400 (Fri, 13 Apr 2007)
New Revision: 2834
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
trunk/jbossws-core/src/java/org/jboss/ws/extensions/xop/XOPContext.java
Log:
Prevent CCE in XOP handling
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-13
17:23:32 UTC (rev 2833)
+++ trunk/jbossws-core/src/java/org/jboss/ws/core/CommonMessageContext.java 2007-04-13
17:33:29 UTC (rev 2834)
@@ -35,11 +35,9 @@
import org.jboss.logging.Logger;
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.extensions.xop.XOPContext;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.OperationMetaData;
-import org.jboss.ws.extensions.xop.XOPContext;
import org.jboss.xb.binding.NamespaceRegistry;
/**
@@ -51,11 +49,11 @@
public abstract class CommonMessageContext implements Map<String, Object>
{
private static Logger log = Logger.getLogger(CommonMessageContext.class);
-
+
// expandToDOM in the SOAPContentElement should not happen during normal operation
// This property should be set the message context when it is ok to do so.
public static String ALLOW_EXPAND_TO_DOM = "org.jboss.ws.allow.expand.dom";
-
+
public static String REMOTING_METADATA = "org.jboss.ws.remoting.metadata";
// The serialization context for this message ctx
@@ -202,8 +200,8 @@
ScopedProperty scopedProp = scopedProps.get(key);
if (log.isTraceEnabled())
- log.trace("get("+ key + "): " + scopedProp);
-
+ log.trace("get(" + key + "): " + scopedProp);
+
if (isValidInScope(scopedProp))
value = scopedProp.getValue();
@@ -219,7 +217,7 @@
ScopedProperty newProp = new ScopedProperty(key, value, currentScope);
if (log.isTraceEnabled())
log.trace("put: " + newProp);
-
+
scopedProps.put(key, newProp);
return prevProp != null ? prevProp.getValue() : null;
}
@@ -254,11 +252,10 @@
scopedProps.clear();
}
-
public boolean isModified()
{
// skip changes from XOP handler interactions
- if(XOPContext.isXOPEncodedRequest() && !XOPContext.isXOPMessage())
+ if (XOPContext.isXOPEncodedRequest() && !XOPContext.isXOPMessage())
{
log.debug("Disregard changes from XOP/Handler interactions");
return false;
@@ -385,7 +382,7 @@
return realValue;
}
-
+
public String toString()
{
return scope + ":" + name + "=" + value;
Modified:
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
===================================================================
---
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2007-04-13
17:23:32 UTC (rev 2833)
+++
trunk/jbossws-core/src/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2007-04-13
17:33:29 UTC (rev 2834)
@@ -120,11 +120,11 @@
}
handlerResolver = new HandlerResolverImpl();
-
+
if (usRef != null)
{
serviceMetaData.setServiceRefName(usRef.getServiceRefName());
-
+
// Setup the service handlers
if (usRef.getHandlerChain() != null)
{
@@ -368,54 +368,37 @@
String seiName = epMetaData.getServiceEndpointInterfaceName();
QName portName = epMetaData.getPortName();
- if (usRef == null || usRef.getPortComponentRefs().size() == 0)
+ if (usRef == null)
{
- if (log.isDebugEnabled())
- log.debug("No port configuration for: " + portName);
+ log.debug("No port configuration for: " + portName);
return;
}
String configFile = usRef.getConfigFile();
String configName = usRef.getConfigName();
- boolean match = false;
- for (UnifiedPortComponentRefMetaData pi : usRef.getPortComponentRefs())
+ UnifiedPortComponentRefMetaData pcref = usRef.getPortComponentRef(seiName,
portName);
+ if (pcref != null)
{
- String piSEI = pi.getServiceEndpointInterface();
- QName piPort = pi.getPortQName();
- match = (piSEI == null && piPort == null);
- if (match == false)
+ if (pcref.getConfigFile() != null)
+ configFile = pcref.getConfigFile();
+ if (pcref.getConfigName() != null)
+ configName = pcref.getConfigName();
+
+ BindingProvider bp = (BindingProvider)stub;
+ Map<String, Object> reqCtx = bp.getRequestContext();
+ for (UnifiedStubPropertyMetaData prop : pcref.getStubProperties())
{
- if (piSEI != null && piPort != null)
- match = seiName.equals(piSEI) && portName.equals(piPort);
- else match = seiName.equals(piSEI) || portName.equals(piPort);
+ log.debug("Set stub property: " + prop);
+ reqCtx.put(prop.getPropName(), prop.getPropValue());
}
- if (match == true)
- {
- if (pi.getConfigFile() != null)
- configFile = pi.getConfigFile();
- if (pi.getConfigName() != null)
- configName = pi.getConfigName();
-
- BindingProvider bp = (BindingProvider)stub;
- Map<String, Object> reqCtx = bp.getRequestContext();
- for (UnifiedStubPropertyMetaData prop : pi.getStubProperties())
- {
- log.debug("Set stub property: " + prop);
- reqCtx.put(prop.getPropName(), prop.getPropValue());
- }
- break;
- }
}
- if (match == false)
- if (log.isDebugEnabled())
- log.debug("No matching port configuration for: [portName=" +
portName + ",seiName=" + seiName + "]");
-
- if (log.isDebugEnabled())
- log.debug("Configure Stub: [configName=" + configName +
",configFile=" + configFile + "]");
if (configName != null || configFile != null)
+ {
+ log.debug("Configure Stub: [configName=" + configName +
",configFile=" + configFile + "]");
stub.setConfigName(configName, configFile);
+ }
}
@Override
Modified: trunk/jbossws-core/src/java/org/jboss/ws/extensions/xop/XOPContext.java
===================================================================
--- trunk/jbossws-core/src/java/org/jboss/ws/extensions/xop/XOPContext.java 2007-04-13
17:23:32 UTC (rev 2833)
+++ trunk/jbossws-core/src/java/org/jboss/ws/extensions/xop/XOPContext.java 2007-04-13
17:33:29 UTC (rev 2834)
@@ -37,6 +37,7 @@
import org.jboss.ws.Constants;
import org.jboss.ws.WSException;
import org.jboss.ws.core.CommonMessageContext;
+import org.jboss.ws.core.MessageAbstraction;
import org.jboss.ws.core.StubExt;
import org.jboss.ws.core.soap.MessageContextAssociation;
import org.jboss.ws.core.soap.NameImpl;
@@ -109,8 +110,8 @@
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
if (msgContext != null)
{
- SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
- String[] contentType =
soapMessage.getMimeHeaders().getHeader("content-type");
+ MessageAbstraction message = msgContext.getMessageAbstraction();
+ String[] contentType =
message.getMimeHeaders().getHeader("content-type");
if (contentType != null)
{
for (String value : contentType)
@@ -136,7 +137,7 @@
*/
public static boolean isMTOMEnabled()
{
- CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+ CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
Boolean mtomEnabled = (Boolean)msgContext.get(StubExt.PROPERTY_MTOM_ENABLED);
return Boolean.TRUE.equals(mtomEnabled);
}
@@ -278,7 +279,8 @@
{
SOAPElement parentElement = xopElement.getParentElement();
- if(log.isDebugEnabled()) log.debug("Replace base64 representation on element
[xmlName=" + parentElement.getLocalName() + "]");
+ if (log.isDebugEnabled())
+ log.debug("Replace base64 representation on element [xmlName=" +
parentElement.getLocalName() + "]");
String base64 = xopElement.getValue();
byte[] data = SimpleTypeBindings.unmarshalBase64(base64);
@@ -300,7 +302,8 @@
{
SOAPElement xopInclude =
xopElement.addChildElement(Constants.NAME_XOP_INCLUDE);
xopInclude.setAttribute("href", cid);
- if(log.isDebugEnabled()) log.debug("Restored xop:Include element on
[xmlName=" + xopElement.getLocalName() + "]");
+ if (log.isDebugEnabled())
+ log.debug("Restored xop:Include element on [xmlName=" +
xopElement.getLocalName() + "]");
XOPContext.setXOPMessage(true);
}
@@ -314,7 +317,8 @@
private static void replaceXOPInclude(SOAPElement parent, SOAPElement
xopIncludeElement)
{
- if(log.isDebugEnabled()) log.debug("Replace xop:Include on element
[xmlName=" + parent.getLocalName() + "]");
+ if (log.isDebugEnabled())
+ log.debug("Replace xop:Include on element [xmlName=" +
parent.getLocalName() + "]");
String cid = xopIncludeElement.getAttribute("href");
byte[] data;
@@ -343,7 +347,8 @@
parent.setValue(base64);
parent.setAttributeNS(NS_XOP_JBOSSWS, "content-type", contentType);
- if(log.isDebugEnabled()) log.debug("Created base64 representation for
content-type " + contentType);
+ if (log.isDebugEnabled())
+ log.debug("Created base64 representation for content-type " +
contentType);
// cleanup the attachment part
CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
@@ -357,7 +362,8 @@
if (null == removedPart)
throw new WSException("Unable to remove attachment part " + cid);
- if(log.isDebugEnabled()) log.debug("Removed attachment part " + cid);
+ if (log.isDebugEnabled())
+ log.debug("Removed attachment part " + cid);
// leave soap object model in a valid state
setXOPMessage(false);