// We need to use the Qname of the actual type, not the QName of the element
TypeEntry type = p.getType();
if (type instanceof DefinedElement) {
type = type.getRefType();
}
QName qn = type.getQName();
String javaType = type.getName();
if (javaType != null) {
javaType += ".class, ";
} else {
javaType = "";
}
String typeString = "new javax.xml.rpc.namespace.QName(\"" +
qn.getNamespaceURI() + "\", \"" +
qn.getLocalPart() + "\")";
QName paramQName = p.getQName();
String qnName = "p" + i + "QName";
pw.println(" javax.xml.rpc.namespace.QName " + qnName + " = new javax.xml.rpc.namespace.QName(\"" +
paramQName.getNamespaceURI() + "\", \"" +
paramQName.getLocalPart() + "\");");
if (p.getMode() == Parameter.IN) {
pw.println(" call.addParameter(" + qnName + ", "
+ typeString + ", "
+ javaType + "javax.xml.rpc.ParameterMode.IN);");
}
else if (p.getMode() == Parameter.INOUT) {
pw.println(" call.addParameter(" + qnName + ", "
+ typeString + ", "
+ javaType + "javax.xml.rpc.ParameterMode.INOUT);");
}
else { // p.getMode() == Parameter.OUT
pw.println(" call.addParameter(" + qnName + ", "
+ typeString + ", "
+ javaType + "javax.xml.rpc.ParameterMode.OUT);");
}
}
// set output type
if (parms.returnType != null) {
// We need to use the Qname of the actual type, not the QName of the element
QName qn = parms.returnType.getQName();
if (parms.returnType instanceof DefinedElement) {
Node node = symbolTable.getTypeEntry(parms.returnType.getQName(), true).getNode();
QName qn2 = Utils.getNodeTypeRefQName(node, "type");
if (qn2 != null) {
qn = qn2;
}
}