parameterList = XmlUtil.parseTokenList(parameterOrder);
parameterOrderPresent = true;
} else {
parameterList = new ArrayList<String>();
}
Message inputMessage = getInputMessage();
Message outputMessage = getOutputMessage();
List<MessagePart> outputParts = null;
List<MessagePart> inputParts = inputMessage.getParts();
//reset the mode and ret flag, as MEssagePArts aer shared across ports
for (MessagePart part : inputParts) {
part.setMode(Mode.IN);
part.setReturn(false);
}
if (isRequestResponse()) {
outputParts = outputMessage.getParts();
for (MessagePart part : outputParts) {
part.setMode(Mode.OUT);
part.setReturn(false);
}
}
if (parameterOrderPresent) {
boolean validParameterOrder = true;
Iterator<String> paramOrders = parameterList.iterator();
// If any part in the parameterOrder is not present in the request or
// response message, we completely ignore the parameterOrder hint
while (paramOrders.hasNext()) {
String param = paramOrders.next();
boolean partFound = false;
for (MessagePart part : inputParts) {
if (param.equals(part.getName())) {
partFound = true;
break;
}
}
// if not found, check in output parts
if (!partFound) {
for (MessagePart part : outputParts) {
if (param.equals(part.getName())) {
partFound = true;
break;
}
}
}
if (!partFound) {
warning(info.operation.getEntity(), ModelerMessages.WSDLMODELER_INVALID_PARAMETERORDER_PARAMETER(param, info.operation.getName().getLocalPart()));
validParameterOrder = false;
}
}
List<MessagePart> inputUnlistedParts = new ArrayList<MessagePart>();
List<MessagePart> outputUnlistedParts = new ArrayList<MessagePart>();
//gather input Parts
if (validParameterOrder) {
for (String param : parameterList) {
MessagePart part = inputMessage.getPart(param);
if (part != null) {
params.add(part);
continue;
}
if (isRequestResponse()) {
MessagePart outPart = outputMessage.getPart(param);
if (outPart != null) {
params.add(outPart);
}
}
}