Raymond Feng (JIRA) wrote:
[ https://issues.apache.org/jira/browse/TUSCANY-2275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593441#action_12593441 ]
Raymond Feng commented on TUSCANY-2275:
---------------------------------------
Hi,
I debugged the issue and it turned out an interesting case.
1) When the client side pass 'null' for the service.processBean() method, the
body of soap message becomes:
<ns1:processBean xmlns1="..."/>
It's the wrapper element with empty children.
2) On the receiving side, the empty data get converted into SimpleBean[0] which
is an empty array of SimpleBean.
3) The user code in SimpleServiceImpl.java only tests if the simpleBean==null and
it causes an ArrayOutofBoundException. Adding the test of simpleBean.length>0
fixes the problem and the client runs successfuly.
I would resolve it as a user error. I'm not so sure if we should present the
data as null or [0]. If you can find any spec covering this corner case, I
would be happy to revisit it.
I think the marshalled form should be a wrapper containing a Bean
element with xsi:nil="true", not an empty wrapper. Would this be
unmarshalled as null instead of an empty array?
Simon
Thanks,
Raymond
Problem when with Bean[] and null
---------------------------------
Key: TUSCANY-2275
URL: https://issues.apache.org/jira/browse/TUSCANY-2275
Project: Tuscany
Issue Type: Bug
Components: Java SCA Data Binding Runtime
Affects Versions: Java-SCA-1.2
Environment: Tuscnay 1.2-RC4, WAS
Reporter: Nishant Joshi
Assignee: Raymond Feng
Fix For: Java-SCA-1.2
Attachments: null problem.zip
I have one service, in which i m passgin Bean[]... If i try to pass null instead then it gives exception
-------------------------------------------------------------------------------------------------
Exception in thread "main" 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:286)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:154)
at $Proxy6.processBean(Unknown Source)
at com.client.Client.processBean(Client.java:22)
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.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:286)
at
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:154)
at
org.apache.tuscany.sca.core.invocation.CglibProxyFactory$CglibMethodInterceptor.intercept(CglibProxyFactory.java:149)
at com.client.Client$$EnhancerByCGLIB$$b5aedbbb.processBean(<generated>)
at com.client.Client.main(Client.java:34)
Caused by: org.apache.tuscany.sca.interfacedef.util.FaultException: Array index
out of range: 0
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)
... 15 more
Caused by: org.apache.axis2.AxisFault: Array index out of range: 0
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)
... 16 more
-------------------------------------------------------------------------------------------------
please find the attached sample to reproduce it.
please note that this error was on client side and can be generated using
attached sample...
same works for servcie having bean (not an array of bean)