Author: jason.greene(a)jboss.com
Date: 2006-12-12 02:33:25 -0500 (Tue, 12 Dec 2006)
New Revision: 1628
Modified:
trunk/src/main/java/javax/jws/soap/SOAPBinding.java
trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java
trunk/src/main/java/org/jboss/ws/core/EndpointInvocation.java
trunk/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
trunk/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
trunk/src/main/java/org/jboss/ws/metadata/umdm/OperationMetaData.java
trunk/src/main/java/org/jboss/ws/metadata/umdm/ParameterMetaData.java
trunk/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Writer.java
Log:
Improve the soap binding code a bit
Fix a number of CTS issues
Modified: trunk/src/main/java/javax/jws/soap/SOAPBinding.java
===================================================================
--- trunk/src/main/java/javax/jws/soap/SOAPBinding.java 2006-12-11 22:57:56 UTC (rev
1627)
+++ trunk/src/main/java/javax/jws/soap/SOAPBinding.java 2006-12-12 07:33:25 UTC (rev
1628)
@@ -35,7 +35,7 @@
* @since 26-Apr-2005
*/
@Retention(value = RetentionPolicy.RUNTIME)
-@Target(value = { ElementType.TYPE })
+@Target(value = { ElementType.TYPE, ElementType.METHOD })
public @interface SOAPBinding
{
Modified: trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-11 22:57:56 UTC
(rev 1627)
+++ trunk/src/main/java/org/jboss/ws/core/CommonSOAPBinding.java 2006-12-12 07:33:25 UTC
(rev 1628)
@@ -169,59 +169,34 @@
NamespaceRegistry namespaceRegistry = msgContext.getNamespaceRegistry();
Style style = opMetaData.getStyle();
+ SOAPElement soapBodyElement = soapBody;
if (style == Style.RPC)
{
QName opQName = opMetaData.getQName();
Name opName = new NameImpl(namespaceRegistry.registerQName(opQName));
log.debug("Create RPC body element: " + opName);
- SOAPBodyElement soapBodyElement = new SOAPBodyElementRpc(opName);
-
-
+ soapBodyElement = new SOAPBodyElementRpc(opName);
soapBodyElement =
(SOAPBodyElement)soapBody.addChildElement(soapBodyElement);
+ }
- for (ParameterMetaData paramMetaData : opMetaData.getInputParameters())
- {
- QName xmlName = paramMetaData.getXmlName();
- Object value = epInv.getRequestParamValue(xmlName);
+ for (ParameterMetaData paramMetaData : opMetaData.getInputParameters())
+ {
+ QName xmlName = paramMetaData.getXmlName();
+ Object value = epInv.getRequestParamValue(xmlName);
- if (paramMetaData.isSwA())
- {
- CIDGenerator cidGenerator = reqMessage.getCidGenerator();
- AttachmentPart part = createAttachmentPart(paramMetaData, value,
cidGenerator);
- reqMessage.addAttachmentPart(part);
- }
- else
- {
- SOAPElement soapElement = paramMetaData.isInHeader() ?
(SOAPElement)soapHeader : soapBodyElement;
- addParameterToMessage(paramMetaData, value, soapElement);
- }
+ if (paramMetaData.isSwA())
+ {
+ CIDGenerator cidGenerator = reqMessage.getCidGenerator();
+ AttachmentPart part = createAttachmentPart(paramMetaData, value,
cidGenerator);
+ reqMessage.addAttachmentPart(part);
}
- }
- else if (style == Style.DOCUMENT)
- {
- for (ParameterMetaData paramMetaData : opMetaData.getInputParameters())
+ else
{
- QName xmlName = paramMetaData.getXmlName();
- Object value = epInv.getRequestParamValue(xmlName);
-
- if (paramMetaData.isSwA())
- {
- CIDGenerator cidGenerator = reqMessage.getCidGenerator();
- AttachmentPart part = createAttachmentPart(paramMetaData, value,
cidGenerator);
- reqMessage.addAttachmentPart(part);
- }
- else
- {
- SOAPElement soapElement = paramMetaData.isInHeader() ?
(SOAPElement)soapHeader : soapBody;
- addParameterToMessage(paramMetaData, value, soapElement);
- }
+ SOAPElement soapElement = paramMetaData.isInHeader() ?
(SOAPElement)soapHeader : soapBodyElement;
+ addParameterToMessage(paramMetaData, value, soapElement);
}
}
- else
- {
- throw new WSException("Unsupported message style: " + style);
- }
// Add unbound headers
if (unboundHeaders != null)
@@ -295,51 +270,25 @@
if (opMetaData.isMessageEndpoint() == false)
{
Style style = opMetaData.getStyle();
+ SOAPElement soapBodyElement = soapBody;
if (style == Style.RPC)
{
- SOAPBodyElement soapBodyElement =
(SOAPBodyElement)soapBody.getChildElements().next();
+ soapBodyElement = (SOAPBodyElement)soapBody.getChildElements().next();
Name elName = soapBodyElement.getElementName();
QName elQName = new QName(elName.getURI(), elName.getLocalName(),
elName.getPrefix());
elQName = namespaceRegistry.registerQName(elQName);
-
- for (ParameterMetaData paramMetaData : opMetaData.getParameters())
- {
- QName xmlName = paramMetaData.getXmlName();
- if (paramMetaData.getMode() == ParameterMode.OUT)
- {
- epInv.setRequestParamValue(xmlName, null);
- }
- else
- {
- if (paramMetaData.isSwA())
- {
- Object value = getAttachmentFromMessage(paramMetaData,
reqMessage);
- epInv.setRequestParamValue(xmlName, value);
- }
- else
- {
- if (paramMetaData.isInHeader() == false)
- {
- Object value = getParameterFromMessage(paramMetaData,
soapBodyElement, false);
- epInv.setRequestParamValue(xmlName, value);
- }
- else
- {
- Object value = getParameterFromMessage(paramMetaData,
soapHeader, false);
- epInv.setRequestParamValue(xmlName, value);
- }
- }
- }
- }
}
- // Document style
- else
+ for (ParameterMetaData paramMetaData : opMetaData.getParameters())
{
- for (ParameterMetaData paramMetaData : opMetaData.getParameters())
+ QName xmlName = paramMetaData.getXmlName();
+ if (paramMetaData.getMode() == ParameterMode.OUT)
{
- QName xmlName = paramMetaData.getXmlName();
+ epInv.setRequestParamValue(xmlName, null);
+ }
+ else
+ {
if (paramMetaData.isSwA())
{
Object value = getAttachmentFromMessage(paramMetaData, reqMessage);
@@ -347,24 +296,9 @@
}
else
{
- if (paramMetaData.isInHeader())
- {
- if (paramMetaData.getMode() == ParameterMode.IN)
- {
- Object value = getParameterFromMessage(paramMetaData,
soapHeader, false);
- epInv.setRequestParamValue(xmlName, value);
- }
- else
- {
- Object value = getParameterFromMessage(paramMetaData,
soapHeader, true);
- epInv.setRequestParamValue(xmlName, value);
- }
- }
- else
- {
- Object value = getParameterFromMessage(paramMetaData, soapBody,
false);
- epInv.setRequestParamValue(xmlName, value);
- }
+ SOAPElement element = paramMetaData.isInHeader() ? soapHeader :
soapBodyElement;
+ Object value = getParameterFromMessage(paramMetaData, element,
false);
+ epInv.setRequestParamValue(xmlName, value);
}
}
}
@@ -427,97 +361,61 @@
NamespaceRegistry namespaceRegistry = msgContext.getNamespaceRegistry();
Style style = opMetaData.getStyle();
+ SOAPElement soapBodyElement = soapBody;
if (style == Style.RPC)
{
QName opQName = opMetaData.getResponseName();
Name opName = new NameImpl(namespaceRegistry.registerQName(opQName));
- SOAPBodyElement soapBodyElement = new SOAPBodyElementRpc(opName);
-
+ soapBodyElement = new SOAPBodyElementRpc(opName);
soapBodyElement =
(SOAPBodyElement)soapBody.addChildElement(soapBodyElement);
-
- // Add the return to the message
- ParameterMetaData retMetaData = opMetaData.getReturnParameter();
- if (retMetaData != null)
+ }
+ // Add the return to the message
+ ParameterMetaData retMetaData = opMetaData.getReturnParameter();
+ if (retMetaData != null)
+ {
+ Object value = epInv.getReturnValue();
+ // TODO calls to ParameterWrapping should be elsewhere
+ if (opMetaData.isDocumentWrapped())
+ value = ParameterWrapping.wrapResponseParameters(retMetaData, value,
epInv.getOutParameters());
+ if (retMetaData.isSwA())
{
- Object value = epInv.getReturnValue();
- if (retMetaData.isSwA())
- {
- CIDGenerator cidGenerator = resMessage.getCidGenerator();
- AttachmentPart part = createAttachmentPart(retMetaData, value,
cidGenerator);
- resMessage.addAttachmentPart(part);
- epInv.setReturnValue(part);
- }
- else
- {
- SOAPContentElement soapElement = addParameterToMessage(retMetaData,
value, soapBodyElement);
- epInv.setReturnValue(soapElement);
- soapElement.setObjectValue(value);
- }
+ CIDGenerator cidGenerator = resMessage.getCidGenerator();
+ AttachmentPart part = createAttachmentPart(retMetaData, value,
cidGenerator);
+ resMessage.addAttachmentPart(part);
+ epInv.setReturnValue(part);
}
-
- // Add the out parameters to the message
- for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
+ else
{
- QName xmlName = paramMetaData.getXmlName();
- Object value = epInv.getResponseParamValue(xmlName);
- if (paramMetaData.isSwA())
- {
- CIDGenerator cidGenerator = resMessage.getCidGenerator();
- AttachmentPart part = createAttachmentPart(retMetaData, value,
cidGenerator);
- resMessage.addAttachmentPart(part);
- }
- else
- {
- if (paramMetaData.isInHeader())
- {
- addParameterToMessage(paramMetaData, value, soapHeader);
- }
- else
- {
- addParameterToMessage(paramMetaData, value, soapBodyElement);
- }
- }
+ SOAPContentElement soapElement = addParameterToMessage(retMetaData, value,
soapBodyElement);
+ epInv.setReturnValue(soapElement);
+ soapElement.setObjectValue(value);
}
}
- else if (style == Style.DOCUMENT)
+
+ // Add the out parameters to the message
+ for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
{
- ParameterMetaData retMetaData = opMetaData.getReturnParameter();
- if (retMetaData != null)
+ QName xmlName = paramMetaData.getXmlName();
+ Object value = epInv.getResponseParamValue(xmlName);
+ if (paramMetaData.isSwA())
{
- Object value = epInv.getReturnValue();
- if (opMetaData.isDocumentWrapped())
- value = ParameterWrapping.wrapResponseParameters(retMetaData, value,
epInv.getOutParameters());
-
- if (retMetaData.isSwA())
- {
- CIDGenerator cidGenerator = resMessage.getCidGenerator();
- AttachmentPart part = createAttachmentPart(retMetaData, value,
cidGenerator);
- resMessage.addAttachmentPart(part);
- epInv.setReturnValue(part);
- }
- else
- {
- SOAPContentElement soapElement = addParameterToMessage(retMetaData,
value, soapBody);
- epInv.setReturnValue(soapElement);
- }
+ CIDGenerator cidGenerator = resMessage.getCidGenerator();
+ AttachmentPart part = createAttachmentPart(retMetaData, value,
cidGenerator);
+ resMessage.addAttachmentPart(part);
}
-
- // Add the out header parameters to the message
- for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
+ else
{
- QName xmlName = paramMetaData.getXmlName();
if (paramMetaData.isInHeader())
{
- Object value = epInv.getResponseParamValue(xmlName);
addParameterToMessage(paramMetaData, value, soapHeader);
}
+ else
+ {
+ addParameterToMessage(paramMetaData, value, soapBodyElement);
+ }
}
}
- else
- {
- throw new WSException("Unsupported message style: " + style);
- }
return resMessage;
}
@@ -602,75 +500,44 @@
}
Style style = opMetaData.getStyle();
+ SOAPElement soapElement = soapBody;
if (style == Style.RPC)
{
if (soapBodyElement == null)
throw new WSException("Cannot unbind response message with empty soap
body");
+ soapElement = soapBodyElement;
+ }
- ParameterMetaData retMetaData = opMetaData.getReturnParameter();
- if (retMetaData != null)
+ ParameterMetaData retMetaData = opMetaData.getReturnParameter();
+ if (retMetaData != null)
+ {
+ if (retMetaData.isSwA())
{
- if (retMetaData.isSwA())
- {
- Object value = getAttachmentFromMessage(retMetaData, resMessage);
- epInv.setReturnValue(value);
- }
- else
- {
- Object value = getParameterFromMessage(retMetaData, soapBodyElement,
false);
- epInv.setReturnValue(value);
- }
+ Object value = getAttachmentFromMessage(retMetaData, resMessage);
+ epInv.setReturnValue(value);
}
-
- for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
+ else
{
- QName xmlName = paramMetaData.getXmlName();
- if (paramMetaData.isSwA())
- {
- Object value = getAttachmentFromMessage(paramMetaData, resMessage);
- epInv.setResponseParamValue(xmlName, value);
- }
- else
- {
- SOAPElement soapElement = paramMetaData.isInHeader() ? soapHeader :
(SOAPElement)soapBodyElement;
- Object value = getParameterFromMessage(paramMetaData, soapElement,
false);
- epInv.setResponseParamValue(xmlName, value);
- }
+ Object value = getParameterFromMessage(retMetaData, soapElement, false);
+ epInv.setReturnValue(value);
}
}
- else if (style == Style.DOCUMENT)
- {
- ParameterMetaData retMetaData = opMetaData.getReturnParameter();
- // WS-Eventing has no message part for UnsubscribeResponseMsg
- if (retMetaData != null)
+ for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
+ {
+ QName xmlName = paramMetaData.getXmlName();
+ if (paramMetaData.isSwA())
{
- if (retMetaData.isSwA())
- {
- Object value = getAttachmentFromMessage(retMetaData, resMessage);
- epInv.setReturnValue(value);
- }
- else
- {
- Object value = getParameterFromMessage(retMetaData, soapBody, false);
- epInv.setReturnValue(value);
- }
-
- for (ParameterMetaData paramMetaData : opMetaData.getOutputParameters())
- {
- QName xmlName = paramMetaData.getXmlName();
- if (paramMetaData.isInHeader())
- {
- Object value = getParameterFromMessage(paramMetaData, soapHeader,
false);
- epInv.setResponseParamValue(xmlName, value);
- }
- }
+ Object value = getAttachmentFromMessage(paramMetaData, resMessage);
+ epInv.setResponseParamValue(xmlName, value);
}
+ else
+ {
+ SOAPElement element = paramMetaData.isInHeader() ? soapHeader :
soapElement;
+ Object value = getParameterFromMessage(paramMetaData, element, false);
+ epInv.setResponseParamValue(xmlName, value);
+ }
}
- else
- {
- throw new WSException("Unsupported message style: " + style);
- }
}
catch (Exception e)
{
Modified: trunk/src/main/java/org/jboss/ws/core/EndpointInvocation.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/core/EndpointInvocation.java 2006-12-11 22:57:56 UTC
(rev 1627)
+++ trunk/src/main/java/org/jboss/ws/core/EndpointInvocation.java 2006-12-12 07:33:25 UTC
(rev 1628)
@@ -192,7 +192,7 @@
if (xmlType == null)
throw new IllegalStateException("Cannot obtain xml type for:
[xmlName=" + xmlName + ",javaName=" + javaName + "]");
-
+
Object retValue = paramValue;
// Handle attachment part
@@ -266,14 +266,14 @@
if (HolderUtils.isHolderType(inputType))
{
// At runtime we lose the generic info for JAX-WS types,
- // So we use the actual instance type if possible
+ // So we use the actual instance type
value = HolderUtils.getHolderValue(value);
- inputType = (value == null) ? HolderUtils.getValueType(inputType) :
value.getClass();
+ inputType = (value == null) ? null : value.getClass();
}
// Verify that the java type matches a registered xmlType
// Attachments are skipped because they don't use type mapping
- if (!paramMetaData.isSwA() && !paramMetaData.isXOP())
+ if (value != null && !paramMetaData.isSwA() &&
!paramMetaData.isXOP())
{
if (JavaUtils.isAssignableFrom(javaType, inputType) == false)
throw new WSException("Parameter '" + javaType +
"' not assignable from: " + inputType);
Modified:
trunk/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
===================================================================
---
trunk/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2006-12-11
22:57:56 UTC (rev 1627)
+++
trunk/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2006-12-12
07:33:25 UTC (rev 1628)
@@ -59,6 +59,7 @@
import javax.xml.ws.addressing.AddressingProperties;
import org.jboss.logging.Logger;
+import org.jboss.remoting.samples.chat.exceptions.InvalidArgumentException;
import org.jboss.ws.Constants;
import org.jboss.ws.WSException;
import org.jboss.ws.core.jaxrpc.Style;
@@ -331,7 +332,10 @@
if (webParam.targetNamespace().length() > 0)
namespace = webParam.targetNamespace();
- if (webParam.name().length() > 0)
+ // RPC types use the partName for their XML name
+ if (webParam.partName().length() > 0 && opMetaData.isRPCLiteral())
+ name = webParam.partName();
+ else if (webParam.name().length() > 0)
name = webParam.name();
header = webParam.header();
@@ -363,7 +367,10 @@
if (anWebResult.targetNamespace().length() > 0)
namespace = anWebResult.targetNamespace();
- if (anWebResult.name().length() > 0)
+ // RPC types use the partName for their XML name
+ if (anWebResult.partName().length() > 0 &&
opMetaData.isRPCLiteral())
+ name = anWebResult.partName();
+ else if (anWebResult.name().length() > 0)
name = anWebResult.name();
header = anWebResult.header();
@@ -479,6 +486,15 @@
OperationMetaData opMetaData = new OperationMetaData(epMetaData, new
QName(targetNS, operationName), javaName);
opMetaData.setOneWay(method.isAnnotationPresent(Oneway.class));
opMetaData.setSOAPAction(soapAction);
+
+ if (method.isAnnotationPresent(SOAPBinding.class))
+ {
+ SOAPBinding anBinding = method.getAnnotation(SOAPBinding.class);
+ if (anBinding.style() != SOAPBinding.Style.DOCUMENT || epMetaData.getStyle() !=
Style.DOCUMENT)
+ throw new IllegalArgumentException("@SOAPBinding must be specified using
DOCUMENT style when placed on a method");
+ opMetaData.setParameterStyle(anBinding.parameterStyle());
+ }
+
epMetaData.addOperation(opMetaData);
// Build parameter meta data
@@ -554,6 +570,9 @@
paramMetaData.setIndex(i);
paramMetaData.setMode(mode);
+ if (anWebParam != null && anWebParam.partName().length() > 0)
+ paramMetaData.setPartName(anWebParam.partName());
+
opMetaData.addParameter(paramMetaData);
javaTypes.add(javaType);
typeRefs.add(new TypeReference(xmlName, genericType,
parameterAnnotations[i]));
@@ -586,6 +605,9 @@
{
ParameterMetaData retMetaData = new ParameterMetaData(opMetaData, xmlName,
returnTypeName);
retMetaData.setInHeader(isHeader);
+ if (anWebResult != null && anWebResult.partName().length() > 0)
+ retMetaData.setPartName(anWebResult.partName());
+
opMetaData.setReturnParameter(retMetaData);
javaTypes.add(returnType);
Modified: trunk/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java 2006-12-11
22:57:56 UTC (rev 1627)
+++ trunk/src/main/java/org/jboss/ws/metadata/umdm/EndpointMetaData.java 2006-12-12
07:33:25 UTC (rev 1628)
@@ -195,13 +195,13 @@
{
this.seiName = seiName;
this.seiClass = null;
-
+
UnifiedMetaData wsMetaData = serviceMetaData.getUnifiedMetaData();
if (wsMetaData.isEagerInitialized())
{
if (UnifiedMetaData.isFinalRelease() == false)
log.warn("Set SEI name after eager initialization", new
IllegalStateException());
-
+
// reinitialize
initializeInternal();
}
@@ -214,7 +214,7 @@
return classLoader;
}
- /**
+ /**
* Load the service endpoint interface.
* It should only be cached during eager initialization.
*/
@@ -366,7 +366,7 @@
for (ParameterMetaData auxParam : auxOperation.getParameters())
{
ParameterMode mode = auxParam.getMode();
- if (auxParam.isInHeader() == false && mode == ParameterMode.IN)
+ if (auxParam.isInHeader() == false && mode != ParameterMode.OUT)
{
paramMetaData = auxParam;
break;
@@ -393,7 +393,7 @@
{
if (opMetaDataCache.size() == 0)
{
- // This can happen when the SEI mapping was not found
+ // This can happen when the SEI mapping was not found
log.warn("Access to empty operation meta data cache,
reinitializing");
initializeInternal();
}
@@ -476,11 +476,11 @@
{
for (HandlerMetaData handler : handlers)
handler.validate();
-
+
for (OperationMetaData opMetaData : operations)
opMetaData.validate();
}
-
+
/**
* @see UnifiedMetaData#eagerInitialize()
*/
@@ -493,11 +493,11 @@
{
// reset sei class
seiClass = null;
-
+
// Initialize handlers
for (HandlerMetaData handler : handlers)
handler.eagerInitialize();
-
+
eagerInitializeOperations();
eagerInitializeTypes();
}
@@ -509,7 +509,7 @@
{
List<Method> unsynchronizedMethods = new ArrayList<Method>();
unsynchronizedMethods.addAll(Arrays.asList(seiClass.getMethods()));
-
+
for (OperationMetaData opMetaData : operations)
{
opMetaData.eagerInitialize(unsynchronizedMethods);
@@ -522,7 +522,7 @@
}
}
}
-
+
private void eagerInitializeTypes()
{
TypeMappingImpl typeMapping = serviceMetaData.getTypeMapping();
@@ -549,7 +549,7 @@
{
ClassLoader classLoader = getClassLoader();
Class javaType = JavaUtils.loadJavaType(javaTypeName, classLoader);
-
+
if (JavaUtils.isPrimitive(javaTypeName))
javaType = JavaUtils.getWrapperType(javaType);
Modified: trunk/src/main/java/org/jboss/ws/metadata/umdm/OperationMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/umdm/OperationMetaData.java 2006-12-11
22:57:56 UTC (rev 1627)
+++ trunk/src/main/java/org/jboss/ws/metadata/umdm/OperationMetaData.java 2006-12-12
07:33:25 UTC (rev 1628)
@@ -62,6 +62,7 @@
private Method javaMethod;
private boolean oneWay;
private String soapAction;
+ private ParameterStyle parameterStyle;
private List<ParameterMetaData> parameters = new
ArrayList<ParameterMetaData>();
private List<FaultMetaData> faults = new ArrayList<FaultMetaData>();
private ParameterMetaData returnParam;
@@ -133,9 +134,14 @@
public ParameterStyle getParameterStyle()
{
- return epMetaData.getParameterStyle();
+ return (parameterStyle != null) ? parameterStyle : epMetaData.getParameterStyle();
}
+ public void setParameterStyle(ParameterStyle parameterStyle)
+ {
+ this.parameterStyle = parameterStyle;
+ }
+
public boolean isRPCLiteral()
{
return getStyle() == Style.RPC && getUse() == Use.LITERAL;
@@ -145,7 +151,7 @@
{
return getStyle() == Style.RPC && getUse() == Use.ENCODED;
}
-
+
public boolean isDocumentBare()
{
return getStyle() == Style.DOCUMENT && getParameterStyle() ==
ParameterStyle.BARE;
@@ -160,7 +166,7 @@
{
return javaName;
}
-
+
public Method getJavaMethod()
{
Method tmpMethod = javaMethod;
@@ -172,20 +178,20 @@
if (isJavaMethod(method))
{
tmpMethod = method;
-
+
UnifiedMetaData wsMetaData =
epMetaData.getServiceMetaData().getUnifiedMetaData();
if (wsMetaData.isEagerInitialized())
{
if (UnifiedMetaData.isFinalRelease() == false)
log.warn("Loading java method after eager initialization",
new IllegalStateException());
-
+
javaMethod = method;
}
-
+
break;
}
}
-
+
if (tmpMethod == null)
throw new WSException("Cannot find java method: " + javaName);
}
@@ -217,13 +223,13 @@
}
}
}
-
+
if (log.isTraceEnabled())
log.trace("Synchronized java method:\n" + method + "\nwith:
" + toString());
-
+
return isJavaMethod;
}
-
+
private boolean matchParameters(Method method, boolean exact)
{
Class[] paramTypes = method.getParameterTypes();
@@ -242,7 +248,7 @@
// We should have an entry for every parameter index if we match
return matches.size() == paramTypes.length;
}
-
+
/** Return true if this is a generic message style destination that takes a
org.w3c.dom.Element
*/
public boolean isMessageEndpoint()
@@ -454,7 +460,7 @@
{
// reset java method
javaMethod = null;
-
+
for (ParameterMetaData parameter : parameters)
parameter.eagerInitialize();
@@ -463,7 +469,7 @@
for (FaultMetaData fault : faults)
fault.eagerInitialize();
-
+
// Method initialization
for (Method method : unsynchronizedMethods)
{
@@ -473,7 +479,7 @@
break;
}
}
-
+
// Report unsynchronized java method
if (javaMethod == null)
{
Modified: trunk/src/main/java/org/jboss/ws/metadata/umdm/ParameterMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/umdm/ParameterMetaData.java 2006-12-11
22:57:56 UTC (rev 1627)
+++ trunk/src/main/java/org/jboss/ws/metadata/umdm/ParameterMetaData.java 2006-12-12
07:33:25 UTC (rev 1628)
@@ -56,7 +56,7 @@
{
// provide logging
private final Logger log = Logger.getLogger(ParameterMetaData.class);
-
+
// The parent operation
private OperationMetaData opMetaData;
@@ -89,7 +89,7 @@
messageTypes.add("javax.xml.soap.SOAPElement");
messageTypes.add("org.w3c.dom.Element");
}
-
+
public ParameterMetaData(OperationMetaData opMetaData, QName xmlName, QName xmlType,
String javaTypeName)
{
this(opMetaData, xmlName, javaTypeName);
@@ -186,7 +186,7 @@
UnifiedMetaData wsMetaData =
opMetaData.getEndpointMetaData().getServiceMetaData().getUnifiedMetaData();
if (wsMetaData.isEagerInitialized() && UnifiedMetaData.isFinalRelease() ==
false)
log.warn("Set java type name after eager initialization", new
IllegalStateException());
-
+
javaTypeName = typeName;
javaType = null;
}
@@ -203,7 +203,7 @@
{
ClassLoader loader = opMetaData.getEndpointMetaData().getClassLoader();
tmpJavaType = JavaUtils.loadJavaType(javaTypeName, loader);
-
+
UnifiedMetaData wsMetaData =
opMetaData.getEndpointMetaData().getServiceMetaData().getUnifiedMetaData();
if (wsMetaData.isEagerInitialized())
{
@@ -302,12 +302,12 @@
{
this.soapArrayCompType = xmlType;
}
-
+
public boolean isMessageType()
{
return messageTypes.contains(javaTypeName);
}
-
+
public static boolean isMessageType(String javaTypeName)
{
return messageTypes.contains(javaTypeName);
@@ -360,7 +360,7 @@
{
// nothing to do
}
-
+
/**
* @see UnifiedMetaData#eagerInitialize()
*/
@@ -368,8 +368,8 @@
{
// reset java type
javaType = null;
-
- if (getOperationMetaData().isDocumentWrapped() && isMessageType() ==
false)
+
+ if (getOperationMetaData().isDocumentWrapped() && !isInHeader() &&
!isMessageType())
{
new DynamicWrapperGenerator(getClassLoader()).generate(this);
Modified: trunk/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Writer.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Writer.java 2006-12-11 22:57:56 UTC
(rev 1627)
+++ trunk/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Writer.java 2006-12-12 07:33:25 UTC
(rev 1628)
@@ -475,7 +475,7 @@
if (reference instanceof WSDLInterfaceOperationOutput)
messageName += "Response";
soapHeader.append("<").append(soapPrefix).append(":header
use='literal' message='tns:").append(messageName);
- soapHeader.append("'
part='").append(header.getElement().getLocalPart()).append("'/>");
+ soapHeader.append("'
part='").append(header.getPartName()).append("'/>");
}
}