Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E7A12EDCA for ; Mon, 14 Jan 2013 06:31:24 +0000 (UTC) Received: (qmail 71610 invoked by uid 500); 14 Jan 2013 06:31:24 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 71457 invoked by uid 500); 14 Jan 2013 06:31:22 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 71408 invoked by uid 99); 14 Jan 2013 06:31:20 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Jan 2013 06:31:20 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Jan 2013 06:31:19 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 3702D23889BB; Mon, 14 Jan 2013 06:31:00 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1432811 - in /cxf/branches/2.5.x-fixes: ./ rt/core/src/main/java/org/apache/cxf/wsdl11/ rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ systests/jaxws/src/test/res... Date: Mon, 14 Jan 2013 06:30:59 -0000 To: commits@cxf.apache.org From: ffang@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130114063100.3702D23889BB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ffang Date: Mon Jan 14 06:30:59 2013 New Revision: 1432811 URL: http://svn.apache.org/viewvc?rev=1432811&view=rev Log: Merged revisions 1432803 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes ................ r1432803 | ffang | 2013-01-14 12:52:49 +0800 (一, 14 1 2013) | 16 lines Merged revisions 1432800 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes ................ r1432800 | ffang | 2013-01-14 12:44:04 +0800 (一, 14 1 2013) | 9 lines Merged revisions 1432798 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1432798 | ffang | 2013-01-14 12:32:40 +0800 (一, 14 1 2013) | 1 line [CXF-4676]Partial WSDL support in CXF ........ ................ ................ Added: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/ExtensionInvocationHandler.java cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/PartialWSDLProcessor.java cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java - copied, changed from r1432803, cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial1.java cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/AddNumbersImplPartial2.java cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerPartialWsdlTest.java cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ServerPartialWsdl.java cxf/branches/2.5.x-fixes/systests/jaxws/src/test/resources/partialwsdl/ - copied from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/resources/partialwsdl/ cxf/branches/2.5.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service.wsdl cxf/branches/2.5.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial1Service_schema1.xsd cxf/branches/2.5.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service.wsdl cxf/branches/2.5.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd - copied unchanged from r1432803, cxf/branches/2.6.x-fixes/systests/jaxws/src/test/resources/partialwsdl/AddNumbersImplPartial2Service_schema1.xsd Modified: cxf/branches/2.5.x-fixes/ (props changed) cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/branches/2.7.x-fixes:r1432800 Merged /cxf/trunk:r1432798 Merged /cxf/branches/2.6.x-fixes:r1432803 Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Added: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/ExtensionInvocationHandler.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/ExtensionInvocationHandler.java?rev=1432811&view=auto ============================================================================== --- cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/ExtensionInvocationHandler.java (added) +++ cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/ExtensionInvocationHandler.java Mon Jan 14 06:30:59 2013 @@ -0,0 +1,44 @@ +/** + * 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.Method; + +public class ExtensionInvocationHandler implements InvocationHandler { + + private Object obj; + public ExtensionInvocationHandler(Object o) { + obj = o; + } + + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Class[] clzs = null; + if (args != null) { + clzs = new Class[args.length]; + for (int i = 0; i < args.length; i++) { + clzs[i] = args[i].getClass(); + } + } + + Method m = obj.getClass().getMethod(method.getName(), method.getParameterTypes()); + return m.invoke(obj, args); + } +} Copied: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java (from r1432803, cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java) URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java?p2=cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java&p1=cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java&r1=1432803&r2=1432811&rev=1432811&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java (original) +++ cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/SOAPBindingUtil.java Mon Jan 14 06:30:59 2013 @@ -50,10 +50,8 @@ import javax.wsdl.extensions.soap12.SOAP 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 bindingMap = new HashMap(); Modified: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java?rev=1432811&r1=1432810&r2=1432811&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java (original) +++ cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceFactory.java Mon Jan 14 06:30:59 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 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, Modified: cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=1432811&r1=1432810&r2=1432811&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Mon Jan 14 06:30:59 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; @@ -106,6 +108,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; @@ -496,7 +499,7 @@ public class ReflectionServiceFactoryBea } protected boolean isFromWsdl() { - return !populateFromClass && getWsdlURL() != null; + return !populateFromClass && getWsdlURL() != null && !isEmptywsdl(getWsdlURL()); } protected void initializeServiceModel() { @@ -2558,4 +2561,17 @@ public class ReflectionServiceFactoryBea public void setSchemaLocations(List 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; + } }