Search in sources :

Example 1 with ServiceEndpointMethodMapping

use of org.apache.openejb.jee.ServiceEndpointMethodMapping in project tomee by apache.

the class ServiceEndpointInterfaceMapping$JAXB method _read.

public static final ServiceEndpointInterfaceMapping _read(final XoXMLStreamReader reader, RuntimeContext context) throws Exception {
    // Check for xsi:nil
    if (reader.isXsiNil()) {
        return null;
    }
    if (context == null) {
        context = new RuntimeContext();
    }
    final ServiceEndpointInterfaceMapping serviceEndpointInterfaceMapping = new ServiceEndpointInterfaceMapping();
    context.beforeUnmarshal(serviceEndpointInterfaceMapping, LifecycleCallback.NONE);
    List<ServiceEndpointMethodMapping> serviceEndpointMethodMapping = null;
    // Check xsi:type
    final QName xsiType = reader.getXsiType();
    if (xsiType != null) {
        if (("service-endpoint-interface-mappingType" != xsiType.getLocalPart()) || ("http://java.sun.com/xml/ns/javaee" != xsiType.getNamespaceURI())) {
            return context.unexpectedXsiType(reader, ServiceEndpointInterfaceMapping.class);
        }
    }
    // Read attributes
    for (final Attribute attribute : reader.getAttributes()) {
        if (("id" == attribute.getLocalName()) && (("" == attribute.getNamespace()) || (attribute.getNamespace() == null))) {
            // ATTRIBUTE: id
            final String id = Adapters.collapsedStringAdapterAdapter.unmarshal(attribute.getValue());
            context.addXmlId(reader, id, serviceEndpointInterfaceMapping);
            serviceEndpointInterfaceMapping.id = id;
        } else if (XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI != attribute.getNamespace()) {
            context.unexpectedAttribute(attribute, new QName("", "id"));
        }
    }
    // Read elements
    for (final XoXMLStreamReader elementReader : reader.getChildElements()) {
        if (("service-endpoint-interface" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: serviceEndpointInterface
            final String serviceEndpointInterfaceRaw = elementReader.getElementAsString();
            final String serviceEndpointInterface;
            try {
                serviceEndpointInterface = Adapters.collapsedStringAdapterAdapter.unmarshal(serviceEndpointInterfaceRaw);
            } catch (final Exception e) {
                context.xmlAdapterError(elementReader, CollapsedStringAdapter.class, String.class, String.class, e);
                continue;
            }
            serviceEndpointInterfaceMapping.serviceEndpointInterface = serviceEndpointInterface;
        } else if (("wsdl-port-type" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: wsdlPortType
            final QName wsdlPortType = elementReader.getElementAsQName();
            serviceEndpointInterfaceMapping.wsdlPortType = wsdlPortType;
        } else if (("wsdl-binding" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: wsdlBinding
            final QName wsdlBinding = elementReader.getElementAsQName();
            serviceEndpointInterfaceMapping.wsdlBinding = wsdlBinding;
        } else if (("service-endpoint-method-mapping" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
            // ELEMENT: serviceEndpointMethodMapping
            final ServiceEndpointMethodMapping serviceEndpointMethodMappingItem = readServiceEndpointMethodMapping(elementReader, context);
            if (serviceEndpointMethodMapping == null) {
                serviceEndpointMethodMapping = serviceEndpointInterfaceMapping.serviceEndpointMethodMapping;
                if (serviceEndpointMethodMapping != null) {
                    serviceEndpointMethodMapping.clear();
                } else {
                    serviceEndpointMethodMapping = new ArrayList<ServiceEndpointMethodMapping>();
                }
            }
            serviceEndpointMethodMapping.add(serviceEndpointMethodMappingItem);
        } else {
            context.unexpectedElement(elementReader, new QName("http://java.sun.com/xml/ns/javaee", "service-endpoint-interface"), new QName("http://java.sun.com/xml/ns/javaee", "wsdl-port-type"), new QName("http://java.sun.com/xml/ns/javaee", "wsdl-binding"), new QName("http://java.sun.com/xml/ns/javaee", "service-endpoint-method-mapping"));
        }
    }
    if (serviceEndpointMethodMapping != null) {
        serviceEndpointInterfaceMapping.serviceEndpointMethodMapping = serviceEndpointMethodMapping;
    }
    context.afterUnmarshal(serviceEndpointInterfaceMapping, LifecycleCallback.NONE);
    return serviceEndpointInterfaceMapping;
}
Also used : CollapsedStringAdapter(javax.xml.bind.annotation.adapters.CollapsedStringAdapter) Attribute(org.metatype.sxc.util.Attribute) QName(javax.xml.namespace.QName) ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping) ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping) ArrayList(java.util.ArrayList) RuntimeContext(org.metatype.sxc.jaxb.RuntimeContext) XoXMLStreamReader(org.metatype.sxc.util.XoXMLStreamReader)

Example 2 with ServiceEndpointMethodMapping

use of org.apache.openejb.jee.ServiceEndpointMethodMapping in project tomee by apache.

the class JaxRpcServiceInfoBuilder method getMethodMappingForOperation.

private ServiceEndpointMethodMapping getMethodMappingForOperation(String operationName, Class serviceEndpointInterface) throws OpenEJBException {
    // get mapping for service endpoint interface
    ServiceEndpointInterfaceMapping interfaceMapping = javaWsdlMapping.getServiceEndpointInterfaceMappingMap().get(serviceEndpointInterface.getName());
    if (interfaceMapping == null) {
        throw new OpenEJBException("No java-wsdl mapping found for the service interface " + serviceEndpointInterface);
    }
    // match by operation name
    for (ServiceEndpointMethodMapping methodMapping : interfaceMapping.getServiceEndpointMethodMapping()) {
        if (operationName.equals(methodMapping.getWsdlOperation())) {
            return methodMapping;
        }
    }
    // failed - throw nice exception message
    StringBuffer availOps = new StringBuffer(128);
    for (ServiceEndpointMethodMapping methodMapping : interfaceMapping.getServiceEndpointMethodMapping()) {
        if (availOps.length() > 0)
            availOps.append(",");
        availOps.append(methodMapping.getWsdlOperation());
    }
    throw new OpenEJBException("No method found for operation named '" + operationName + "'. Available operations: " + availOps);
}
Also used : OpenEJBException(org.apache.openejb.OpenEJBException) ServiceEndpointInterfaceMapping(org.apache.openejb.jee.ServiceEndpointInterfaceMapping) ServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping)

Example 3 with ServiceEndpointMethodMapping

use of org.apache.openejb.jee.ServiceEndpointMethodMapping in project tomee by apache.

the class JaxRpcServiceInfoBuilder method buildOperations.

private Set<QName> buildOperations(Binding binding, Class serviceEndpointInterface, boolean lightweight) throws OpenEJBException {
    Set<QName> wrappedElementQNames = new HashSet<QName>();
    for (Object op : binding.getBindingOperations()) {
        BindingOperation bindingOperation = (BindingOperation) op;
        String operationName = bindingOperation.getOperation().getName();
        if (lightweight) {
            // Lightweight mappings are solely based on the Java method
            Method method = getMethodForOperation(operationName, serviceEndpointInterface);
            // Build the operation info using the method
            LightweightOperationInfoBuilder operationInfoBuilder = new LightweightOperationInfoBuilder(bindingOperation, method);
            JaxRpcOperationInfo operationInfo = operationInfoBuilder.buildOperationInfo();
            serviceInfo.operations.add(operationInfo);
        } else {
            // Heavyweight mappings are solely based on the Java to XML mapping declarations
            ServiceEndpointMethodMapping methodMapping = getMethodMappingForOperation(operationName, serviceEndpointInterface);
            // Build the operation info using the Java to XML method mapping
            HeavyweightOperationInfoBuilder operationInfoBuilder = new HeavyweightOperationInfoBuilder(bindingOperation, methodMapping, javaWsdlMapping, schemaInfo);
            JaxRpcOperationInfo operationInfo = operationInfoBuilder.buildOperationInfo();
            serviceInfo.operations.add(operationInfo);
            // remember wrapped elements for type mapping
            Set<QName> wrappedElementQNamesForOper = operationInfoBuilder.getWrapperElementQNames();
            wrappedElementQNames.addAll(wrappedElementQNamesForOper);
        }
    }
    return wrappedElementQNames;
}
Also used : BindingOperation(javax.wsdl.BindingOperation) QName(javax.xml.namespace.QName) ServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping) Method(java.lang.reflect.Method) HashSet(java.util.HashSet)

Example 4 with ServiceEndpointMethodMapping

use of org.apache.openejb.jee.ServiceEndpointMethodMapping in project tomee by apache.

the class ServiceEndpointInterfaceMapping$JAXB method _write.

public static final void _write(final XoXMLStreamWriter writer, final ServiceEndpointInterfaceMapping serviceEndpointInterfaceMapping, RuntimeContext context) throws Exception {
    if (serviceEndpointInterfaceMapping == null) {
        writer.writeXsiNil();
        return;
    }
    if (context == null) {
        context = new RuntimeContext();
    }
    final String prefix = writer.getUniquePrefix("http://java.sun.com/xml/ns/javaee");
    if (ServiceEndpointInterfaceMapping.class != serviceEndpointInterfaceMapping.getClass()) {
        context.unexpectedSubclass(writer, serviceEndpointInterfaceMapping, ServiceEndpointInterfaceMapping.class);
        return;
    }
    context.beforeMarshal(serviceEndpointInterfaceMapping, LifecycleCallback.NONE);
    // ATTRIBUTE: id
    final String idRaw = serviceEndpointInterfaceMapping.id;
    if (idRaw != null) {
        String id = null;
        try {
            id = Adapters.collapsedStringAdapterAdapter.marshal(idRaw);
        } catch (final Exception e) {
            context.xmlAdapterError(serviceEndpointInterfaceMapping, "id", CollapsedStringAdapter.class, String.class, String.class, e);
        }
        writer.writeAttribute("", "", "id", id);
    }
    // ELEMENT: serviceEndpointInterface
    final String serviceEndpointInterfaceRaw = serviceEndpointInterfaceMapping.serviceEndpointInterface;
    String serviceEndpointInterface = null;
    try {
        serviceEndpointInterface = Adapters.collapsedStringAdapterAdapter.marshal(serviceEndpointInterfaceRaw);
    } catch (final Exception e) {
        context.xmlAdapterError(serviceEndpointInterfaceMapping, "serviceEndpointInterface", CollapsedStringAdapter.class, String.class, String.class, e);
    }
    if (serviceEndpointInterface != null) {
        writer.writeStartElement(prefix, "service-endpoint-interface", "http://java.sun.com/xml/ns/javaee");
        writer.writeCharacters(serviceEndpointInterface);
        writer.writeEndElement();
    } else {
        context.unexpectedNullValue(serviceEndpointInterfaceMapping, "serviceEndpointInterface");
    }
    // ELEMENT: wsdlPortType
    final QName wsdlPortType = serviceEndpointInterfaceMapping.wsdlPortType;
    if (wsdlPortType != null) {
        writer.writeStartElement(prefix, "wsdl-port-type", "http://java.sun.com/xml/ns/javaee");
        writer.writeQName(wsdlPortType);
        writer.writeEndElement();
    } else {
        context.unexpectedNullValue(serviceEndpointInterfaceMapping, "wsdlPortType");
    }
    // ELEMENT: wsdlBinding
    final QName wsdlBinding = serviceEndpointInterfaceMapping.wsdlBinding;
    if (wsdlBinding != null) {
        writer.writeStartElement(prefix, "wsdl-binding", "http://java.sun.com/xml/ns/javaee");
        writer.writeQName(wsdlBinding);
        writer.writeEndElement();
    } else {
        context.unexpectedNullValue(serviceEndpointInterfaceMapping, "wsdlBinding");
    }
    // ELEMENT: serviceEndpointMethodMapping
    final List<ServiceEndpointMethodMapping> serviceEndpointMethodMapping = serviceEndpointInterfaceMapping.serviceEndpointMethodMapping;
    if (serviceEndpointMethodMapping != null) {
        for (final ServiceEndpointMethodMapping serviceEndpointMethodMappingItem : serviceEndpointMethodMapping) {
            if (serviceEndpointMethodMappingItem != null) {
                writer.writeStartElement(prefix, "service-endpoint-method-mapping", "http://java.sun.com/xml/ns/javaee");
                writeServiceEndpointMethodMapping(writer, serviceEndpointMethodMappingItem, context);
                writer.writeEndElement();
            }
        }
    }
    context.afterMarshal(serviceEndpointInterfaceMapping, LifecycleCallback.NONE);
}
Also used : CollapsedStringAdapter(javax.xml.bind.annotation.adapters.CollapsedStringAdapter) QName(javax.xml.namespace.QName) ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping) ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping(org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping) RuntimeContext(org.metatype.sxc.jaxb.RuntimeContext)

Aggregations

QName (javax.xml.namespace.QName)3 CollapsedStringAdapter (javax.xml.bind.annotation.adapters.CollapsedStringAdapter)2 ServiceEndpointMethodMapping (org.apache.openejb.jee.ServiceEndpointMethodMapping)2 ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping (org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.readServiceEndpointMethodMapping)2 ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping (org.apache.openejb.jee.ServiceEndpointMethodMapping$JAXB.writeServiceEndpointMethodMapping)2 RuntimeContext (org.metatype.sxc.jaxb.RuntimeContext)2 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1 BindingOperation (javax.wsdl.BindingOperation)1 OpenEJBException (org.apache.openejb.OpenEJBException)1 ServiceEndpointInterfaceMapping (org.apache.openejb.jee.ServiceEndpointInterfaceMapping)1 Attribute (org.metatype.sxc.util.Attribute)1 XoXMLStreamReader (org.metatype.sxc.util.XoXMLStreamReader)1