Author: ffang
Date: Mon Jan 14 04:32:40 2013
New Revision: 1432798
URL: http://svn.apache.org/viewvc?rev=1432798&view=rev
Log:
[CXF-4676]Partial WSDL support in CXF
Added:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=1432798&r1=1432797&r2=1432798&view=diff
==============================================================================
---
cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
(original)
+++
cxf/trunk/rt/core/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
Mon Jan 14 04:32:40 2013
@@ -46,7 +46,9 @@ import java.util.concurrent.Executor;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.wsdl.Definition;
import javax.wsdl.Operation;
+import javax.wsdl.WSDLException;
import javax.xml.bind.annotation.XmlAttachmentRef;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlList;
@@ -105,6 +107,7 @@ import org.apache.cxf.service.model.Oper
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.service.model.UnwrappedOperationInfo;
+import org.apache.cxf.wsdl.WSDLManager;
import org.apache.cxf.wsdl11.WSDLServiceBuilder;
import org.apache.cxf.wsdl11.WSDLServiceFactory;
import org.apache.ws.commons.schema.XmlSchema;
@@ -525,7 +528,7 @@ public class ReflectionServiceFactoryBea
}
protected boolean isFromWsdl() {
- return !populateFromClass && getWsdlURL() != null;
+ return !populateFromClass && getWsdlURL() != null &&
!isEmptywsdl(getWsdlURL());
}
protected void initializeServiceModel() {
@@ -2581,4 +2584,16 @@ public class ReflectionServiceFactoryBea
public void setSchemaLocations(List<String> schemaLocations) {
this.schemaLocations = schemaLocations;
}
+ private boolean isEmptywsdl(String wsdlUrl) {
+ Definition definition;
+ try {
+ definition =
getBus().getExtension(WSDLManager.class).getDefinition(wsdlUrl);
+ } catch (WSDLException e) {
+ return true;
+ }
+ if (definition.getPortTypes().isEmpty() &&
definition.getImports().isEmpty()) {
+ return true;
+ }
+ return false;
+ }
}
Added:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java
(added)
+++
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,237 @@
+/**
+ * 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.cxf.wsdl11;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.wsdl.Binding;
+import javax.wsdl.BindingFault;
+import javax.wsdl.BindingInput;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.BindingOutput;
+import javax.wsdl.Definition;
+import javax.wsdl.Fault;
+import javax.wsdl.Input;
+import javax.wsdl.Operation;
+import javax.wsdl.Output;
+import javax.wsdl.Port;
+import javax.wsdl.PortType;
+import javax.wsdl.extensions.ExtensionRegistry;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBinding;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.wsdl.extensions.soap.SOAPFault;
+import javax.wsdl.extensions.soap.SOAPOperation;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.cxf.helpers.CastUtils;
+
+
+
+public final class PartialWSDLProcessor {
+ private static String bindingName = "SoapBinding";
+ private static String style = "document";
+ private static String useLiteral = "literal";
+ private static String serviceName = "Service";
+ private static String portName = "Port";
+
+
+ private PartialWSDLProcessor() {
+ }
+
+
+ public static boolean isPortTypeExisted(Definition wsdlDefinition, QName
name) {
+ Map<QName, PortType> portTypes =
CastUtils.cast(wsdlDefinition.getAllPortTypes());
+ if (portTypes == null || portTypes.isEmpty()) {
+ return false;
+ }
+ String existPortTypeName = null;
+ PortType portType = null;
+ try {
+ for (QName existPortTypeQName : portTypes.keySet()) {
+ existPortTypeName = existPortTypeQName.getLocalPart();
+ if (name.getLocalPart().contains(existPortTypeName)) {
+ portType = portTypes.get(existPortTypeQName);
+ break;
+ }
+ }
+ } catch (Exception e) {
+ portType = null;
+ }
+ if (portType == null) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isBindingExisted(Definition wsdlDefinition, QName
name) {
+ Map<QName, Binding> bindings =
CastUtils.cast(wsdlDefinition.getAllBindings());
+ Binding binding = null;
+ if (bindings == null || bindings.isEmpty()) {
+ return false;
+ }
+ try {
+ for (QName existBindingQName : bindings.keySet()) {
+ if
(existBindingQName.getLocalPart().contains(name.getLocalPart())) {
+ binding = bindings.get(existBindingQName);
+ break;
+ }
+ }
+ } catch (Exception e) {
+ binding = null;
+ }
+ if (binding == null) {
+ return false;
+ }
+ return true;
+ }
+ public static boolean isServiceExisted(Definition wsdlDefinition, QName
name) {
+ if (wsdlDefinition.getService(name) == null) {
+ return false;
+ }
+ return true;
+ }
+
+
+
+
+
+ public static Binding doAppendBinding(Definition wsdlDefinition, String
name, PortType portType,
+ ExtensionRegistry extReg) throws
Exception {
+ Binding binding = wsdlDefinition.createBinding();
+ binding.setQName(new QName(wsdlDefinition.getTargetNamespace(), name +
bindingName));
+ binding.setUndefined(false);
+ binding.setPortType(portType);
+ setSoapBindingExtElement(wsdlDefinition, binding, extReg);
+ addBindingOperation(wsdlDefinition, portType, binding, extReg);
+ return binding;
+
+
+ }
+
+ private static void setSoapBindingExtElement(Definition wsdlDefinition,
Binding binding,
+ ExtensionRegistry extReg)
throws Exception {
+ SOAPBindingUtil.addSOAPNamespace(wsdlDefinition, false);
+ SOAPBinding
+ soapBinding = SOAPBindingUtil.createSoapBinding(extReg, false);
+ soapBinding.setStyle(style);
+ binding.addExtensibilityElement(soapBinding);
+ }
+
+ @SuppressWarnings("unchecked")
+ private static void addBindingOperation(Definition wsdlDefinition,
PortType portType, Binding binding,
+ ExtensionRegistry extReg) throws
Exception {
+ List<Operation> ops = portType.getOperations();
+ for (Operation op : ops) {
+ BindingOperation bindingOperation =
wsdlDefinition.createBindingOperation();
+ setSoapOperationExtElement(bindingOperation, extReg);
+ bindingOperation.setName(op.getName());
+ if (op.getInput() != null) {
+
bindingOperation.setBindingInput(getBindingInput(op.getInput(), wsdlDefinition,
extReg));
+ }
+ if (op.getOutput() != null) {
+
bindingOperation.setBindingOutput(getBindingOutput(op.getOutput(),
wsdlDefinition, extReg));
+ }
+ if (op.getFaults() != null && op.getFaults().size() > 0) {
+ addSoapFaults(op, bindingOperation, wsdlDefinition, extReg);
+ }
+ bindingOperation.setOperation(op);
+ binding.addBindingOperation(bindingOperation);
+ }
+ }
+
+
+
+
+ private static void setSoapOperationExtElement(BindingOperation bo,
ExtensionRegistry extReg) throws Exception {
+ SOAPOperation soapOperation =
SOAPBindingUtil.createSoapOperation(extReg, false);
+ soapOperation.setStyle(style);
+ soapOperation.setSoapActionURI("");
+ bo.addExtensibilityElement(soapOperation);
+ }
+
+
+
+ private static BindingInput getBindingInput(Input input, Definition
wsdlDefinition,
+ ExtensionRegistry extReg)
throws Exception {
+ BindingInput bi = wsdlDefinition.createBindingInput();
+ bi.setName(input.getName());
+ bi.addExtensibilityElement(getSoapBody(BindingInput.class, extReg));
+ return bi;
+ }
+
+
+ private static BindingOutput getBindingOutput(Output output, Definition
wsdlDefinition,
+ ExtensionRegistry extReg)
throws Exception {
+ BindingOutput bo = wsdlDefinition.createBindingOutput();
+ bo.setName(output.getName());
+ bo.addExtensibilityElement(getSoapBody(BindingOutput.class, extReg));
+ return bo;
+ }
+
+ private static SOAPBody getSoapBody(Class<?> parent, ExtensionRegistry
extReg) throws Exception {
+ SOAPBody soapBody = SOAPBindingUtil.createSoapBody(extReg, parent,
false);
+ soapBody.setUse(useLiteral);
+ return soapBody;
+ }
+
+ private static void addSoapFaults(Operation op, BindingOperation
bindingOperation, Definition wsdlDefinition,
+ ExtensionRegistry extReg) throws
Exception {
+ Map<String, Fault> faults = CastUtils.cast(op.getFaults());
+ for (Fault fault : faults.values()) {
+ BindingFault bf = wsdlDefinition.createBindingFault();
+ bf.setName(fault.getName());
+ setSoapFaultExtElement(bf, extReg);
+ bindingOperation.addBindingFault(bf);
+ }
+ }
+
+ private static void setSoapFaultExtElement(BindingFault bf,
ExtensionRegistry extReg) throws Exception {
+ SOAPFault soapFault = SOAPBindingUtil.createSoapFault(extReg, false);
+ soapFault.setName(bf.getName());
+ soapFault.setUse(useLiteral);
+ bf.addExtensibilityElement(soapFault);
+ }
+
+ public static SOAPAddress setAddrElement(Definition wsdlDefinition, Port
port,
+ ExtensionRegistry extReg) throws
Exception {
+ SOAPAddress address = SOAPBindingUtil.createSoapAddress(extReg,
false);
+ address.setLocationURI("dummy");
+ return address;
+ }
+ public static javax.wsdl.Service doAppendService(Definition
wsdlDefinition,
+ String existPortName,
ExtensionRegistry
+ extReg, Binding binding)
throws Exception {
+ javax.wsdl.Service wsdlService = wsdlDefinition.createService();
+ wsdlService.setQName(new QName(wsdlDefinition.getTargetNamespace(),
existPortName + serviceName));
+ Port port = wsdlDefinition.createPort();
+ port.setName(existPortName + portName);
+ port.setBinding(binding);
+ SOAPAddress address =
PartialWSDLProcessor.setAddrElement(wsdlDefinition, port, extReg);
+ port.addExtensibilityElement(address);
+ wsdlService.addPort(port);
+ return wsdlService;
+ }
+
+
+}
Added:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java?rev=1432798&view=auto
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java
(added)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,491 @@
+/**
+ * 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.cxf.wsdl11;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.wsdl.Binding;
+import javax.wsdl.BindingFault;
+import javax.wsdl.BindingInput;
+import javax.wsdl.BindingOperation;
+import javax.wsdl.BindingOutput;
+import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.ExtensionRegistry;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.wsdl.extensions.soap.SOAPBinding;
+import javax.wsdl.extensions.soap.SOAPBody;
+import javax.wsdl.extensions.soap.SOAPFault;
+import javax.wsdl.extensions.soap.SOAPHeader;
+import javax.wsdl.extensions.soap.SOAPOperation;
+import javax.wsdl.extensions.soap12.SOAP12Address;
+import javax.wsdl.extensions.soap12.SOAP12Binding;
+import javax.wsdl.extensions.soap12.SOAP12Body;
+import javax.wsdl.extensions.soap12.SOAP12Fault;
+import javax.wsdl.extensions.soap12.SOAP12Header;
+import javax.wsdl.extensions.soap12.SOAP12Operation;
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.common.WSDLConstants;
+import org.apache.cxf.common.util.ExtensionInvocationHandler;
+import org.apache.cxf.common.util.StringUtils;
+
+
+public final class SOAPBindingUtil {
+ private static Map<String, String> bindingMap = new HashMap<String,
String>();
+
+ static {
+ bindingMap.put("RPC", "SOAPBinding.Style.RPC");
+ bindingMap.put("DOCUMENT", "SOAPBinding.Style.DOCUMENT");
+ bindingMap.put("LITERAL", "SOAPBinding.Use.LITERAL");
+ bindingMap.put("ENCODED", "SOAPBinding.Use.ENCODED");
+ bindingMap.put("BARE", "SOAPBinding.ParameterStyle.BARE");
+ bindingMap.put("WRAPPED", "SOAPBinding.ParameterStyle.WRAPPED");
+ }
+
+ private SOAPBindingUtil() {
+ }
+
+ public static String getBindingAnnotation(String key) {
+ return bindingMap.get(key.toUpperCase());
+ }
+
+ public static <T> T getProxy(Class<T> cls, Object obj) {
+ InvocationHandler ih = new ExtensionInvocationHandler(obj);
+ /*
+ * If we put proxies into the loader of the proxied class, they'll
just pile up.
+ */
+ Object proxy = null;
+ try {
+ proxy =
Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
+ new Class[] {cls}, ih);
+ } catch (Throwable ex) {
+ // Using cls classloader as a fallback to make it work within OSGi
+ ClassLoader contextLoader =
Thread.currentThread().getContextClassLoader();
+ if (contextLoader != cls.getClassLoader()) {
+ proxy = Proxy.newProxyInstance(cls.getClassLoader(),
+ new Class[] {cls}, ih);
+ } else {
+ if (ex instanceof RuntimeException) {
+ throw (RuntimeException)ex;
+ }
+ throw new RuntimeException(ex);
+ }
+ }
+ return cls.cast(proxy);
+ }
+
+ public static boolean isSOAPBinding(Binding binding) {
+ for (Object obj : binding.getExtensibilityElements()) {
+ if (isSOAPBinding(obj)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static String getBindingStyle(Binding binding) {
+ for (Object obj : binding.getExtensibilityElements()) {
+ if (isSOAPBinding(obj)) {
+ return getSoapBinding(obj).getStyle();
+ }
+ }
+ return "";
+ }
+
+ public static SOAPOperation getSoapOperation(List<ExtensibilityElement>
exts) {
+ if (exts != null) {
+ for (ExtensibilityElement ext : exts) {
+ if (isSOAPOperation(ext)) {
+ return getSoapOperation(ext);
+ }
+ }
+ }
+ return null;
+ }
+
+ public static SOAPOperation getSoapOperation(Object obj) {
+ if (isSOAPOperation(obj)) {
+ return getProxy(SOAPOperation.class, obj);
+ }
+ return null;
+ }
+
+ public static String getSOAPOperationStyle(BindingOperation bop) {
+ String style = "";
+ if (bop != null) {
+ for (Object obj : bop.getExtensibilityElements()) {
+ if (isSOAPOperation(obj)) {
+ style = getSoapOperation(obj).getStyle();
+ break;
+ }
+ }
+ }
+ return style;
+ }
+
+ public static SOAPBody getBindingInputSOAPBody(BindingOperation bop) {
+ BindingInput bindingInput = bop.getBindingInput();
+ if (bindingInput != null) {
+ for (Object obj : bindingInput.getExtensibilityElements()) {
+ if (isSOAPBody(obj)) {
+ return getSoapBody(obj);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static SOAPBody getBindingOutputSOAPBody(BindingOperation bop) {
+ BindingOutput bindingOutput = bop.getBindingOutput();
+ if (bindingOutput != null) {
+ for (Object obj : bindingOutput.getExtensibilityElements()) {
+ if (isSOAPBody(obj)) {
+ return getSoapBody(obj);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static SOAPBody getSoapBody(List<ExtensibilityElement> exts) {
+ if (exts != null) {
+ for (ExtensibilityElement ext : exts) {
+ if (isSOAPBody(ext)) {
+ return getSoapBody(ext);
+ }
+ }
+ }
+ return null;
+ }
+
+ public static SOAPBody getSoapBody(Object obj) {
+ if (isSOAPBody(obj)) {
+ return getProxy(SOAPBody.class, obj);
+ }
+ return null;
+ }
+
+ public static boolean isSOAPBody(Object obj) {
+ return obj instanceof SOAPBody || obj instanceof SOAP12Body;
+ }
+
+ public static boolean isSOAPHeader(Object obj) {
+ return obj instanceof SOAPHeader || obj instanceof SOAP12Header;
+ }
+
+ public static List<SOAPHeader> getSoapHeaders(List<ExtensibilityElement>
exts) {
+ List<SOAPHeader> headers = new ArrayList<SOAPHeader>();
+ if (exts != null) {
+ for (ExtensibilityElement ext : exts) {
+ if (isSOAPHeader(ext)) {
+ headers.add(getSoapHeader(ext));
+ }
+ }
+ }
+ return headers;
+ }
+
+ public static SOAPHeader getSoapHeader(Object obj) {
+ if (isSOAPHeader(obj)) {
+ return getProxy(SOAPHeader.class, obj);
+ }
+ return null;
+ }
+
+ public static SOAPAddress getSoapAddress(Object obj) {
+ if (isSOAPAddress(obj)) {
+ return getProxy(SOAPAddress.class, obj);
+ }
+ return null;
+ }
+
+ public static boolean isSOAPAddress(Object obj) {
+ return obj instanceof SOAPAddress || obj instanceof SOAP12Address;
+ }
+
+ public static SOAPHeader getBindingInputSOAPHeader(BindingOperation bop) {
+ BindingInput bindingInput = bop.getBindingInput();
+ if (bindingInput != null) {
+ for (Object obj : bindingInput.getExtensibilityElements()) {
+ if (isSOAPHeader(obj)) {
+ return getProxy(SOAPHeader.class, obj);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static SOAPHeader getBindingOutputSOAPHeader(BindingOperation bop) {
+ BindingOutput bindingOutput = bop.getBindingOutput();
+ if (bindingOutput != null) {
+ for (Object obj : bindingOutput.getExtensibilityElements()) {
+ if (isSOAPHeader(obj)) {
+ return getProxy(SOAPHeader.class, obj);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static SOAPBinding getSoapBinding(List<ExtensibilityElement> exts) {
+ for (ExtensibilityElement ext : exts) {
+ if (isSOAPBinding(ext)) {
+ return getSoapBinding(ext);
+ }
+ }
+ return null;
+ }
+
+ public static SOAPBinding getSoapBinding(Object obj) {
+ if (isSOAPBinding(obj)) {
+ return getProxy(SOAPBinding.class, obj);
+ }
+ return null;
+ }
+
+ public static boolean isSOAPBinding(Object obj) {
+ return obj instanceof SOAPBinding || obj instanceof SOAP12Binding;
+ }
+
+ public static List<SOAPFault>
getBindingOperationSoapFaults(BindingOperation bop) {
+ List<SOAPFault> faults = new ArrayList<SOAPFault>();
+ for (Object obj : bop.getBindingFaults().values()) {
+ if (!(obj instanceof BindingFault)) {
+ continue;
+ }
+ BindingFault faultElement = (BindingFault) obj;
+ for (Object flt : faultElement.getExtensibilityElements()) {
+ SOAPFault fault = getSoapFault(flt);
+ if (fault != null) {
+ faults.add(fault);
+ }
+ }
+ }
+ return faults;
+ }
+
+ public static SOAPFault getSoapFault(Object obj) {
+ if (isSOAPFault(obj)) {
+ return getProxy(SOAPFault.class, obj);
+ }
+ return null;
+ }
+
+ public static boolean isMixedStyle(Binding binding) {
+ String bindingStyle = "";
+ String previousOpStyle = "";
+ String style = "";
+
+ for (Object obj : binding.getExtensibilityElements()) {
+ if (isSOAPBinding(obj)) {
+ SOAPBinding soapBinding = getSoapBinding(obj);
+ bindingStyle = soapBinding.getStyle();
+ if (bindingStyle == null) {
+ bindingStyle = "";
+ }
+ }
+ }
+ for (Object bobj : binding.getBindingOperations()) {
+ BindingOperation bop = (BindingOperation)bobj;
+ for (Object obj : bop.getExtensibilityElements()) {
+ if (isSOAPOperation(obj)) {
+ SOAPOperation soapOperation = getSoapOperation(obj);
+ style = soapOperation.getStyle();
+ if (style == null) {
+ style = "";
+ }
+
+ if ("".equals(bindingStyle) && "".equals(previousOpStyle)
|| "".equals(bindingStyle)
+ && previousOpStyle.equalsIgnoreCase(style)) {
+ previousOpStyle = style;
+
+ } else if (!"".equals(bindingStyle) &&
"".equals(previousOpStyle)
+ && bindingStyle.equalsIgnoreCase(style)
+ ||
bindingStyle.equalsIgnoreCase(previousOpStyle)
+ && bindingStyle.equalsIgnoreCase(style)) {
+ previousOpStyle = style;
+ } else if (!"".equals(bindingStyle) && "".equals(style) &&
"".equals(previousOpStyle)) {
+ continue;
+ } else {
+ return true;
+ }
+
+ }
+
+ }
+ }
+ return false;
+ }
+
+ public static String getCanonicalBindingStyle(Binding binding) {
+ String bindingStyle = getBindingStyle(binding);
+ if (!StringUtils.isEmpty(bindingStyle)) {
+ return bindingStyle;
+ }
+ for (Object bobj : binding.getBindingOperations()) {
+ BindingOperation bindingOp = (BindingOperation)bobj;
+ String bopStyle = getSOAPOperationStyle(bindingOp);
+ if (!StringUtils.isEmpty(bopStyle)) {
+ return bopStyle;
+ }
+ }
+ return "";
+
+ }
+
+ public static boolean isSOAPOperation(Object obj) {
+ return obj instanceof SOAPOperation || obj instanceof SOAP12Operation;
+ }
+
+ public static boolean isSOAPFault(Object obj) {
+ return obj instanceof SOAPFault || obj instanceof SOAP12Fault;
+ }
+
+ public static SOAPAddress createSoapAddress(ExtensionRegistry extReg,
boolean isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(Port.class,
+
WSDLConstants.QNAME_SOAP12_BINDING_ADDRESS);
+ } else {
+ extElement = extReg.createExtension(Port.class,
+
WSDLConstants.QNAME_SOAP_BINDING_ADDRESS);
+ }
+ return getSoapAddress(extElement);
+ }
+
+ public static SOAPBody createSoapBody(ExtensionRegistry extReg, Class<?>
clz, boolean isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(clz, new
QName(WSDLConstants.NS_SOAP12,
+
"body"));
+ } else {
+ extElement = extReg.createExtension(clz, new
QName(WSDLConstants.NS_SOAP11,
+
"body"));
+ }
+ return getSoapBody(extElement);
+ }
+
+ public static SOAPBinding createSoapBinding(ExtensionRegistry extReg,
boolean isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(Binding.class,
+ new
QName(WSDLConstants.NS_SOAP12,
+
"binding"));
+
((SOAP12Binding)extElement).setTransportURI(WSDLConstants.NS_SOAP_HTTP_TRANSPORT);
+ } else {
+ extElement = extReg.createExtension(Binding.class,
+ new
QName(WSDLConstants.NS_SOAP11,
+
"binding"));
+
((SOAPBinding)extElement).setTransportURI(WSDLConstants.NS_SOAP_HTTP_TRANSPORT);
+ }
+ return getSoapBinding(extElement);
+ }
+
+ public static SOAPOperation createSoapOperation(ExtensionRegistry extReg,
boolean isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(BindingOperation.class,
+ new
QName(WSDLConstants.NS_SOAP12,
+
"operation"));
+ } else {
+ extElement = extReg.createExtension(BindingOperation.class,
+ new
QName(WSDLConstants.NS_SOAP11,
+
"operation"));
+ }
+ return getSoapOperation(extElement);
+ }
+
+ public static SOAPFault createSoapFault(ExtensionRegistry extReg, boolean
isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(BindingFault.class,
+ new
QName(WSDLConstants.NS_SOAP12,
+
"fault"));
+ } else {
+ extElement = extReg.createExtension(BindingFault.class,
+ new
QName(WSDLConstants.NS_SOAP11,
+ "fault"));
+ }
+ return getSoapFault(extElement);
+ }
+
+ public static SOAPHeader createSoapHeader(ExtensionRegistry extReg,
Class<?> clz, boolean isSOAP12)
+ throws WSDLException {
+ ExtensibilityElement extElement = null;
+ if (isSOAP12) {
+ extElement = extReg.createExtension(clz,
+ new
QName(WSDLConstants.NS_SOAP12,
+
"header"));
+ } else {
+ extElement = extReg.createExtension(clz,
+ new
QName(WSDLConstants.NS_SOAP11,
+
"header"));
+ }
+ return getSoapHeader(extElement);
+ }
+
+
+ public static void addSOAPNamespace(Definition definition, boolean
isSOAP12) {
+ Map<?, ?> namespaces = definition.getNamespaces();
+ if (isSOAP12
+ && !namespaces.values().contains(WSDLConstants.NS_SOAP12)) {
+ definition.addNamespace("soap12", WSDLConstants.NS_SOAP12);
+ } else if (!namespaces.values().contains(WSDLConstants.NS_SOAP11)) {
+ definition.addNamespace("soap", WSDLConstants.NS_SOAP11);
+ }
+ }
+
+ public static javax.jws.soap.SOAPBinding.Style getSoapStyle(String
soapStyle) {
+ if ("".equals(soapStyle)) {
+ return null;
+ } else if ("RPC".equalsIgnoreCase(soapStyle)) {
+ return javax.jws.soap.SOAPBinding.Style.RPC;
+ } else {
+ return javax.jws.soap.SOAPBinding.Style.DOCUMENT;
+ }
+ }
+
+ public static javax.jws.soap.SOAPBinding.Use getSoapUse(String soapUse) {
+ if ("".equals(soapUse)) {
+ return null;
+ } else if ("ENCODED".equalsIgnoreCase(soapUse)) {
+ return javax.jws.soap.SOAPBinding.Use.ENCODED;
+ } else {
+ return javax.jws.soap.SOAPBinding.Use.LITERAL;
+ }
+ }
+
+}
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java?rev=1432798&r1=1432797&r2=1432798&view=diff
==============================================================================
---
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
(original)
+++
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java
Mon Jan 14 04:32:40 2013
@@ -22,15 +22,21 @@ package org.apache.cxf.wsdl11;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.logging.Logger;
+import javax.wsdl.Binding;
import javax.wsdl.Definition;
+import javax.wsdl.PortType;
import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensionRegistry;
+import javax.wsdl.factory.WSDLFactory;
import javax.xml.namespace.QName;
import org.apache.cxf.Bus;
import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.ServiceImpl;
import org.apache.cxf.service.factory.AbstractServiceFactoryBean;
@@ -136,7 +142,34 @@ public class WSDLServiceFactory extends
} else {
javax.wsdl.Service wsdlService =
definition.getService(serviceName);
if (wsdlService == null) {
- throw new ServiceConstructionException(new
Message("NO_SUCH_SERVICE_EXC", LOG, serviceName));
+ if ((!PartialWSDLProcessor.isServiceExisted(definition,
serviceName))
+ && (!PartialWSDLProcessor.isBindingExisted(definition,
serviceName))
+ && (PartialWSDLProcessor.isPortTypeExisted(definition,
serviceName))) {
+ try {
+ Map<QName, PortType> portTypes =
CastUtils.cast(definition.getPortTypes());
+ String existPortName = null;
+ PortType portType = null;
+ for (QName existPortQName : portTypes.keySet()) {
+ existPortName = existPortQName.getLocalPart();
+ if
(serviceName.getLocalPart().contains(existPortName)) {
+ portType = portTypes.get(existPortQName);
+ break;
+ }
+ }
+ WSDLFactory factory = WSDLFactory.newInstance();
+ ExtensionRegistry extReg =
factory.newPopulatedExtensionRegistry();
+ Binding binding =
PartialWSDLProcessor.doAppendBinding(definition,
+
existPortName, portType, extReg);
+ definition.addBinding(binding);
+ wsdlService =
PartialWSDLProcessor.doAppendService(definition,
+
existPortName, extReg, binding);
+ definition.addService(wsdlService);
+ } catch (Exception e) {
+ throw new ServiceConstructionException(new
Message("NO_SUCH_SERVICE_EXC", LOG, serviceName));
+ }
+ } else {
+ throw new ServiceConstructionException(new
Message("NO_SUCH_SERVICE_EXC", LOG, serviceName));
+ }
}
try {
services = new
WSDLServiceBuilder(getBus()).buildServices(definition,
Added:
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java
(added)
+++
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,29 @@
+/**
+ * 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.cxf.systest.jaxws;
+
+import javax.jws.WebService;
+
+@WebService(wsdlLocation = "partialwsdl/AddNumbersImplPartial1Service.wsdl")
+public class AddNumbersImplPartial1 {
+ public int addTwoNumbers(int number1, int number2) {
+ return number1 + number2;
+ }
+}
Added:
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java
(added)
+++
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,28 @@
+/**
+ * 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.cxf.systest.jaxws;
+import javax.jws.WebService;
+@WebService(wsdlLocation = "partialwsdl/AddNumbersImplPartial2Service.wsdl")
+
+public class AddNumbersImplPartial2 {
+ public int addTwoNumbers(int number1, int number2) {
+ return number1 + number2;
+ }
+}
Added:
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java
(added)
+++
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,75 @@
+/**
+ * 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.cxf.systest.jaxws;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
+
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class ClientServerPartialWsdlTest extends
AbstractBusClientServerTestBase {
+ static final String PORT = allocatePort(ServerPartialWsdl.class);
+
+ private final QName serviceName1 = new
QName("http://jaxws.systest.cxf.apache.org/",
+
"AddNumbersImplPartial1Service");
+ private final QName portName1 = new
QName("http://jaxws.systest.cxf.apache.org/",
+ "AddNumbersImplPartial1Port");
+ private final QName serviceName2 = new
QName("http://jaxws.systest.cxf.apache.org/",
+
"AddNumbersImplPartial2Service");
+ private final QName portName2 = new
QName("http://jaxws.systest.cxf.apache.org/",
+ "AddNumbersImplPartial2Port");
+
+
+
+ @BeforeClass
+ public static void startServers() throws Exception {
+
+ assertTrue("server did not launch correctly",
launchServer(ServerPartialWsdl.class, true));
+
+ }
+
+ @Test
+ public void testCXF4676Partial1() throws Exception {
+ DynamicClientFactory dcf = DynamicClientFactory.newInstance();
+ Client client = dcf.createClient("http://localhost:"
+ + PORT + "/AddNumbersImplPartial1Service?wsdl", serviceName1,
portName1);
+ updateAddressPort(client, PORT);
+ Object[] result = client.invoke("addTwoNumbers", 10, 20);
+ assertNotNull("no response received from service", result);
+ assertEquals(30, result[0]);
+ }
+
+ @Test
+ public void testCXF4676partial2() throws Exception {
+ DynamicClientFactory dcf = DynamicClientFactory.newInstance();
+ Client client = dcf.createClient("http://localhost:"
+ + PORT + "/AddNumbersImplPartial2Service?wsdl", serviceName2,
portName2);
+ updateAddressPort(client, PORT);
+ Object[] result = client.invoke("addTwoNumbers", 10, 20);
+ assertNotNull("no response received from service", result);
+ assertEquals(30, result[0]);
+
+ }
+
+}
Added:
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java
(added)
+++
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,53 @@
+/**
+ * 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.cxf.systest.jaxws;
+
+import javax.xml.ws.Endpoint;
+
+
+//import org.apache.cxf.greeter_control.GreeterImplBase;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+
+public class ServerPartialWsdl extends AbstractBusTestServerBase {
+ static final String PORT = allocatePort(ServerPartialWsdl.class);
+
+ protected void run() {
+ Object implementor1 = new AddNumbersImplPartial1();
+ String address1 = "http://localhost:"
+ + PORT + "/AddNumbersImplPartial1Service";
+ Endpoint.publish(address1, implementor1);
+ Object implementor2 = new AddNumbersImplPartial2();
+ String address2 = "http://localhost:"
+ + PORT + "/AddNumbersImplPartial2Service";
+ Endpoint.publish(address2, implementor2);
+ }
+
+ public static void main(String[] args) {
+ try {
+ ServerPartialWsdl s = new ServerPartialWsdl();
+ s.start();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ System.exit(-1);
+ } finally {
+ System.out.println("done!");
+ }
+ }
+}
Added:
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl
(added)
+++
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- a partial wsdl to test jsr 224 5.2.5.5 -->
+<!--
+ * 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.
+ -->
+
+<definitions
+targetNamespace="http://jaxws.systest.cxf.apache.org/"
+name="AddNumbersImplPartial1Service"
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:tns="http://jaxws.systest.cxf.apache.org/"
+xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <xsd:schema>
+ <xsd:import namespace="http://jaxws.systest.cxf.apache.org/"
schemaLocation="AddNumbersImplPartial1Service_schema1.xsd"/>
+ </xsd:schema>
+ </types>
+ <message name="addTwoNumbers">
+ <part name="parameters" element="tns:addTwoNumbers"/>
+ </message>
+ <message name="addTwoNumbersResponse">
+ <part name="parameters" element="tns:addTwoNumbersResponse"/>
+ </message>
+ <portType name="AddNumbersImplPartial1">
+ <operation name="addTwoNumbers">
+ <input message="tns:addTwoNumbers"/>
+ <output message="tns:addTwoNumbersResponse"/>
+ </operation>
+ </portType>
+ <!-- end here -->
+</definitions>
Added:
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd
(added)
+++
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * 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.
+ -->
+
+<xs:schema version="1.0"
+ targetNamespace="http://jaxws.systest.cxf.apache.org/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="addTwoNumbers"
+ xmlns:ns1="http://jaxws.systest.cxf.apache.org/">
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:int" />
+ <xs:element name="arg1" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="addTwoNumbersResponse"
+ xmlns:ns2="http://jaxws.systest.cxf.apache.org/">
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="return" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+
Added:
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl
(added)
+++
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- should cause dynamic wsdl gen from code-->
+<!--
+ * 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.
+ -->
+
+<!--
+ * 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.
+ -->
+
+<definitions targetNamespace="http://jaxws.systest.cxf.apache.org/"
+ name="WebResultCheckService"
+ xmlns:tns="http://jaxws.systest.cxf.apache.org/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/">
+</definitions>
+
Added:
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd
URL:
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd?rev=1432798&view=auto
==============================================================================
---
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd
(added)
+++
cxf/trunk/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd
Mon Jan 14 04:32:40 2013
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ * 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.
+ -->
+
+<xs:schema version="1.0"
+ targetNamespace="http://jaxws.systest.cxf.apache.org/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="addTwoNumbers"
+ xmlns:ns1="http://jaxws.systest.cxf.apache.org/">
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:int" />
+ <xs:element name="arg1" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="addTwoNumbersResponse"
+ xmlns:ns2="http://jaxws.systest.cxf.apache.org/">
+
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="return" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+