OperationMetaData om = getOperationMetaData(m);
OperationConfig opc = getOperationConfig(methodname, m.getParameterTypes());
if (opc != null)
om.setOneWay(opc.isOneWay);
ParameterMetaData wrappedParameter = null;
List<WrappedParameter> wrappedParameters = null;
if (om.isDocumentWrapped())
{
QName xmlName = new QName(tmd.typeNamespace, om.getQName().getLocalPart());
QName xmlType = xmlName;
wrappedParameter = new ParameterMetaData(om, xmlName, xmlType, null);
wrappedParameters = new ArrayList<WrappedParameter>(len);
wrappedParameter.setWrappedParameters(wrappedParameters);
om.addParameter(wrappedParameter);
if (! om.isOneWay())
{
xmlType = xmlName = new QName(tmd.typeNamespace, om.getResponseName().getLocalPart());
ParameterMetaData retMetaData = new ParameterMetaData(om, xmlName, xmlType, null);
retMetaData.setWrappedParameters(new ArrayList<WrappedParameter>(0));
om.setReturnParameter(retMetaData);
}
}
for (int i = 0; i < len; i++)
{
Class paramType = paramTypes[i];
/**
* Test if method param extends java.rmi.Remote
*/
if (Remote.class.isAssignableFrom(paramType))
throw new WSException("Param Type " + paramType.getName() + " should not extend java.rmi.Remote");
if (om.isDocumentWrapped() && !isHeaderParameter(opc, i))
{
QName xmlName = getXmlName(paramType, opc, i, null);
wrappedParameters.add(new WrappedParameter(xmlName, paramType.getName(), convertToProperty(xmlName.getLocalPart()), i));
}
else
{
om.addParameter(getParameterMetaData(paramType, om, opc, i));
}
}
// Handle return type
Class returnType = m.getReturnType();
if (void.class != returnType)
{
if (Remote.class.isAssignableFrom(returnType))
throw new WSException("Return Type " + returnType.getName() + " should not extend java.rmi.Remote");
if (om.isDocumentWrapped())
{
QName name = getReturnXmlName(opc, null);
WrappedParameter wrapped = new WrappedParameter(name, returnType.getName(), convertToProperty(name.getLocalPart()), -1);
ParameterMetaData retMetaData = om.getReturnParameter();
retMetaData.getWrappedParameters().add(wrapped);
}
else
{
om.setReturnParameter(getParameterMetaDataForReturnType(returnType, om, opc));
}