Search in sources :

Example 1 with MessagePart

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;
}
Also used : QName(javax.xml.namespace.QName) MessagePart(com.sun.tools.ws.wsdl.document.MessagePart) JavaSimpleType(com.sun.tools.ws.processor.model.java.JavaSimpleType) ArrayList(java.util.ArrayList) JavaType(com.sun.tools.ws.processor.model.java.JavaType) TypeAndAnnotation(com.sun.tools.xjc.api.TypeAndAnnotation) Parameter(com.sun.tools.ws.processor.model.Parameter) AbortException(com.sun.tools.ws.wscompile.AbortException)

Example 2 with MessagePart

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;
}
Also used : MessagePart(com.sun.tools.ws.wsdl.document.MessagePart)

Example 3 with MessagePart

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;
}
Also used : Message(com.sun.tools.ws.wsdl.document.Message) Element(org.w3c.dom.Element) MessagePart(com.sun.tools.ws.wsdl.document.MessagePart) Iterator(java.util.Iterator)

Aggregations

MessagePart (com.sun.tools.ws.wsdl.document.MessagePart)3 Parameter (com.sun.tools.ws.processor.model.Parameter)1 JavaSimpleType (com.sun.tools.ws.processor.model.java.JavaSimpleType)1 JavaType (com.sun.tools.ws.processor.model.java.JavaType)1 AbortException (com.sun.tools.ws.wscompile.AbortException)1 Message (com.sun.tools.ws.wsdl.document.Message)1 TypeAndAnnotation (com.sun.tools.xjc.api.TypeAndAnnotation)1 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1 QName (javax.xml.namespace.QName)1 Element (org.w3c.dom.Element)1