You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Simon Laws <si...@googlemail.com> on 2008/07/01 14:30:55 UTC

Re: svn commit: r672803 [3/3] - in /tuscany/branches/sca-java-1.3: itest/validation/src/main/java/calculator/warning/ itest/validation/src/main/resources/NoMatchingBinding/ itest/validation/src/main/resources/ServiceNotFoundForComponentService/ itest

On Mon, Jun 30, 2008 at 5:02 PM, <na...@apache.org> wrote:

> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/java/org/apache/tuscany/sca/binding/ws/wsdlgen/WSDLServiceGenerator.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,527 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +//FIXME: trim the import list down to what's really needed
> +
> +import java.io.IOException;
> +import java.net.URI;
> +import java.net.URISyntaxException;
> +import java.net.URL;
> +import java.security.AccessController;
> +import java.security.PrivilegedAction;
> +import java.security.PrivilegedActionException;
> +import java.security.PrivilegedExceptionAction;
> +import java.util.ArrayList;
> +import java.util.List;
> +import java.util.Iterator;
> +import java.util.Map;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
> +
> +import javax.wsdl.Binding;
> +import javax.wsdl.BindingOperation;
> +import javax.wsdl.Definition;
> +import javax.wsdl.Import;
> +import javax.wsdl.Port;
> +import javax.wsdl.PortType;
> +import javax.wsdl.Service;
> +import javax.wsdl.WSDLException;
> +import javax.wsdl.extensions.ExtensibilityElement;
> +import javax.wsdl.extensions.soap.SOAPAddress;
> +import javax.wsdl.extensions.soap.SOAPBinding;
> +import javax.wsdl.extensions.soap.SOAPOperation;
> +import javax.wsdl.extensions.soap12.SOAP12Address;
> +import javax.wsdl.extensions.soap12.SOAP12Binding;
> +import javax.wsdl.factory.WSDLFactory;
> +import javax.wsdl.xml.WSDLWriter;
> +import javax.xml.namespace.QName;
> +import javax.xml.stream.FactoryConfigurationError;
> +import javax.xml.stream.XMLInputFactory;
> +import javax.xml.stream.XMLStreamException;
> +import javax.xml.stream.XMLStreamReader;
> +import javax.xml.transform.dom.DOMSource;
> +
> +import org.apache.tuscany.sca.assembly.AbstractContract;
> +import org.apache.tuscany.sca.assembly.Component;
> +import org.apache.tuscany.sca.assembly.CompositeService;
> +import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
> +import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
> +import org.apache.tuscany.sca.interfacedef.Interface;
> +import org.apache.tuscany.sca.interfacedef.Operation;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
> +import org.apache.tuscany.sca.monitor.Monitor;
> +import org.apache.tuscany.sca.monitor.Problem;
> +import org.apache.tuscany.sca.monitor.Problem.Severity;
> +import org.apache.tuscany.sca.policy.PolicySet;
> +import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
> +import org.apache.tuscany.sca.policy.security.ws.Axis2ConfigParamPolicy;
> +import org.apache.tuscany.sca.policy.util.PolicyHandler;
> +import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple;
> +import org.apache.tuscany.sca.policy.util.PolicyHandlerUtils;
> +import org.w3c.dom.Element;
> +import org.w3c.dom.Node;
> +import org.w3c.dom.NodeList;
> +import org.w3c.dom.Text;
> +
> +/**
> + * WSDLServiceGenerator generates a binding WSDL service document.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class WSDLServiceGenerator {
> +    // the following switch is temporary for debugging
> +    public static boolean printWSDL;  // external code sets this to print
> generated WSDL
> +
> +    private static final Logger logger =
> Logger.getLogger(WSDLServiceGenerator.class.getName());
> +    private static final QName TRANSPORT_JMS_QUALIFIED_INTENT =
> +        new QName("http://www.osoa.org/xmlns/sca/1.0", "transport.jms");
> +    private static final String DEFAULT_QUEUE_CONNECTION_FACTORY =
> "TuscanyQueueConnectionFactory";
> +    private static final String ADDRESS = "Address";
> +
> +    private WSDLServiceGenerator() {
> +        // this class has static methods only and cannot be instantiated
> +    }
> +
> +    /**
> +     * Log a warning message.
> +     * @param problem
> +     */
> +    private static void logWarning(Problem problem) {
> +        Logger problemLogger =
> Logger.getLogger(problem.getSourceClassName(), problem.getBundleName());
> +        if (problemLogger != null){
> +            problemLogger.logp(Level.WARNING,
> problem.getSourceClassName(), null, problem.getMessageId(),
> problem.getMessageParams());
> +        } else {
> +            logger.severe("Can't get logger " +
> problem.getSourceClassName()+ " with bundle " + problem.getBundleName());
> +        }
> +    }
> +
> +    /**
> +     * Report a warning.
> +     * @param message
> +     * @param binding
> +     * @param parameters
> +     */
> +    private static void warning(Monitor monitor, String message,
> WebServiceBinding wsBinding, String... messageParameters) {
> +        Problem problem = new
> ProblemImpl(WSDLServiceGenerator.class.getName(),
> "wsdlgen-validation-messages", Severity.WARNING, wsBinding, message,
> (Object[])messageParameters);
> +        if (monitor != null) {
> +            monitor.problem(problem);
> +        } else {
> +            logWarning(problem);
> +        }
> +    }
> +
> +    /**
> +     * Report an error.
> +     * @param message
> +     * @param binding
> +     * @param parameters
> +     */
> +    private static void error(Monitor monitor, String message,
> WebServiceBinding wsBinding, String... messageParameters) {
> +        Problem problem = new
> ProblemImpl(WSDLServiceGenerator.class.getName(),
> "wsdlgen-validation-messages", Severity.ERROR, wsBinding, message,
> (Object[])messageParameters);
> +        if (monitor != null) {
> +            monitor.problem(problem);
> +        } else {
> +            throw new WSDLGenerationException(problem.toString(), null,
> problem);
> +        }
> +    }
> +
> +    /**
> +     * Generate a suitably configured WSDL definition
> +     */
> +    protected static Definition configureWSDLDefinition(WebServiceBinding
> wsBinding,
> +                                                        Component
> component,
> +                                                        AbstractContract
> contract,
> +                                                        Monitor monitor) {
> +
> +        // For every promoted composite service, the underlying component
> +        // gets a copy of the service with the name prefixed by
> "$promoted$."
> +        String contractName = (contract instanceof CompositeService ?
> "$promoted$." : "") + contract.getName();
> +
> +        List<Port> ports = new ArrayList<Port>();
> +        WSDLDefinition wsdlDefinition = wsBinding.getWSDLDefinition();
> +        if (wsdlDefinition == null) {
> +            return null;
> +        }
> +        Definition def = wsdlDefinition.getDefinition();
> +        if (wsdlDefinition.getBinding() == null) {
> +            // The WSDL document was provided by the user.  Generate a new
> +            // WSDL document with imports from the user-provided document.
> +            WSDLFactory factory = null;
> +            try {
> +                factory = WSDLFactory.newInstance();
> +            } catch (WSDLException e) {
> +                throw new WSDLGenerationException(e);
> +            }
> +            Definition newDef = factory.newDefinition();
> +
> +            // Construct a target namespace from the base URI of the
> user's
> +            // WSDL document (is this what we should be using?) and a path
> +            // computed according to the SCA Web Service binding spec.
> +            String nsName = component.getName() + "/" + contractName;
> +            String namespaceURI = null;
> +            try {
> +                URI userTNS = new URI(def.getTargetNamespace());
> +                namespaceURI = userTNS.resolve("/" + nsName).toString();
> +            } catch (URISyntaxException e1) {
> +                throw new WSDLGenerationException(e1);
> +            } catch (IllegalArgumentException e2) {
> +                throw new WSDLGenerationException(e2);
> +            }
> +
> +            // set name and targetNamespace attributes on the definition
> +            String defsName = component.getName() + "." + contractName;
> +            newDef.setQName(new QName(namespaceURI, defsName));
> +            newDef.setTargetNamespace(namespaceURI);
> +            newDef.addNamespace("tns", namespaceURI);
> +
> +            // set wsdl namespace prefix on the definition
> +            newDef.addNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/
> ");
> +
> +            // import the service or reference interface portType
> +            List<WSDLDefinition> imports = new
> ArrayList<WSDLDefinition>();
> +            Interface interfaze =
> wsBinding.getBindingInterfaceContract().getInterface();
> +            if (interfaze instanceof WSDLInterface) {
> +                PortType portType =
> ((WSDLInterface)interfaze).getPortType();
> +                boolean ok = importPortType(portType, wsdlDefinition,
> newDef, imports);
> +                if (!ok) {
> +                    error(monitor, "PortTypeNotFound", wsBinding,
> portType.getQName().toString(),
> +                          component.getName(), contract.getName());
> +                }
> +            }
> +
> +            // import an existing binding if specified
> +            Binding binding = wsBinding.getBinding();
> +            if (binding != null) {
> +                boolean ok = importBinding(binding, wsdlDefinition,
> newDef, imports);
> +                if (ok) {
> +                    boolean ok2 = importPortType(binding.getPortType(),
> wsdlDefinition, newDef, imports);
> +                    if (!ok2) {
> +                        error(monitor, "PortTypeNotFound", wsBinding,
> binding.getPortType().getQName().toString(),
> +                              component.getName(), contract.getName());
> +                    }
> +                } else {
> +                    error(monitor, "BindingNotFound", wsBinding,
> binding.getQName().toString(),
> +                          component.getName(), contract.getName());
> +                }
> +            }
> +
> +            // import bindings and portTypes needed by services and ports
> +            QName serviceQName = wsBinding.getServiceName();
> +            String portName = wsBinding.getPortName();
> +            if (serviceQName != null) {
> +                Service service = def.getService(serviceQName);
> +                if (portName != null) {
> +                    Port port = service.getPort(portName);
> +                    Port newPort = copyPort(newDef, port, wsBinding);
> +                    if (newPort != null) {
> +                        importBinding(port.getBinding(), wsdlDefinition,
> newDef, imports);
> +                        ports.add(newPort);
> +                    } else {
> +                        error(monitor, "InvalidPort", wsBinding,
> serviceQName.toString(), portName,
> +                              component.getName(), contract.getName());
> +                    }
> +                } else {
> +                    for (Object port : service.getPorts().values()) {
> +                        Port newPort = copyPort(newDef, (Port)port,
> wsBinding);
> +                        if (newPort != null) {
> +                            importBinding(((Port)port).getBinding(),
> wsdlDefinition, newDef, imports);
> +                            ports.add(newPort);
> +                        } else {
> +                            // not an error, just ignore the port
> +                            warning(monitor, "IgnoringPort", wsBinding,
> serviceQName.toString(), ((Port)port).getName(),
> +                                    component.getName(),
> contract.getName());
> +                        }
> +                    }
> +                    if (ports.size() == 0) {
> +                        error(monitor, "NoValidPorts", wsBinding,
> serviceQName.toString(),
> +                              component.getName(), contract.getName());
> +                    }
> +                }
> +            }
> +
> +            // replace original WSDL definition by the generated
> definition
> +            def = newDef;
> +
> +        } else {
> +            // The WSDL definition was generated by
> Interface2WSDLGenerator.
> +            // Reuse it instead of creating a new definition here.
> +        }
> +
> +        // add a service and ports to the generated definition
> +        WSDLDefinitionGenerator helper =
> +                new
> WSDLDefinitionGenerator(BindingWSDLGenerator.requiresSOAP12(wsBinding));
> +        WSDLInterface wi =
> (WSDLInterface)wsBinding.getBindingInterfaceContract().getInterface();
> +        PortType portType = wi.getPortType();
> +        Service service = helper.createService(def, portType);
> +        if (wsBinding.getBinding() == null && ports.size() == 0) {
> +            Binding binding = helper.createBinding(def, portType);
> +            if (BindingWSDLGenerator.requiresSOAP12(wsBinding)) {
> +                def.addNamespace("soap12", "
> http://schemas.xmlsoap.org/wsdl/soap12/");
> +            } else {
> +                def.addNamespace("soap11", "
> http://schemas.xmlsoap.org/wsdl/soap/");
> +            }
> +            helper.createBindingOperations(def, binding, portType);
> +            binding.setUndefined(false);
> +            def.addBinding(binding);
> +
> +            String endpointURI = computeActualURI(wsBinding, null);
> +            Port port = helper.createPort(def, binding, service,
> endpointURI);
> +            wsBinding.setService(service);
> +            wsBinding.setPort(port);
> +        } else {
> +            if (ports.size() > 0) {
> +                // there are one or more user-specified valid ports
> +                for (Port port : ports) {
> +                    service.addPort(port);
> +                }
> +                if (ports.size() == 1) {
> +                    // only one port, so use it
> +                    wsBinding.setPort(ports.get(0));
> +                } else {
> +                    // multiple ports, make them all available
> +                    wsBinding.setPort(null);
> +                }
> +            } else {
> +                // no valid user-specified ports, so create a suitably
> configured port
> +                String endpointURI = computeActualURI(wsBinding, null);
> +                Port port = helper.createPort(def, wsBinding.getBinding(),
> service, endpointURI);
> +                if (BindingWSDLGenerator.requiresSOAP12(wsBinding)) {
> +                    def.addNamespace("soap12", "
> http://schemas.xmlsoap.org/wsdl/soap12/");
> +                } else {
> +                    def.addNamespace("soap11", "
> http://schemas.xmlsoap.org/wsdl/soap/");
> +                }
> +                wsBinding.setPort(port);
> +            }
> +            wsBinding.setService(service);
> +        }
> +
> +        // for debugging
> +        if (printWSDL) {
> +            try {
> +                System.out.println("Generated WSDL for " +
> component.getName() + "/" + contractName);
> +                WSDLWriter writer =
>  javax.wsdl.factory.WSDLFactory.newInstance().newWSDLWriter();
> +                writer.writeWSDL(def, System.out);
> +            } catch (WSDLException e) {
> +                throw new WSDLGenerationException(e);
> +            }
> +        }
> +
> +        return def;
> +    }
> +
> +    private static boolean importPortType(PortType portType,
> +                                          WSDLDefinition wsdlDef,
> +                                          Definition newDef,
> +                                          List<WSDLDefinition> imports) {
> +        return addImport(portType.getQName(), PortType.class, wsdlDef,
> newDef, imports);
> +    }
> +
> +    private static boolean importBinding(Binding binding,
> +                                         WSDLDefinition wsdlDef,
> +                                         Definition newDef,
> +                                         List<WSDLDefinition> imports) {
> +        boolean ok = addImport(binding.getQName(), Binding.class, wsdlDef,
> newDef, imports);
> +        if (ok) {
> +            List bindingExtensions = binding.getExtensibilityElements();
> +            for (final Object extension : bindingExtensions) {
> +                if (extension instanceof SOAPBinding) {
> +                    newDef.addNamespace("soap11", "
> http://schemas.xmlsoap.org/wsdl/soap/");
> +                }
> +                if (extension instanceof SOAP12Binding) {
> +                    newDef.addNamespace("soap12", "
> http://schemas.xmlsoap.org/wsdl/soap12/");
> +                }
> +            }
> +        }
> +        return ok;
> +    }
> +
> +    private static boolean addImport(QName name,
> +                                     Class type,
> +                                     WSDLDefinition wsdlDef,
> +                                     Definition newDef,
> +                                     List<WSDLDefinition> imports) {
> +        String namespace = name.getNamespaceURI();
> +        if (newDef.getImports(namespace) == null) {
> +            WSDLDefinition impDef = findDefinition(wsdlDef, name, type);
> +            if (impDef != null) {
> +                Import imp = newDef.createImport();
> +                imp.setNamespaceURI(namespace);
> +                imp.setLocationURI(impDef.getURI().toString());
> +                imp.setDefinition(impDef.getDefinition());
> +                newDef.addNamespace("ns" + imports.size(), namespace);
> +                newDef.addImport(imp);
> +                imports.add(impDef);
> +                return true;
> +            } else {
> +                // import was not added because element not found
> +                return false;
> +            }
> +        }
> +        return true;
> +    }
> +
> +    private static WSDLDefinition findDefinition(WSDLDefinition wsdlDef,
> QName name, Class type) {
> +        if (wsdlDef == null || name == null) {
> +            return wsdlDef;
> +        }
> +        if (wsdlDef.getURI() != null) {  // not a facade
> +            Definition def = wsdlDef.getDefinition();
> +            Map types = type == PortType.class ? def.getPortTypes() :
> def.getBindings();
> +            if (types.get(name) != null) {
> +                return wsdlDef;
> +            }
> +        }
> +        for (WSDLDefinition impDef : wsdlDef.getImportedDefinitions()) {
> +            WSDLDefinition d = findDefinition(impDef, name, type);
> +            if (d != null) {
> +                return d;
> +            }
> +        }
> +        return null;
> +    }
> +
> +    private static Port copyPort(Definition def, Port port,
> WebServiceBinding wsBinding) {
> +        Port newPort = def.createPort();
> +        newPort.setName(port.getName());
> +        newPort.setBinding(port.getBinding());
> +        List portExtensions = port.getExtensibilityElements();
> +        for (final Object extension : portExtensions) {
> +            ExtensibilityElement newExt = null;
> +            if (extension instanceof SOAPAddress) {
> +                def.addNamespace("soap11", "
> http://schemas.xmlsoap.org/wsdl/soap/");
> +                try {
> +                    newExt = def.getExtensionRegistry().createExtension(
> +                             Port.class,
> WSDLDefinitionGenerator.SOAP_ADDRESS);
> +                } catch (WSDLException e) {
> +                }
> +                String uri = computeActualURI(wsBinding, port);
> +                ((SOAPAddress)newExt).setLocationURI(uri);
> +                newPort.addExtensibilityElement(newExt);
> +            } else if (extension instanceof SOAP12Address) {
> +                def.addNamespace("soap12", "
> http://schemas.xmlsoap.org/wsdl/soap12/");
> +                try {
> +                    newExt = def.getExtensionRegistry().createExtension(
> +                             Port.class,
> WSDLDefinitionGenerator.SOAP12_ADDRESS);
> +                } catch (WSDLException e) {
> +                }
> +                String uri = computeActualURI(wsBinding, port);
> +                ((SOAP12Address)newExt).setLocationURI(uri);
> +                newPort.addExtensibilityElement(newExt);
> +            } else {
> +                // we don't support ports with other extensibility
> elements such as HTTPAddress
> +                return null;
> +            }
> +        }
> +        return newPort;
> +    }
> +
> +    /**
> +     * Compute the endpoint URI based on section 2.1.1 of the WS binding
> Specification 1.
> +     * The URIs in the endpoint(s) of the referenced WSDL, which may be
> relative
> +     * 2. The URI specified by the wsa:Address element of the
> +     * wsa:EndpointReference, which may be relative 3. The explicitly
> stated URI
> +     * in the "uri" attribute of the binding.ws element, which may be
> relative,
> +     * 4. The implicit URI as defined by in section 1.7 in the SCA
> Assembly Specification
> +     * If the <binding.ws> has no wsdlElement but does have a uri
> attribute then
> +     * the uri takes precedence over any implicitly used WSDL.
> +     *
> +     */
> +    private static String computeActualURI(WebServiceBinding wsBinding,
> Port port) {
> +
> +        URI eprURI = null;
> +        if (wsBinding.getEndPointReference() != null) {
> +            eprURI = getEPR(wsBinding);
> +        }
> +
> +        URI wsdlURI = null;
> +        if (wsBinding.getServiceName() != null &&
> wsBinding.getBindingName() == null) {
> +            // <binding.ws> explicitly points at a WSDL port, may be a
> relative URI
> +            wsdlURI = getEndpoint(port);
> +        }
> +
> +        // if the WSDL port/endpoint has an absolute URI use that
> +        if (wsdlURI != null && wsdlURI.isAbsolute()) {
> +            return wsdlURI.toString();
> +        }
> +
> +        // if the wsa:EndpointReference has an address element with an
> absolute URI use that
> +        if (eprURI != null && eprURI.isAbsolute()) {
> +            return eprURI.toString();
> +        }
> +
> +        // either there is no WSDL port endpoint URI or that URI is
> relative
> +        String actualURI = wsBinding.getURI();
> +        if (eprURI != null && eprURI.toString().length() != 0) {
> +            // there is a relative URI in the binding EPR
> +            actualURI = actualURI + "/" + eprURI;
> +        }
> +
> +        if (wsdlURI != null && wsdlURI.toString().length() != 0) {
> +            // there is a relative URI in the WSDL port
> +            actualURI = actualURI + "/" + wsdlURI;
> +        }
> +
> +        if (actualURI != null) {
> +            actualURI = URI.create(actualURI).normalize().toString();
> +        }
> +
> +        return actualURI;
> +    }
> +
> +    private static URI getEPR(WebServiceBinding wsBinding) {
> +        NodeList nodeList =
> wsBinding.getEndPointReference().getChildNodes();
> +        for (int i = 0; i < nodeList.getLength(); i++) {
> +            Node childNode = nodeList.item(i);
> +            if (childNode instanceof Element &&
> ADDRESS.equals(childNode.getLocalName())) {
> +                NodeList addrNodes = childNode.getChildNodes();
> +                for (int j = 0; j < addrNodes.getLength(); j++) {
> +                    Node addrNode = addrNodes.item(j);
> +                    if (addrNode instanceof Text) {
> +                        return
> URI.create(((Text)addrNode).getWholeText());
> +                    }
> +                }
> +            }
> +        }
> +        return null;
> +    }
> +
> +    /**
> +     * Returns the endpoint of a given port.
> +     */
> +    private static URI getEndpoint(Port wsdlPort) {
> +        if (wsdlPort != null) {
> +            List<?> wsdlPortExtensions =
> wsdlPort.getExtensibilityElements();
> +            for (Object extension : wsdlPortExtensions) {
> +                if (extension instanceof SOAPAddress) {
> +                    String uri =
> ((SOAPAddress)extension).getLocationURI();
> +                    return (uri == null || "".equals(uri)) ? null :
> URI.create(uri);
> +                }
> +                if (extension instanceof SOAP12Address) {
> +                    SOAP12Address address = (SOAP12Address)extension;
> +                    String uri = address.getLocationURI();
> +                    return (uri == null || "".equals(uri)) ? null :
> URI.create(uri);
> +                }
> +            }
> +        }
> +        return null;
> +    }
> +
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/main/resources/wsdlgen-validation-messages.properties
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,30 @@
> +#
> +#
> +#    Licensed to the Apache Software Foundation (ASF) under one
> +#    or more contributor license agreements. See the NOTICE file
> +#    distributed with this work for additional information
> +#    regarding copyright ownership. The ASF licenses this file
> +#    to you under the Apache License, Version 2.0 (the
> +#    "License"); you may not use this file except in compliance
> +#    with the License. You may obtain a copy of the License at
> +#
> +#    http://www.apache.org/licenses/LICENSE-2.0
> +#
> +#    Unless required by applicable law or agreed to in writing,
> +#    software distributed under the License is distributed on an
> +#    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +#    KIND, either express or implied. See the License for the
> +#    specific language governing permissions and limitations
> +#    under the License.
> +#
> +#
> +WsdlGenProblem = Unable to generate WSDL for {0}/{1}
> +WsdlGenException = Exception while generating WSDL for {0}/{1}
> +UnexpectedException = Exception thrown was: {0}
> +MissingInterfaceContract = No interface contract for {0}/{1}
> +InterfaceNotRemotable = Interface not remotable: {0}
> +IgnoringPort = Port {0}/{1} in {2}/{3} is not supported and was ignored
> +PortTypeNotFound = PortType {0} in {1}/{2} was not found
> +BindingNotFound = Binding {0} in {1}/{2} was not found
> +InvalidPort = Port {0}/{1} in {2}/{3} is not supported
> +NoValidPorts = No valid ports for service {0} in {1}/{2}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/BindingWSDLGeneratorTestCase.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,86 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +import java.util.List;
> +import java.util.Map;
> +
> +import javax.wsdl.Definition;
> +import javax.wsdl.Operation;
> +import javax.wsdl.PortType;
> +
> +import junit.framework.TestCase;
> +
> +import
> org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
> +import
> org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor;
> +import
> org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint;
> +import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
> +import
> org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
> +import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
> +import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
> +import
> org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper;
> +import
> org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
> +import org.apache.tuscany.sca.xsd.XSDFactory;
> +import org.apache.tuscany.sca.xsd.xml.XSDModelResolver;
> +import org.osoa.sca.annotations.Remotable;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
> +public class BindingWSDLGeneratorTestCase extends TestCase {
> +
> +    public void testCreateWSDLInterfaceContract() throws
> InvalidInterfaceException {
> +        DefaultModelFactoryExtensionPoint modelFactories = new
> DefaultModelFactoryExtensionPoint();
> +        WSDLFactory wsdlFactory =
> modelFactories.getFactory(WSDLFactory.class);
> +        XSDFactory xsdFactory =
> modelFactories.getFactory(XSDFactory.class);
> +        DefaultJavaInterfaceFactory factory = new
> DefaultJavaInterfaceFactory();
> +        JavaInterfaceContract javaIC =
> factory.createJavaInterfaceContract();
> +        JavaInterface iface =
> factory.createJavaInterface(HelloWorld.class);
> +        DefaultDataBindingExtensionPoint dataBindings = new
> DefaultDataBindingExtensionPoint();
> +        JAXWSFaultExceptionMapper faultExceptionMapper = new
> JAXWSFaultExceptionMapper(dataBindings, null);
> +        new JAXWSJavaInterfaceProcessor(dataBindings,
> faultExceptionMapper, null).visitInterface(iface);
> +        new
> DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface);
> +        javaIC.setInterface(iface);
> +        WSDLInterfaceContract wsdlIC =
> BindingWSDLGenerator.createWSDLInterfaceContract(javaIC, false, new
> XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory, null);
> +        assertNotNull(wsdlIC);
> +        WSDLInterface wsdlInterface =
> (WSDLInterface)wsdlIC.getInterface();
> +        assertNotNull(wsdlInterface);
> +        assertEquals(1, wsdlInterface.getOperations().size());
> +        assertEquals("sayHello",
> wsdlInterface.getOperations().get(0).getName());
> +        assertNotNull(wsdlInterface.getPortType());
> +
> +        JavaInterfaceContract javaIC2 =
> factory.createJavaInterfaceContract();
> +        JavaInterface iface2 =
> factory.createJavaInterface(TestJavaInterface.class);
> +        new JAXWSJavaInterfaceProcessor(dataBindings,
> faultExceptionMapper, null).visitInterface(iface2);
> +        new
> DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface2);
> +        javaIC2.setInterface(iface2);
> +        WSDLInterfaceContract wsdlIC2 =
> BindingWSDLGenerator.createWSDLInterfaceContract(javaIC2, false, new
> XSDModelResolver(null, null), dataBindings, wsdlFactory, xsdFactory, null);
> +        assertNotNull(wsdlIC2);
> +    }
> +
> +}
> +
> +@Remotable
> +interface HelloWorld {
> +    String sayHello(String s);
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/Interface2WSDLGeneratorTestCase.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,66 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +import java.io.StringWriter;
> +
> +import javax.wsdl.Definition;
> +import javax.wsdl.xml.WSDLWriter;
> +
> +import
> org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint;
> +import
> org.apache.tuscany.sca.core.databinding.processor.DataBindingJavaInterfaceProcessor;
> +import
> org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint;
> +import
> org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
> +import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
> +import
> org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSFaultExceptionMapper;
> +import
> org.apache.tuscany.sca.interfacedef.java.jaxws.JAXWSJavaInterfaceProcessor;
> +import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory;
> +import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
> +import org.apache.tuscany.sca.xsd.DefaultXSDFactory;
> +import org.apache.tuscany.sca.xsd.xml.XSDModelResolver;
> +import org.junit.Test;
> +
> +/**
> + * @version $Rev$ $Date$
> + */
> +public class Interface2WSDLGeneratorTestCase {
> +
> +    @Test
> +    public void testGenerate() throws Exception {
> +        DefaultJavaInterfaceFactory iFactory = new
> DefaultJavaInterfaceFactory();
> +        JavaInterface iface =
> iFactory.createJavaInterface(TestJavaInterface.class);
> +        DefaultDataBindingExtensionPoint dataBindings = new
> DefaultDataBindingExtensionPoint();
> +        JAXWSFaultExceptionMapper faultExceptionMapper = new
> JAXWSFaultExceptionMapper(dataBindings, null);
> +        new JAXWSJavaInterfaceProcessor(dataBindings,
> faultExceptionMapper, null).visitInterface(iface);
> +        new
> DataBindingJavaInterfaceProcessor(dataBindings).visitInterface(iface);
> +        DefaultModelFactoryExtensionPoint modelFactories = new
> DefaultModelFactoryExtensionPoint();
> +        WSDLDefinition wsdlDefinition = new
> DefaultWSDLFactory(modelFactories).createWSDLDefinition();
> +        DefaultXSDFactory factory = new DefaultXSDFactory();
> +        Interface2WSDLGenerator generator = new
> Interface2WSDLGenerator(false, new XSDModelResolver(null, null),
> dataBindings, factory, null);
> +        Definition definition = generator.generate(iface, wsdlDefinition);
> +
> +        // print the generated WSDL file and inline schemas
> +        WSDLWriter writer = generator.getFactory().newWSDLWriter();
> +        StringWriter sw = new StringWriter();
> +        writer.writeWSDL(definition, sw);
> +        System.out.println(sw.toString());
> +    }
> +
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestException.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestException.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestException.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestException.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,47 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
> +public class TestException extends Exception {
> +
> +    private String userdata;
> +
> +    public TestException(String message) {
> +        super(message);
> +    }
> +
> +    public TestException(String message, String userdata) {
> +        super(message);
> +        this.userdata = userdata;
> +    }
> +
> +    public String getUserdata() {
> +        return userdata;
> +    }
> +
> +    public void setUserdata(String userdata) {
> +        this.userdata = userdata;
> +    }
> +
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFault.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFault.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFault.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFault.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,46 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +import javax.xml.ws.WebFault;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
>
> +@WebFault(faultBean="org.apache.tuscany.sca.binding.ws.wsdlgen.TestFaultBean")
> +public class TestFault extends Exception {
> +
> +    private TestFaultBean bean;
> +
> +    public TestFault(TestFaultBean bean, String message) {
> +        super(message);
> +        this.bean = bean;
> +    }
> +
> +    public TestFault(TestFaultBean bean, String message, Throwable cause)
> {
> +        super(message, cause);
> +        this.bean = bean;
> +    }
> +
> +    public TestFaultBean getFaultInfo() {
> +        return bean;
> +    }
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFaultBean.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFaultBean.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFaultBean.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestFaultBean.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,54 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
> +public class TestFaultBean {
> +    private String lastName;
> +    private String firstName;
> +    private float age;
> +
> +    public String getLastName() {
> +        return lastName;
> +    }
> +
> +    public void setLastName(String lastName) {
> +        this.lastName = lastName;
> +    }
> +
> +    public String getFirstName() {
> +        return firstName;
> +    }
> +
> +    public void setFirstName(String firstName) {
> +        this.firstName = firstName;
> +    }
> +
> +    public float getAge() {
> +        return age;
> +    }
> +
> +    public void setAge(float age) {
> +        this.age = age;
> +    }
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaClass.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaClass.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaClass.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaClass.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,30 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
> +public class TestJavaClass {
> +    public String name;
> +    public int number;
> +    public float balance;
> +}
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-wsdlgen/src/test/java/org/apache/tuscany/sca/binding/ws/wsdlgen/TestJavaInterface.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,57 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.wsdlgen;
> +
> +import javax.jws.WebMethod;
> +import javax.jws.WebService;
> +
> +import org.osoa.sca.annotations.OneWay;
> +import org.osoa.sca.annotations.Remotable;
> +
> +/**
> + *
> + * @version $Rev$ $Date$
> + */
> +@Remotable
> +@WebService
> +public interface TestJavaInterface {
> +    String m1(String str);
> +
> +    @OneWay
> +    @WebMethod
> +    void m2(int i);
> +
> +    @WebMethod
> +    String m3();
> +
> +    void m4();
> +
> +    @WebMethod
> +    String m5(String str, int i);
> +
> +    @WebMethod(exclude = true)
> +    void dummy();
> +
> +    @WebMethod
> +    void m6(TestJavaClass info) throws TestException;
> +
> +    @WebMethod
> +    void m7(TestJavaClass info) throws TestFault;
> +}
>
> Modified: tuscany/branches/sca-java-1.3/modules/binding-ws-xml/pom.xml
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-xml/pom.xml?rev=672803&r1=672802&r2=672803&view=diff
>
> ==============================================================================
> --- tuscany/branches/sca-java-1.3/modules/binding-ws-xml/pom.xml (original)
> +++ tuscany/branches/sca-java-1.3/modules/binding-ws-xml/pom.xml Mon Jun 30
> 09:02:54 2008
> @@ -55,6 +55,12 @@
>
>         <dependency>
>             <groupId>org.apache.tuscany.sca</groupId>
> +            <artifactId>tuscany-binding-ws-wsdlgen</artifactId>
> +            <version>1.4-SNAPSHOT</version>
> +        </dependency>
> +
> +        <dependency>
> +            <groupId>org.apache.tuscany.sca</groupId>
>             <artifactId>tuscany-interface-wsdl</artifactId>
>             <version>1.3-SNAPSHOT</version>
>         </dependency>
>
> Added:
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java?rev=672803&view=auto
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
> (added)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/BindingBuilderImpl.java
> Mon Jun 30 09:02:54 2008
> @@ -0,0 +1,51 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.binding.ws.xml;
> +
> +import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
> +import org.apache.tuscany.sca.binding.ws.wsdlgen.BindingWSDLGenerator;
> +import org.apache.tuscany.sca.assembly.AbstractContract;
> +import org.apache.tuscany.sca.assembly.Binding;
> +import org.apache.tuscany.sca.assembly.Component;
> +import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
> +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.monitor.Monitor;
> +
> +/**
> + * A factory for the calculated WSDL document needed by Web Service
> bindings.
> + *
> + * @version $Rev$ $Date$
> + */
> +public class BindingBuilderImpl implements BindingBuilder {
> +
> +    private ExtensionPointRegistry extensionPoints;
> +
> +    public BindingBuilderImpl(ExtensionPointRegistry extensionPoints) {
> +        this.extensionPoints = extensionPoints;
> +    }
> +
> +    /**
> +     * Create a calculated WSDL document and save it in the Web Service
> binding.
> +     */
> +    public void build(Component component, AbstractContract contract,
> Binding binding, Monitor monitor) {
> +        BindingWSDLGenerator.generateWSDL(component, contract,
> (WebServiceBinding)binding, extensionPoints, monitor);
> +    }
> +
> +}
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?rev=672803&r1=672802&r2=672803&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
> Mon Jun 30 09:02:54 2008
> @@ -47,6 +47,8 @@
>  import
> org.apache.tuscany.sca.contribution.service.ContributionReadException;
>  import
> org.apache.tuscany.sca.contribution.service.ContributionResolveException;
>  import
> org.apache.tuscany.sca.contribution.service.ContributionWriteException;
> +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.core.UtilityExtensionPoint;
>  import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
>  import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
>  import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
> @@ -54,6 +56,7 @@
>  import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
>  import org.apache.tuscany.sca.interfacedef.wsdl.WSDLObject;
>  import org.apache.tuscany.sca.monitor.Monitor;
> +import org.apache.tuscany.sca.monitor.MonitorFactory;
>  import org.apache.tuscany.sca.monitor.Problem;
>  import org.apache.tuscany.sca.monitor.Problem.Severity;
>  import org.apache.tuscany.sca.policy.IntentAttachPointTypeFactory;
> @@ -66,6 +69,7 @@
>  */
>  public class WebServiceBindingProcessor implements
> StAXArtifactProcessor<WebServiceBinding>, WebServiceConstants {
>
> +    private ExtensionPointRegistry extensionPoints;
>     private WSDLFactory wsdlFactory;
>     private WebServiceBindingFactory wsFactory;
>     private PolicyFactory policyFactory;
> @@ -74,13 +78,19 @@
>     private ConfiguredOperationProcessor configuredOperationProcessor;
>     private Monitor monitor;
>
> -    public WebServiceBindingProcessor(ModelFactoryExtensionPoint
> modelFactories, Monitor monitor) {
> +    public WebServiceBindingProcessor(ExtensionPointRegistry
> extensionPoints) {
> +        this.extensionPoints = extensionPoints;
> +        ModelFactoryExtensionPoint modelFactories =
> extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
>         this.policyFactory =
> modelFactories.getFactory(PolicyFactory.class);
>         this.wsFactory = new DefaultWebServiceBindingFactory();
>         this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
>         this.policyProcessor = new
> PolicyAttachPointProcessor(policyFactory);
>         this.intentAttachPointTypeFactory =
> modelFactories.getFactory(IntentAttachPointTypeFactory.class);
> -        this.monitor = monitor;
> +        UtilityExtensionPoint utilities =
> extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
> +        MonitorFactory monitorFactory =
> utilities.getUtility(MonitorFactory.class);
> +        if (monitorFactory != null) {
> +            this.monitor = monitorFactory.createMonitor();
> +        }
>         this.configuredOperationProcessor = new
> ConfiguredOperationProcessor(modelFactories, this.monitor);
>     }
>
> @@ -121,6 +131,7 @@
>         bindingType.setUnresolved(true);
>         ((PolicySetAttachPoint)wsBinding).setType(bindingType);*/
>         wsBinding.setUnresolved(true);
> +        wsBinding.setBuilder(new BindingBuilderImpl(extensionPoints));
>
>         // Read policies
>         policyProcessor.readPolicies(wsBinding, reader);
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java?rev=672803&r1=672802&r2=672803&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/WebServiceBinding.java
> Mon Jun 30 09:02:54 2008
> @@ -24,6 +24,7 @@
>  import javax.xml.namespace.QName;
>
>  import org.apache.tuscany.sca.assembly.Binding;
> +import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
>  import org.apache.tuscany.sca.interfacedef.InterfaceContract;
>  import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
>  import org.w3c.dom.Element;
> @@ -34,7 +35,7 @@
>  *
>  * @version $Rev$ $Date$
>  */
> -public interface WebServiceBinding extends Binding {
> +public interface WebServiceBinding extends Binding,
> BindingBuilderExtension {
>
>     /**
>      * Sets the WSDL location.
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java?rev=672803&r1=672802&r2=672803&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/impl/WebServiceBindingImpl.java
> Mon Jun 30 09:02:54 2008
> @@ -31,6 +31,7 @@
>  import org.apache.tuscany.sca.assembly.ConfiguredOperation;
>  import org.apache.tuscany.sca.assembly.Extensible;
>  import org.apache.tuscany.sca.assembly.OperationsConfigurator;
> +import org.apache.tuscany.sca.assembly.builder.BindingBuilder;
>  import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
>  import org.apache.tuscany.sca.interfacedef.Interface;
>  import org.apache.tuscany.sca.interfacedef.InterfaceContract;
> @@ -71,6 +72,7 @@
>     private InterfaceContract bindingInterfaceContract;
>     private Element endPointReference;
>     private Definition generatedWSDLDocument;
> +    private BindingBuilder builder;
>
>     protected WebServiceBindingImpl() {
>     }
> @@ -283,6 +285,14 @@
>         this.generatedWSDLDocument = definition;
>     }
>
> +    public BindingBuilder getBuilder() {
> +        return builder;
> +    }
> +
> +    public void setBuilder(BindingBuilder builder) {
> +        this.builder = builder;
> +    }
> +
>     public void setPolicySets(List<PolicySet> policySets) {
>         this.policySets = policySets;
>     }
>
> Modified:
> tuscany/branches/sca-java-1.3/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
> URL:
> http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.3/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java?rev=672803&r1=672802&r2=672803&view=diff
>
> ==============================================================================
> ---
> tuscany/branches/sca-java-1.3/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
> (original)
> +++
> tuscany/branches/sca-java-1.3/modules/core/src/main/java/org/apache/tuscany/sca/core/context/CallableReferenceImpl.java
> Mon Jun 30 09:02:54 2008
> @@ -34,6 +34,7 @@
>  import org.apache.tuscany.sca.assembly.OptimizableBinding;
>  import org.apache.tuscany.sca.assembly.Reference;
>  import org.apache.tuscany.sca.assembly.SCABinding;
> +import org.apache.tuscany.sca.assembly.builder.BindingBuilderExtension;
>  import org.apache.tuscany.sca.core.assembly.CompositeActivator;
>  import org.apache.tuscany.sca.core.assembly.CompositeActivatorImpl;
>  import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
> @@ -344,6 +345,9 @@
>                         }
>                     this.businessInterface =
> (Class<B>)javaInterface.getJavaClass();
>                 }
> +                if (binding instanceof BindingBuilderExtension) {
> +
>  ((BindingBuilderExtension)binding).getBuilder().build(component, reference,
> binding, null);
> +                }
>                 this.proxyFactory = compositeActivator.getProxyFactory();
>             }
>         } else {
>
>
> Hi

I've noticed that a 1.4-SNAPSHOT version has crept into
/binding-ws-xml/pom.xm. I also don't see binding-ws-wsdlgen in
modules/pom.xml.  This probably worked locally if you had a local
1.4-SNAPSHOT version. Can you confirm?

Simon

Re: svn commit: r672803 [3/3] - in /tuscany/branches/sca-java-1.3: itest/validation/src/main/java/calculator/warning/ itest/validation/src/main/resources/NoMatchingBinding/ itest/validation/src/main/resources/ServiceNotFoundForComponentService/ itest

Posted by Simon Nash <na...@apache.org>.
Simon Laws wrote:
> 
> 
> On Mon, Jun 30, 2008 at 5:02 PM, <nash@apache.org 
> <ma...@apache.org>> wrote:
> 
 > (cut)
> 
> Hi
> 
> I've noticed that a 1.4-SNAPSHOT version has crept into 
> /binding-ws-xml/pom.xm. I also don't see binding-ws-wsdlgen in 
> modules/pom.xml.  This probably worked locally if you had a local 
> 1.4-SNAPSHOT version. Can you confirm?
> 
> Simon
 >
My apologies for these mistakes.  The code did build cleanly for
me in my local environment.  The following problems need to be
corrected:
  1. Fix 1.4-SNAPSHOT in binding-ws-xml/pom.xml
  2. Fix 1.4-SNAPSHOT (many times) in binding-ws-wsdlgen/pom.xml
  3. Add missing binding-ws-wsdlgen to modules/pom.xml.

   Simon