use of com.sun.tools.ws.wsdl.document.MessagePart in project metro-jax-ws by eclipse-ee4j.
the class ModelerUtils method createRpcLitParameters.
public static List<Parameter> createRpcLitParameters(Message message, Block block, S2JJAXBModel jaxbModel, ErrorReceiverFilter errReceiver) {
RpcLitStructure rpcStruct = (RpcLitStructure) block.getType();
List<Parameter> parameters = new ArrayList<>();
for (MessagePart part : message.getParts()) {
if (!ModelerUtils.isBoundToSOAPBody(part))
continue;
QName name = part.getDescriptor();
TypeAndAnnotation typeAndAnn = jaxbModel.getJavaType(name);
if (typeAndAnn == null) {
String msgQName = "{" + message.getDefining().getTargetNamespaceURI() + "}" + message.getName();
errReceiver.error(part.getLocator(), ModelerMessages.WSDLMODELER_RPCLIT_UNKOWNSCHEMATYPE(name.toString(), part.getName(), msgQName));
throw new AbortException();
}
String type = typeAndAnn.getTypeClass().fullName();
type = ClassNameInfo.getGenericClass(type);
RpcLitMember param = new RpcLitMember(new QName("", part.getName()), type);
JavaType javaType = new JavaSimpleType(new JAXBTypeAndAnnotation(typeAndAnn));
param.setJavaType(javaType);
rpcStruct.addRpcLitMember(param);
Parameter parameter = ModelerUtils.createParameter(part.getName(), param, block);
parameter.setEmbedded(true);
parameters.add(parameter);
}
return parameters;
}
use of com.sun.tools.ws.wsdl.document.MessagePart in project metro-jax-ws by eclipse-ee4j.
the class WSDLParser method parseMessagePart.
private MessagePart parseMessagePart(TWSDLParserContextImpl context, Element e) {
context.push();
context.registerNamespaces(e);
MessagePart part = new MessagePart(forest.locatorTable.getStartLocation(e));
String partName = Util.getRequiredAttribute(e, Constants.ATTR_NAME);
part.setName(partName);
String elementAttr = XmlUtil.getAttributeOrNull(e, Constants.ATTR_ELEMENT);
String typeAttr = XmlUtil.getAttributeOrNull(e, Constants.ATTR_TYPE);
if (elementAttr != null) {
if (typeAttr != null) {
errReceiver.error(context.getLocation(e), WsdlMessages.PARSING_ONLY_ONE_OF_ELEMENT_OR_TYPE_REQUIRED(partName));
}
part.setDescriptor(context.translateQualifiedName(context.getLocation(e), elementAttr));
part.setDescriptorKind(SchemaKinds.XSD_ELEMENT);
} else if (typeAttr != null) {
part.setDescriptor(context.translateQualifiedName(context.getLocation(e), typeAttr));
part.setDescriptorKind(SchemaKinds.XSD_TYPE);
} else {
// XXX-NOTE - this is wrong; for extensibility purposes,
// any attribute can be specified on a <part> element, so
// we need to put an extensibility hook here
errReceiver.warning(forest.locatorTable.getStartLocation(e), WsdlMessages.PARSING_ELEMENT_OR_TYPE_REQUIRED(partName));
}
context.pop();
context.fireDoneParsingEntity(WSDLConstants.QNAME_PART, part);
return part;
}
use of com.sun.tools.ws.wsdl.document.MessagePart in project metro-jax-ws by eclipse-ee4j.
the class WSDLParser method parseMessage.
private Message parseMessage(TWSDLParserContextImpl context, Definitions definitions, Element e) {
context.push();
context.registerNamespaces(e);
Message message = new Message(definitions, forest.locatorTable.getStartLocation(e), errReceiver);
String name = Util.getRequiredAttribute(e, Constants.ATTR_NAME);
message.setName(name);
boolean gotDocumentation = false;
for (Iterator iter = XmlUtil.getAllChildren(e); iter.hasNext(); ) {
Element e2 = Util.nextElement(iter);
if (e2 == null)
break;
if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_DOCUMENTATION)) {
if (gotDocumentation) {
Util.fail("parsing.onlyOneDocumentationAllowed", e.getLocalName());
}
gotDocumentation = true;
message.setDocumentation(getDocumentationFor(e2));
} else if (XmlUtil.matchesTagNS(e2, WSDLConstants.QNAME_PART)) {
MessagePart part = parseMessagePart(context, e2);
message.add(part);
} else {
// Ignore any extensibility elements, WS-I BP 1.1 Profiled WSDL 1.1 schema allows extension elements here.
/*Util.fail(
"parsing.invalidElement",
e2.getTagName(),
e2.getNamespaceURI());
*/
}
}
context.pop();
context.fireDoneParsingEntity(WSDLConstants.QNAME_MESSAGE, message);
return message;
}
Aggregations