Return-Path: Delivered-To: apmail-incubator-cxf-commits-archive@locus.apache.org Received: (qmail 14159 invoked from network); 19 Jul 2007 20:48:51 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 19 Jul 2007 20:48:51 -0000 Received: (qmail 2376 invoked by uid 500); 19 Jul 2007 20:48:25 -0000 Delivered-To: apmail-incubator-cxf-commits-archive@incubator.apache.org Received: (qmail 2327 invoked by uid 500); 19 Jul 2007 20:48:25 -0000 Mailing-List: contact cxf-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cxf-dev@incubator.apache.org Delivered-To: mailing list cxf-commits@incubator.apache.org Received: (qmail 2318 invoked by uid 99); 19 Jul 2007 20:48:25 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Jul 2007 13:48:25 -0700 X-ASF-Spam-Status: No, hits=-98.6 required=10.0 tests=ALL_TRUSTED,INFO_TLD,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 19 Jul 2007 13:48:20 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 1D0391A981A; Thu, 19 Jul 2007 13:48:00 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r557765 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/databinding/ buildtools/src/main/resources/ common/common/src/main/java/org/apache/cxf/staxutils/ rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/ rt/core/s... Date: Thu, 19 Jul 2007 20:47:44 -0000 To: cxf-commits@incubator.apache.org From: dandiep@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070719204800.1D0391A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dandiep Date: Thu Jul 19 13:47:36 2007 New Revision: 557765 URL: http://svn.apache.org/viewvc?view=rev&rev=557765 Log: Fix up support for Aegis exceptions. This mostly involved adding a FaultOutInterceptor and making Aegis/W3CDOMStreamReader work with the latest DepthXMLStreamReader change. I also added a hook to pass in the actual Fault object to Aegis so it could build the Exception appropriately. CXF-811: Fix the problem with missing types in the WSDL for Aegis. Fix a problem where argument names were arg00 with the simple frontend. You may notice I added a FaultInfoException class as well. This makes it possible to use databindings like JAXB which don't support serializing exceptions, with the simple frontend. This work is ongoing.... Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java (with props) incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java (with props) incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java (with props) incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java (with props) incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java (with props) incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html (with props) Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java incubator/cxf/trunk/buildtools/src/main/resources/cxf-checkstyle.xml incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/Context.java incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ObjectType.java incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementReader.java incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ExceptionInheritanceTest.java incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1Exception.java incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1ExtendedException.java incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java incubator/cxf/trunk/tools/javato/test/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java (original) +++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/databinding/DataReader.java Thu Jul 19 13:47:36 2007 @@ -28,6 +28,8 @@ import org.apache.cxf.service.model.MessagePartInfo; public interface DataReader { + String FAULT = DataReader.class.getName() + "Fault"; + Object read(T input); Object read(MessagePartInfo part, T input); Object read(QName name, T input, Class type); Modified: incubator/cxf/trunk/buildtools/src/main/resources/cxf-checkstyle.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/buildtools/src/main/resources/cxf-checkstyle.xml?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/buildtools/src/main/resources/cxf-checkstyle.xml (original) +++ incubator/cxf/trunk/buildtools/src/main/resources/cxf-checkstyle.xml Thu Jul 19 13:47:36 2007 @@ -222,7 +222,7 @@ - + Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java (original) +++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java Thu Jul 19 13:47:36 2007 @@ -35,14 +35,15 @@ * @author Tomasz Sztelak */ public abstract class AbstractDOMStreamReader implements XMLStreamReader { + protected int currentEvent = XMLStreamConstants.START_DOCUMENT; + private Map properties = new HashMap(); private FastStack frames = new FastStack(); private ElementFrame frame; - private int currentEvent = XMLStreamConstants.START_DOCUMENT; - + /** * */ Modified: incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java (original) +++ incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java Thu Jul 19 13:47:36 2007 @@ -35,6 +35,7 @@ import org.w3c.dom.Text; import org.apache.cxf.helpers.DOMUtils; +import org.apache.cxf.staxutils.AbstractDOMStreamReader.ElementFrame; public class W3CDOMStreamReader extends AbstractDOMStreamReader { private Node content; @@ -157,6 +158,12 @@ @Override public String getElementText() throws XMLStreamException { String result = DOMUtils.getContent(content); + + ElementFrame frame = getCurrentFrame(); + frame.ended = true; + currentEvent = END_ELEMENT; + endElement(); + // we should not return null according to the StAx API javadoc return result != null ? result : ""; } Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java (added) +++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,36 @@ +/** + * 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.binding.http.bare; + +import javax.jws.WebParam; +import javax.jws.WebService; + +import org.codehaus.jra.Get; +import org.codehaus.jra.HttpResource; + +@WebService +public interface UserService { + + @Get + @HttpResource(location = "/login/{username}/{password}") + String login(@WebParam(name = "username") + String username, + @WebParam(name = "password") String password); +} Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserService.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java (added) +++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java Thu Jul 19 13:47:36 2007 @@ -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.cxf.binding.http.bare; + +import javax.jws.WebService; + +@WebService(endpointInterface = "org.apache.cxf.binding.http.bare.UserService") +public class UserServiceImpl implements UserService { + + public String login(String username, String password) { + return "sessionId"; + } +} Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java (added) +++ incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,63 @@ +/** + * 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.binding.http.bare; + +import java.util.HashMap; +import java.util.Map; + +import org.w3c.dom.Document; + +import org.apache.cxf.binding.BindingFactoryManager; +import org.apache.cxf.binding.http.AbstractRestTest; +import org.apache.cxf.binding.http.HttpBindingFactory; +import org.apache.cxf.endpoint.ServerImpl; +import org.apache.cxf.jaxws.JaxWsServerFactoryBean; +import org.junit.Test; + +public class UserServiceTest extends AbstractRestTest { + + @Test + public void testInterfaceImplCombo() throws Exception { + BindingFactoryManager bfm = getBus().getExtension(BindingFactoryManager.class); + HttpBindingFactory factory = new HttpBindingFactory(); + factory.setBus(getBus()); + bfm.registerBindingFactory(HttpBindingFactory.HTTP_BINDING_ID, factory); + + JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean(); + sf.setBus(getBus()); + sf.setBindingId(HttpBindingFactory.HTTP_BINDING_ID); + sf.setAddress("http://localhost:9001/foo/"); + sf.setServiceBean(new UserServiceImpl()); + + Map props = new HashMap(); + props.put("contextMatchStrategy", "stem"); + sf.setProperties(props); + + ServerImpl svr = (ServerImpl) sf.create(); + + Document res = get("http://localhost:9001/foo/login/bleh/bar"); + assertNotNull(res); + + addNamespace("c", "http://bare.http.binding.cxf.apache.org/"); + assertValid("/c:loginResponse/return", res); + + svr.stop(); + } + +} Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/bindings/http/src/test/java/org/apache/cxf/binding/http/bare/UserServiceTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Thu Jul 19 13:47:36 2007 @@ -74,7 +74,7 @@ protected Bus bus; protected ConduitSelector conduitSelector; protected ClientOutFaultObserver outFaultObserver; - protected int synchronousTimeout = 10000; // default 10 second timeout + protected int synchronousTimeout = 1000000; // default 10 second timeout protected PhaseChainCache outboundChainCache = new PhaseChainCache(); protected PhaseChainCache inboundChainCache = new PhaseChainCache(); Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java (original) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointImpl.java Thu Jul 19 13:47:36 2007 @@ -38,6 +38,7 @@ import org.apache.cxf.configuration.Configurable; import org.apache.cxf.feature.AbstractFeature; import org.apache.cxf.interceptor.AbstractAttributedInterceptorProvider; +import org.apache.cxf.interceptor.ClientFaultConverter; import org.apache.cxf.interceptor.InFaultChainInitiatorObserver; import org.apache.cxf.interceptor.MessageSenderInterceptor; import org.apache.cxf.interceptor.OutFaultChainInitiatorObserver; @@ -82,6 +83,7 @@ inFaultObserver = new InFaultChainInitiatorObserver(bus); outFaultObserver = new OutFaultChainInitiatorObserver(bus); + getInFaultInterceptors().add(new ClientFaultConverter()); getOutInterceptors().add(new MessageSenderInterceptor()); getOutFaultInterceptors().add(new MessageSenderInterceptor()); } Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java (added) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,40 @@ +/** + * 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.frontend; + +public class FaultInfoException extends Exception { + + public FaultInfoException(String arg0, Throwable arg1) { + super(arg0, arg1); + } + + public FaultInfoException(String arg0) { + super(arg0); + } + + public FaultInfoException(Throwable arg0) { + super(arg0); + } + + public FaultInfoException() { + super(); + } + +} Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/frontend/FaultInfoException.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java (original) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/ClientFaultConverter.java Thu Jul 19 13:47:36 2007 @@ -26,6 +26,8 @@ import java.util.StringTokenizer; import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; import javax.xml.xpath.XPathConstants; import org.w3c.dom.Element; @@ -43,6 +45,7 @@ import org.apache.cxf.service.model.BindingOperationInfo; import org.apache.cxf.service.model.FaultInfo; import org.apache.cxf.service.model.MessagePartInfo; +import org.apache.cxf.staxutils.W3CDOMStreamReader; /** * Takes a Fault and converts it to a local exception type if possible. @@ -94,8 +97,23 @@ Service s = msg.getExchange().get(Service.class); DataBinding dataBinding = s.getDataBinding(); - DataReader reader = dataBinding.createReader(Node.class); - Object e = reader.read(part, exDetail); + Object e = null; + if (isDOMSupported(dataBinding)) { + DataReader reader = dataBinding.createReader(Node.class); + reader.setProperty(DataReader.FAULT, fault); + e = reader.read(part, exDetail); + } else { + DataReader reader = dataBinding.createReader(XMLStreamReader.class); + XMLStreamReader xsr = new W3CDOMStreamReader(exDetail); + try { + xsr.nextTag(); + } catch (XMLStreamException e1) { + throw new Fault(e1); + } + reader.setProperty(DataReader.FAULT, fault); + e = reader.read(part, xsr); + } + if (!(e instanceof Exception)) { Class exClass = faultWanted.getProperty(Class.class.getName(), Class.class); Class beanClass = e.getClass(); @@ -109,6 +127,16 @@ msg.setContent(Exception.class, e); } + private boolean isDOMSupported(DataBinding db) { + boolean supportsDOM = false; + for (Class c : db.getSupportedWriterFormats()) { + if (c.equals(Node.class)) { + supportsDOM = true; + } + } + return supportsDOM; + } + private void setStackTrace(Fault fault, Message msg) { Map ns = new HashMap(); XPathUtils xu = new XPathUtils(ns); Added: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java (added) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,127 @@ +/** + * 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.interceptor; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ResourceBundle; + +import javax.xml.stream.XMLStreamWriter; + +import org.w3c.dom.Node; + +import org.apache.cxf.common.i18n.BundleUtils; +import org.apache.cxf.databinding.DataBinding; +import org.apache.cxf.databinding.DataWriter; +import org.apache.cxf.frontend.FaultInfoException; +import org.apache.cxf.message.Message; +import org.apache.cxf.phase.AbstractPhaseInterceptor; +import org.apache.cxf.phase.Phase; +import org.apache.cxf.service.Service; +import org.apache.cxf.service.model.BindingFaultInfo; +import org.apache.cxf.service.model.BindingOperationInfo; +import org.apache.cxf.service.model.FaultInfo; +import org.apache.cxf.service.model.MessagePartInfo; +import org.apache.cxf.staxutils.W3CDOMStreamWriter; + +public class FaultOutInterceptor extends AbstractPhaseInterceptor { + private static final ResourceBundle BUNDLE = BundleUtils.getBundle(FaultOutInterceptor.class); + + public FaultOutInterceptor() { + super(Phase.PRE_PROTOCOL); + } + + public void handleMessage(Message message) throws Fault { + Fault f = (Fault)message.getContent(Exception.class); + + Throwable cause = f.getCause(); + BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class); + FaultInfo fi = getFaultForClass(bop, cause.getClass()); + + if (cause instanceof Exception && fi != null) { + Exception ex = (Exception)cause; + Object bean = getFaultBean(cause, fi, message); + Service service = message.getExchange().get(Service.class); + + MessagePartInfo part = fi.getMessageParts().iterator().next(); + DataBinding db = service.getDataBinding(); + + if (isDOMSupported(db)) { + DataWriter writer = db.createWriter(Node.class); + + writer.write(bean, part, f.getOrCreateDetail()); + } else { + XMLStreamWriter xsw = new W3CDOMStreamWriter(f.getOrCreateDetail()); + + DataWriter writer = db.createWriter(XMLStreamWriter.class); + + writer.write(bean, part, xsw); + } + + f.setMessage(ex.getMessage()); + } + } + + private boolean isDOMSupported(DataBinding db) { + boolean supportsDOM = false; + for (Class c : db.getSupportedWriterFormats()) { + if (c.equals(Node.class)) { + supportsDOM = true; + } + } + return supportsDOM; + } + + protected Object getFaultBean(Throwable cause, FaultInfo faultPart, Message message) { + if (FaultInfoException.class.isAssignableFrom(cause.getClass())) { + try { + Method method = cause.getClass().getMethod("getFaultInfo", new Class[0]); + return method.invoke(cause, new Object[0]); + } catch (InvocationTargetException e) { + throw new Fault(new org.apache.cxf.common.i18n.Message("INVOKE_FAULT_INFO", BUNDLE), e); + } catch (NoSuchMethodException e) { + throw new Fault(new org.apache.cxf.common.i18n.Message("NO_FAULT_INFO_METHOD", BUNDLE), e); + } catch (Exception e) { + throw new Fault(new org.apache.cxf.common.i18n.Message("NO_ACCCESS_FAULT_INFO", BUNDLE), e); + } + } + return cause; + } + + /** + * Find the correct Fault part for a particular exception. + * + * @param op + * @param class1 + * @return + */ + public FaultInfo getFaultForClass(BindingOperationInfo op, Class class1) { + for (BindingFaultInfo bfi : op.getFaults()) { + + FaultInfo faultInfo = bfi.getFaultInfo(); + Class c = (Class)faultInfo.getProperty(Class.class.getName()); + if (c.isAssignableFrom(class1)) { + return faultInfo; + } + } + + return null; + } +} Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FaultOutInterceptor.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties (original) +++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/Messages.properties Thu Jul 19 13:47:36 2007 @@ -30,3 +30,6 @@ NO_PART_FOUND=Message part {0} was not recognized. ORDERED_PARAM_REQUIRED=Parameter should be ordered in the following sequence: {0} WRITE_ATTACHMENTS=Could not write attachments. +INVOKE_FAULT_INFO=Couldn't invoke getFaultInfo method. +NO_FAULT_INFO_METHOD=Custom faults need a getFaultInfo method. +NO_ACCCESS_FAULT_INFO=Couldn't access getFaultInfo method. \ No newline at end of file Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/Context.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/Context.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/Context.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/Context.java Thu Jul 19 13:47:36 2007 @@ -23,6 +23,7 @@ import java.util.List; import org.apache.cxf.aegis.type.TypeMapping; +import org.apache.cxf.interceptor.Fault; import org.apache.cxf.message.Attachment; /** @@ -37,6 +38,7 @@ private boolean writeXsiTypes; private boolean readXsiTypes = true; private List overrideTypes; + private Fault fault; public Context() { } @@ -80,5 +82,14 @@ public void setOverrideTypes(List overrideTypes) { this.overrideTypes = overrideTypes; } + + public void setFault(Fault fault) { + this.fault = fault; + } + + public Fault getFault() { + return fault; + } + } Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java Thu Jul 19 13:47:36 2007 @@ -31,8 +31,6 @@ import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; -import org.w3c.dom.Node; - import org.apache.cxf.aegis.DatabindingException; import org.apache.cxf.aegis.type.DefaultTypeMappingRegistry; import org.apache.cxf.aegis.type.Type; @@ -113,11 +111,11 @@ } public Class[] getSupportedReaderFormats() { - return new Class[] {XMLStreamReader.class, Node.class}; + return new Class[] {XMLStreamReader.class}; } public Class[] getSupportedWriterFormats() { - return new Class[] {XMLStreamWriter.class, Node.class}; + return new Class[] {XMLStreamWriter.class}; } public TypeMappingRegistry getTypeMappingRegistry() { @@ -214,7 +212,8 @@ } protected void initializeMessage(Service s, TypeMapping serviceTM, - AbstractMessageContainer container, int partType, Set deps) { + AbstractMessageContainer container, + int partType, Set deps) { for (Iterator itr = container.getMessageParts().iterator(); itr.hasNext();) { MessagePartInfo part = (MessagePartInfo)itr.next(); @@ -231,12 +230,17 @@ // QName elName = getSuggestedName(service, op, param) deps.add(type); - Set typeDeps = type.getDependencies(); - if (typeDeps != null) { - for (Type t : typeDeps) { - if (!deps.contains(t)) { - deps.add(t); - } + addDependencies(deps, type); + } + } + + private void addDependencies(Set deps, Type type) { + Set typeDeps = type.getDependencies(); + if (typeDeps != null) { + for (Type t : typeDeps) { + if (!deps.contains(t)) { + deps.add(t); + addDependencies(deps, t); } } } Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/XMLStreamDataReader.java Thu Jul 19 13:47:36 2007 @@ -19,6 +19,8 @@ package org.apache.cxf.aegis.databinding; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.logging.Logger; import javax.xml.namespace.QName; @@ -44,6 +46,8 @@ private AegisDatabinding databinding; private Context context = new Context(); + + private Map properties; public XMLStreamDataReader(AegisDatabinding databinding) { this.databinding = databinding; @@ -61,6 +65,7 @@ // I don't think this is the right type mapping context.setTypeMapping(type.getTypeMapping()); context.setOverrideTypes(CastUtils.cast(databinding.getOverrideTypes(), String.class)); + context.setFault((Fault) getProperty(DataReader.FAULT)); Object val = databinding.getService().get(AegisDatabinding.READ_XSI_TYPE_KEY); if ("false".equals(val) || Boolean.FALSE.equals(val)) { context.setReadXsiTypes(false); @@ -79,6 +84,13 @@ } } + public Object getProperty(String key) { + if (properties == null) { + return null; + } + return properties.get(key); + } + public Object read(QName name, XMLStreamReader input, Class type) { // TODO Auto-generated method stub return null; @@ -94,8 +106,11 @@ } public void setProperty(String prop, Object value) { - // TODO Auto-generated method stub - + if (properties == null) { + properties = new HashMap(); + } + + properties.put(prop, value); } public void setSchema(Schema s) { Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/BeanType.java Thu Jul 19 13:47:36 2007 @@ -19,6 +19,8 @@ package org.apache.cxf.aegis.type.basic; import java.beans.PropertyDescriptor; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Proxy; @@ -38,6 +40,7 @@ import org.apache.cxf.aegis.xml.MessageReader; import org.apache.cxf.aegis.xml.MessageWriter; import org.apache.cxf.common.classloader.ClassLoaderUtils; +import org.apache.cxf.interceptor.Fault; import org.jdom.Attribute; import org.jdom.Element; @@ -52,8 +55,7 @@ private boolean isInterface; - // - // private boolean isException = false; + private boolean isException; public BeanType() { } @@ -61,7 +63,12 @@ public BeanType(BeanTypeInfo info) { this.info = info; this.typeClass = info.getTypeClass(); + initTypeClass(); + } + + private void initTypeClass() { this.isInterface = typeClass.isInterface(); + isException = Exception.class.isAssignableFrom(typeClass); } /* @@ -97,9 +104,8 @@ + " for class " + clazz.getName()); } } - // } else if (isException) { - // object = createFromFault(context); - // } + } else if (isException) { + object = createFromFault(context); } else { object = clazz.newInstance(); } @@ -131,8 +137,6 @@ if (parent != null) { info = parent.getTypeInfo(); defaultType = info.getType(name); - } else { - defaultType = null; } Type type = TypeUtil.getReadType(childReader.getXMLStreamReader(), context, defaultType); @@ -180,9 +184,43 @@ throw new DatabindingException("Illegal access. " + e.getMessage(), e); } catch (IllegalArgumentException e) { throw new DatabindingException("Illegal argument. " + e.getMessage(), e); + } catch (InvocationTargetException e) { + throw new DatabindingException("Could not create class: " + e.getMessage(), e); } } + /** + * If the class is an exception, this will try and instantiate it with + * information from the XFireFault (if it exists). + */ + protected Object createFromFault(Context context) + throws SecurityException, InstantiationException, + IllegalAccessException, IllegalArgumentException, InvocationTargetException { + Class clazz = getTypeClass(); + Constructor ctr; + Object o; + + Fault fault = context.getFault(); + + try { + ctr = clazz.getConstructor(new Class[] {String.class, Throwable.class}); + o = ctr.newInstance(new Object[] {fault.getMessage(), fault}); + } catch (NoSuchMethodException e) { + try { + ctr = clazz.getConstructor(new Class[] {String.class, Exception.class}); + o = ctr.newInstance(new Object[] {fault.getMessage(), fault}); + } catch (NoSuchMethodException e1) { + try { + ctr = clazz.getConstructor(new Class[] {String.class}); + o = ctr.newInstance(new Object[] {fault.getMessage()}); + } catch (NoSuchMethodException e2) { + return clazz.newInstance(); + } + } + } + return o; + } + /** * Write the specified property to a field. */ @@ -243,7 +281,8 @@ BeanTypeInfo inf = getTypeInfo(); - if (getSuperType() != null) { + if (object.getClass() == getTypeClass() + && context.isWriteXsiTypes()) { writer.writeXsiType(getSchemaType()); } @@ -282,8 +321,8 @@ } Object value = readProperty(object, name); - Type type = getType(inf, name); - type = TypeUtil.getWriteType(context, value, type); + Type defaultType = getType(inf, name); + Type type = TypeUtil.getWriteType(context, value, defaultType); MessageWriter cwriter; // Write the value if it is not null. @@ -515,8 +554,7 @@ public void setTypeClass(Class typeClass) { super.setTypeClass(typeClass); - isInterface = typeClass.isInterface(); - // isException = Exception.class.isAssignableFrom(typeClass); + initTypeClass(); } /** Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ObjectType.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ObjectType.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ObjectType.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/type/basic/ObjectType.java Thu Jul 19 13:47:36 2007 @@ -118,6 +118,10 @@ type = tm.getType(getSchemaType()); } + if (type == this) { + throw new DatabindingException("Could not determine how to read type: " + typeQName); + } + if (type == null && readToDocument) { type = getTypeMapping().getType(Document.class); } Modified: incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementReader.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementReader.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementReader.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/xml/stax/ElementReader.java Thu Jul 19 13:47:36 2007 @@ -126,8 +126,10 @@ try { value = root.getElementText(); - while (checkHasMoreChildReaders()) { - //TODO - busy wait + hasCheckedChildren = true; + hasChildren = false; + if (root.hasNext()) { + root.next(); } } catch (XMLStreamException e) { throw new DatabindingException("Could not read XML stream.", e); @@ -170,7 +172,7 @@ } break; case XMLStreamReader.END_ELEMENT: - if (root.getDepth() <= depth + 1) { + if (root.getDepth() < depth) { hasCheckedChildren = true; hasChildren = false; Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml Thu Jul 19 13:47:36 2007 @@ -0,0 +1,4 @@ + + + + \ No newline at end of file Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.aegis.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java Thu Jul 19 13:47:36 2007 @@ -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.aegis.type.missing; + +import java.io.Serializable; + +public class Inner implements Serializable { + /** + * + */ + private static final long serialVersionUID = -1009032817440459241L; + + private int script; + private int scheme; + private String transliteration; + + /** + * @return the scheme + */ + public int getScheme() { + return scheme; + } + + /** + * @param scheme the scheme to set + */ + public void setScheme(int scheme) { + this.scheme = scheme; + } + + /** + * @return the script + */ + public int getScript() { + return script; + } + + /** + * @param script the script to set + */ + public void setScript(int script) { + this.script = script; + } + + /** + * @return the transliteration + */ + public String getTransliteration() { + return transliteration; + } + + /** + * @param transliteration the transliteration to set + */ + public void setTransliteration(String transliteration) { + this.transliteration = transliteration; + } + +} Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Inner.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java Thu Jul 19 13:47:36 2007 @@ -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.aegis.type.missing; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService(name = "MissingType", targetNamespace = "urn:org:apache:cxf:aegis:type:missing") +public interface MissingType { + @WebMethod + void addName(Outer outer); + +} Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingType.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,34 @@ +/** + * 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.aegis.type.missing; + +import javax.jws.WebMethod; +import javax.jws.WebService; + +@WebService(serviceName = "MissingType", + endpointInterface = "org.apache.cxf.aegis.type.missing.MissingType", + targetNamespace = "urn:org:apache:cxf:aegis:type:missing") +public class MissingTypeImpl implements MissingType { + + @WebMethod + public void addName(Outer outer) { + } + +} Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,48 @@ +/** + * 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.aegis.type.missing; + +import org.w3c.dom.Document; + +import org.apache.cxf.aegis.AbstractAegisTest; +import org.apache.cxf.endpoint.Server; +import org.apache.cxf.frontend.ClientProxyFactoryBean; +import org.apache.cxf.service.Service; +import org.apache.cxf.service.invoker.BeanInvoker; +import org.junit.Test; + +public class MissingTypeWSDLTest extends AbstractAegisTest { + + @Test + public void testMissingTransliteration() throws Exception { + Server server = createService(MissingType.class, null); + Service service = server.getEndpoint().getService(); + service.setInvoker(new BeanInvoker(new MissingTypeImpl())); + ClientProxyFactoryBean proxyFac = new ClientProxyFactoryBean(); + proxyFac.setAddress("local://MissingType"); + proxyFac.setBus(getBus()); + setupAegis(proxyFac.getClientFactoryBean()); + + Document wsdl = getWSDLDocument("MissingType"); + assertValid("/wsdl:definitions/wsdl:types" + + "/xsd:schema[@targetNamespace='urn:org:apache:cxf:aegis:type:missing']" + + "/xsd:complexType[@name=\"Inner\"]", wsdl); + } + +} Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/MissingTypeWSDLTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml Thu Jul 19 13:47:36 2007 @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.aegis.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java Thu Jul 19 13:47:36 2007 @@ -0,0 +1,207 @@ +/** + * 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.aegis.type.missing; + +import java.io.Serializable; + +/** + * A Outer, for purposes of matching and indexing. + */ +public class Outer implements Serializable { + + // Note that the accessors in here don't return null pointers for strings. + // This improves the behavior of web services that return examples of this + // object. + + /** + * + */ + private static final long serialVersionUID = -2435297692897827392L; + /** + * The name string itself. + */ + String data; + /** + * A unique ID for the name. Often a key from some other database. + */ + String uid; + /** + * A flag indicating that this name is the primary name of it's entity. + */ + boolean primary; + + /** + * The type of name in the taxonomy of entity types. + * + * @see com.basistech.rlp.RLPNEConstants for constants for this field. + */ + int entityType; + + /** + * The unique identifier of the entity containing this name, or none. + * + * @see Entity + */ + String entityUID; + + /** + * In some environments, names store additional data. + */ + String extra; + + /** + * Any pre-computed inners for the name. + * + * @@uml.property name="inners" + * @@uml.associationEnd multiplicity="(0 -1)" + */ + Inner[] inners; + + /** + * Construct an empty name object. + */ + public Outer() { + extra = ""; + } + + /** + * @return arbitrary data stored with this name. + */ + public String getExtra() { + return extra == null ? "" : extra; + } + + /** + * Set arbitrary data stored with this name. + * + * @param extra the extra to set + */ + public void setExtra(String extra) { + this.extra = extra; + } + + /** + * Set a unique ID for this name. This API does not check or enforce + * uniqueness. + * + * @param uid + */ + public void setUID(String auid) { + this.uid = auid; + } + + /** + * @return the unique ID for this name. + */ + public String getUID() { + return uid; + } + + /** + * Set the textual content of the name. This call does not automatically set + * any other properties, such as script or language. + * + * @param data the data to set. + */ + public void setData(String data) { + this.data = data; + } + + /** + * @return the textual content of the name. + */ + public String getData() { + return data; + } + + /** + * Set the 'named entity' type of this name. + * {@link com.basistech.rlp.RLPNEConstants} for possible values. This value + * influences the interpretating and matching of the name. Use the value + * {@link com.basistech.rlp.RLPNEConstants#NE_TYPE_NONE} if there is no type + * available. + * + * @param entityType + */ + public void setEntityType(int entityType) { + this.entityType = entityType; + } + + /** + * @return the 'named entity' type of this name. + */ + public int getEntityType() { + return entityType; + } + + /** + * Set an entity UID for this name. Entities group multiple names for a + * single real-world item. All the names of a single entity are connected + * via their entity unique ID. + * + * @param entityUID the UID. + */ + public void setEntityUID(String entityUID) { + this.entityUID = entityUID; + } + + /** + * @return the entity unique ID. + */ + public String getEntityUID() { + return entityUID; + } + + + + /** + * Set the 'primary' flag for this name. If names are grouped by entities + * {@link #setEntityUID(String)}, one of the names of an entity may be + * marked primary. This API does not check that only one name is marked. + * + * @param primary the primary flag. + */ + public void setPrimary(boolean primary) { + this.primary = primary; + } + + /** + * @return the primary flag. + */ + public boolean isPrimary() { + return primary; + } + + /** + * Set pre-calculated inners for this name. + * + * @param inners the inners. + */ + public void setTransliterations(Inner[] transliterations) { + this.inners = transliterations; + } + + /** + * @return pre-calculated inners for this name. + */ + public Inner[] getTransliterations() { + return inners; + } + +} Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/Outer.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html?view=auto&rev=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html (added) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html Thu Jul 19 13:47:36 2007 @@ -0,0 +1,6 @@ + + +

A test case in which a type was not added to the WSDL at all. +

+ + \ No newline at end of file Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html ------------------------------------------------------------------------------ svn:executable = * Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/missing/package.html ------------------------------------------------------------------------------ svn:mime-type = text/html Modified: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ExceptionInheritanceTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ExceptionInheritanceTest.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ExceptionInheritanceTest.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ExceptionInheritanceTest.java Thu Jul 19 13:47:36 2007 @@ -18,49 +18,72 @@ */ package org.codehaus.xfire.aegis.inheritance; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.xml.namespace.QName; + import org.apache.cxf.aegis.AbstractAegisTest; +import org.apache.cxf.aegis.databinding.AegisDatabinding; +import org.apache.cxf.aegis.services.SimpleBean; +import org.apache.cxf.endpoint.Server; +import org.apache.cxf.feature.LoggingFeature; +import org.apache.cxf.frontend.ClientProxyFactoryBean; +import org.apache.cxf.frontend.ServerFactoryBean; +import org.apache.cxf.service.invoker.BeanInvoker; +import org.codehaus.xfire.aegis.inheritance.ws1.WS1; +import org.codehaus.xfire.aegis.inheritance.ws1.WS1ExtendedException; +import org.codehaus.xfire.aegis.inheritance.ws1.impl.WS1Impl; import org.junit.Test; public class ExceptionInheritanceTest extends AbstractAegisTest { - // private Service service; - // - // public void setUp() throws Exception - // { - // super.setUp(); - // - // HashMap props = new HashMap(); - // props.put(AegisBindingProvider.WRITE_XSI_TYPE_KEY, Boolean.TRUE); - // ArrayList l = new ArrayList(); - // l.add(SimpleBean.class.getName()); - // l.add(WS1ExtendedException.class.getName()); - // - // props.put(AegisBindingProvider.OVERRIDE_TYPES_KEY, l); - // - // createService(WS1.class, null); - // - // service = getServiceFactory().create(WS1.class, props); - // service.setInvoker(new BeanInvoker(new WS1Impl())); - // getServiceRegistry().register(service); - // } - // - // public void testClient() throws Exception - // { - // WS1 client = (WS1) new XFireProxyFactory(getXFire()).create(service, - // "xfire.local://WS1"); - // - // try - // { - // client.throwException(true); - // } - // catch (WS1ExtendedException ex) - // { - // Object sb = ex.getSimpleBean(); - // assertTrue(sb instanceof SimpleBean); - // } - // } + private WS1 client; + private Map props; + + public void setUp() throws Exception { + super.setUp(); - @Test - public void testNothing() { + props = new HashMap(); + props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, "true"); + + List l = new ArrayList(); + l.add(SimpleBean.class.getName()); + l.add(WS1ExtendedException.class.getName()); + + props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l); + + ClientProxyFactoryBean pf = new ClientProxyFactoryBean(); + setupAegis(pf.getClientFactoryBean()); + pf.setServiceClass(WS1.class); + pf.getServiceFactory().setProperties(props); + pf.setAddress("local://WS1"); + pf.setProperties(props); + + client = (WS1) pf.create(); + Server server = createService(WS1.class, "WS1", null); + new LoggingFeature().initialize(server, null); + server.getEndpoint().getService().setInvoker(new BeanInvoker(new WS1Impl())); } + + @Override + protected ServerFactoryBean createServiceFactory(Class serviceClass, String address, QName name) { + ServerFactoryBean sf = super.createServiceFactory(serviceClass, address, name); + sf.getServiceFactory().setProperties(props); + return sf; + } + + @Test + public void testClient() throws Exception { + try { + client.throwException(true); + fail("No exception was thrown!"); + } catch (WS1ExtendedException ex) { + Object sb = ex.getSimpleBean(); + assertTrue(sb instanceof SimpleBean); + } + } + } Modified: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1Exception.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1Exception.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1Exception.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1Exception.java Thu Jul 19 13:47:36 2007 @@ -24,8 +24,8 @@ * @author xfournet */ public class WS1Exception extends Exception { - private final int errorCode; - private final Object simpleBean; + private int errorCode; + private Object simpleBean; public WS1Exception() { simpleBean = null; @@ -47,6 +47,14 @@ super(message); errorCode = errorCode1; simpleBean = bean; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public void setSimpleBean(Object simpleBean) { + this.simpleBean = simpleBean; } public int getErrorCode() { Modified: incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1ExtendedException.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1ExtendedException.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1ExtendedException.java (original) +++ incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/codehaus/xfire/aegis/inheritance/ws1/WS1ExtendedException.java Thu Jul 19 13:47:36 2007 @@ -24,7 +24,8 @@ * @author xfournet */ public class WS1ExtendedException extends WS1Exception { - private final int extendedCode; + + private int extendedCode; public WS1ExtendedException() { extendedCode = 0; @@ -40,6 +41,10 @@ int extendedCode, Object object) { super(message, errorCode1, object); + this.extendedCode = extendedCode; + } + + public void setExtendedCode(int extendedCode) { this.extendedCode = extendedCode; } Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java (original) +++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBSchemaInitializer.java Thu Jul 19 13:47:36 2007 @@ -131,6 +131,11 @@ } JaxBeanInfo beanInfo = context.getBeanInfo(clazz); if (beanInfo == null) { + if (Exception.class.isAssignableFrom(clazz)) { + QName name = (QName)part.getMessageInfo().getProperty("elementName"); + part.setElementQName(name); + buildExceptionType(part, clazz); + } return; } @@ -212,7 +217,7 @@ return; } } - } + } } Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java Thu Jul 19 13:47:36 2007 @@ -28,12 +28,10 @@ import org.apache.cxf.binding.xml.XMLBinding; import org.apache.cxf.endpoint.EndpointException; import org.apache.cxf.endpoint.EndpointImpl; -import org.apache.cxf.interceptor.ClientFaultConverter; import org.apache.cxf.interceptor.Interceptor; import org.apache.cxf.jaxws.binding.BindingImpl; import org.apache.cxf.jaxws.binding.http.HTTPBindingImpl; import org.apache.cxf.jaxws.binding.soap.SOAPBindingImpl; -//import org.apache.cxf.jaxws.handler.StreamHandlerInterceptor; import org.apache.cxf.jaxws.handler.logical.DispatchLogicalHandlerInterceptor; import org.apache.cxf.jaxws.handler.logical.LogicalHandlerFaultInInterceptor; import org.apache.cxf.jaxws.handler.logical.LogicalHandlerFaultOutInterceptor; @@ -122,7 +120,6 @@ //Inbound fault chain List inFault = super.getInFaultInterceptors(); - inFault.add(new ClientFaultConverter()); inFault.add(new LogicalHandlerFaultInInterceptor(jaxwsBinding)); if (getBinding() instanceof SoapBinding) { inFault.add(new SOAPHandlerFaultInInterceptor(jaxwsBinding)); Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java (original) +++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceFactoryBean.java Thu Jul 19 13:47:36 2007 @@ -119,8 +119,6 @@ protected void initializeDefaultInterceptors() { super.initializeDefaultInterceptors(); - getService().getOutFaultInterceptors().add(new WebFaultOutInterceptor()); - if (implInfo.isWebServiceProvider()) { Class type = implInfo.getProviderParameterType(); Mode mode = implInfo.getServiceMode(); @@ -128,6 +126,11 @@ getService().getInInterceptors().add(new DispatchInDatabindingInterceptor(type, mode)); getService().getOutInterceptors().add(new DispatchOutDatabindingInterceptor(mode)); } + } + + @Override + protected void initializeFaultInterceptors() { + getService().getOutFaultInterceptors().add(new WebFaultOutInterceptor()); } @Override Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java (original) +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/DefaultServiceConfiguration.java Thu Jul 19 13:47:36 2007 @@ -72,7 +72,7 @@ @Override public QName getInParameterName(OperationInfo op, Method method, int paramNumber) { return new QName(op.getName().getNamespaceURI(), - getDefaultLocalName(op, method, paramNumber, "arg" + paramNumber)); + getDefaultLocalName(op, method, paramNumber, "arg")); } @Override Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original) +++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Thu Jul 19 13:47:36 2007 @@ -49,6 +49,7 @@ import org.apache.cxf.frontend.SimpleMethodDispatcher; import org.apache.cxf.helpers.MethodComparator; import org.apache.cxf.interceptor.Fault; +import org.apache.cxf.interceptor.FaultOutInterceptor; import org.apache.cxf.jaxb.JAXBDataBinding; import org.apache.cxf.service.Service; import org.apache.cxf.service.ServiceImpl; @@ -818,15 +819,7 @@ initializeFaults(intf, op, method); } - - protected void createFaultWrappedMessageParts(FaultInfo fault) { - MessagePartInfo part = fault.addMessagePart("fault"); - part.setElement(true); - if (part.getElementQName() == null) { - part.setElementQName(fault.getFaultName()); - } - } - + protected void createInputWrappedMessageParts(OperationInfo op, Method method, MessageInfo inMsg) { MessagePartInfo part = inMsg.addMessagePart("parameters"); part.setElement(true); @@ -1092,6 +1085,16 @@ } } + protected void initializeDefaultInterceptors() { + super.initializeDefaultInterceptors(); + + initializeFaultInterceptors(); + } + + protected void initializeFaultInterceptors() { + getService().getOutFaultInterceptors().add(new FaultOutInterceptor()); + } + protected FaultInfo addFault(final InterfaceInfo service, final OperationInfo op, Class exClass) { Class beanClass = getBeanClass(exClass); if (beanClass == null) { @@ -1104,6 +1107,7 @@ fi.setProperty(Class.class.getName(), exClass); fi.setProperty("elementName", faultName); MessagePartInfo mpi = fi.addMessagePart(new QName(faultName.getNamespaceURI(), "fault")); + mpi.setElementQName(faultName); mpi.setTypeClass(beanClass); return fi; } Modified: incubator/cxf/trunk/tools/javato/test/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/test/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?view=diff&rev=557765&r1=557764&r2=557765 ============================================================================== --- incubator/cxf/trunk/tools/javato/test/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java (original) +++ incubator/cxf/trunk/tools/javato/test/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java Thu Jul 19 13:47:36 2007 @@ -37,6 +37,7 @@ import org.apache.cxf.wsdl.WSDLConstants; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; public class JavaToProcessorTest extends ProcessorTestBase {