protected void processOperationDOC(WSDLInterfaceOperation interfaceOperation, WSDLBindingOperation bindingOperation, OperationMetaData operation)
{
interfaceOperation.setStyle(Constants.URI_STYLE_DOCUMENT);
WSDLInterfaceOperationInput input = new WSDLInterfaceOperationInput(interfaceOperation);
WSDLBindingOperationInput bindingInput = new WSDLBindingOperationInput(bindingOperation);
WSDLInterfaceOperationOutput output = null;
WSDLBindingOperationOutput bindingOutput = null;
boolean twoWay = !operation.isOneWay();
if (twoWay)
{
output = new WSDLInterfaceOperationOutput(interfaceOperation);
bindingOutput = new WSDLBindingOperationOutput(bindingOperation);
ParameterMetaData returnParameter = operation.getReturnParameter();
if (returnParameter != null)
{
QName xmlName = returnParameter.getXmlName();
String partName = returnParameter.getPartName();
if (returnParameter.isInHeader())
{
WSDLSOAPHeader header = new WSDLSOAPHeader(xmlName, partName);
header.setIncludeInSignature(true);
bindingOutput.addSoapHeader(header);
}
else
{
output.setElement(xmlName);
output.setPartName(partName);
}
addSignatureItem(interfaceOperation, returnParameter, true);
}
// If there is no return parameter, it will most likely be set later with an INOUT or OUT parameter.
// Otherwise, a null element means there is a 0 body element part, which is allowed by BP 1.0
interfaceOperation.addOutput(output);
bindingOperation.addOutput(bindingOutput);
}
for (ParameterMetaData param : operation.getParameters())
{
if (param.isInHeader())
{
WSDLSOAPHeader header = new WSDLSOAPHeader(param.getXmlName(), param.getPartName());
header.setIncludeInSignature(true);
if (param.getMode() != ParameterMode.OUT)
bindingInput.addSoapHeader(header);
if (twoWay && param.getMode() != ParameterMode.IN)
bindingOutput.addSoapHeader(header);
}
else
{
if (param.getMode() != ParameterMode.OUT)
{
input.setElement(param.getXmlName());
input.setPartName(param.getPartName());
}
if (twoWay && param.getMode() != ParameterMode.IN)
{
output.setElement(param.getXmlName());
output.setPartName(param.getPartName());