[ https://issues.apache.org/jira/browse/TUSCANY-2059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12574789#action_12574789 ]
Simon Nash commented on TUSCANY-2059: ------------------------------------- The processNoArgAndVoidReturnMethods() method in Java2WSDLHelper has code to fix up the WSDL generated by Axis2 to ensure that the correct two-way and one-way WSDL patterns are in place. There's an itest to verify this is working (see itest/ws-void-args-return). The problem here is that this fixup code has a limitation that is exposed by the particular case of an interface whose methods all have only void arguments and return type. In processNoArgAndVoidReturnMethods() there is code like this: Element schema = null; Document document = null; Types types = definition.getTypes(); if (types != null) { // [1] for (Object ext : types.getExtensibilityElements()) { if (ext instanceof Schema) { Element element = ((Schema)ext).getElement(); if (element.getAttribute("targetNamespace").equals(namespaceURI)) { schema = element; document = schema.getOwnerDocument(); break; } } } } if (document == null) { return; // [2] } .... code to fix up the WSDL follows .... The test for types != null (see [1]) will be false in the case of an interface whose methods all have void arguments and return type, because the WSDL document generated by Axis2 has no schema types. As a result, the "document" variable is null, and the method returns without doing any fixup (see [2]). The fix is to add code for this case to create a new schema element within a DOM document and set it into the WSDL4J Definition as an extensibility element. When I wrote this fixup code, my XML knowledge wasn't sufficient to attempt this, and even now I think it would take me quite some time to figure it out. Would anyone care to make an attempt at adding the necessary code or post some pseudo-code here to point me in the right direction? > Exception when using binding.ws instead of binding.sca. Interface contains > only methods without any in/out parameters and return values > --------------------------------------------------------------------------------------------------------------------------------------- > > Key: TUSCANY-2059 > URL: https://issues.apache.org/jira/browse/TUSCANY-2059 > Project: Tuscany > Issue Type: Bug > Components: Java SCA Core Runtime > Affects Versions: Java-SCA-1.1 > Environment: Windows XP SP2, Intel Core 2 CPU, 2.6, 2GB Ram, jdk > 1.5.0_10 > Reporter: Daniel Stucky > Assignee: Raymond Feng > Attachments: test.zip > > > I have the following Java Interface that works with binding.sca: > public interface Gamma > { > void start(); > void doSomething(); > void stop(); > } > When I use binding.ws (I let Tuscany create the WSDL interfaces > automatically), I get the following exception (see below): > If I add a parameter (e.g. int x) to any of the methods or I replace any > return type void by a type (e.g. int) it works. > Does WSDL not allow services without any In/Out parameters ? > java.lang.reflect.UndeclaredThrowableException > at $Proxy12.getRef(Unknown Source) > at services.AlphaImpl.run(AlphaImpl.java:27) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:105) > at > org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:88) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:249) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:146) > at $Proxy11.run(Unknown Source) > at launch.Launch.main(Launch.java:14) Caused by: > org.apache.tuscany.sca.interfacedef.util.FaultException: An unknown message > label has been encountered: In > at > org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invoke(Axis2BindingInvoker.java:80) > at > org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:74) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:249) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:146) > ... 12 more > I also tried it with version 1.2, the exception changed to this: > org.osoa.sca.ServiceRuntimeException: Target fault type cannot be resolved: > null > at > org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:134) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:267) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:155) > at $Proxy12.getRef(Unknown Source) > at services.AlphaImpl.run(AlphaImpl.java:27) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:109) > at > org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:108) > at > org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61) > at > org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:108) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:267) > at > org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:155) > at $Proxy11.run(Unknown Source) > at launch.Launch.main(Launch.java:14) > Caused by: org.apache.tuscany.sca.interfacedef.util.FaultException: Target > fault type cannot be resolved: null > at > org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invoke(Axis2BindingInvoker.java:97) > at > org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:78) > ... 16 more > Caused by: org.apache.axis2.AxisFault: Target fault type cannot be resolved: > null > at > org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486) > at > org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343) > at > org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389) > at > org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211) > at > org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) > at > org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invokeTarget(Axis2BindingInvoker.java:118) > at > org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker.invoke(Axis2BindingInvoker.java:89) > ... 17 more -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]