I am getting the following error when executing a query in webapp I have
been working on.
All composites load fine in webapp and I also tried out a few empty get /
sets with strings.
However on db access and in returning an ArrayList of Person.
Person is the interface to concrete class PatientImpl. I am passing
ArrayList of
Person.
I put PatientImpl objects in ArrayList of Person.
---------------------------------------------------------
Problem accessing /qmAppSCA01/QueryServlet. Reason:
Pass-by-value is not supported for the given object: java.util.ArrayList
Caused by:
java.lang.IllegalArgumentException: Pass-by-value is not supported for the
given object: java.util.ArrayList
at
org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding.copy(JavaBeansDataBinding.java:132)
at
org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint$LazyDataBinding.copy(DefaultDataBindingExtensionPoint.java:169)
at
org.apache.tuscany.sca.databinding.impl.MediatorImpl.copy(MediatorImpl.java:542)
at
org.apache.tuscany.sca.databinding.impl.MediatorImpl.copyOutput(MediatorImpl.java:615)
at
org.apache.tuscany.sca.binding.sca.provider.SCABindingInvoker.processResponse(SCABindingInvoker.java:120)
at
org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl.invoke(InterceptorAsyncImpl.java:59)
at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:322)
at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:278)
at
org.apache.tuscany.sca.core.invocation.impl.JDKInvocationHandler.invoke(JDKInvocationHandler.java:125)
at
org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.doInvokeSync(AsyncJDKInvocationHandler.java:239)
at
org.apache.tuscany.sca.core.invocation.impl.AsyncJDKInvocationHandler.invoke(AsyncJDKInvocationHandler.java:161)
at $Proxy34.getPatients(Unknown Source)
at
org.rd.qm.impl.QueryControllerImpl.getPatients(QueryControllerImpl.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
...
...
---------------------------------------------------------
When:
QueryControllerImpl in qmController
(QueryControllerComponent/QueryController) is attempting to return the
ArrayList of Persons to
QueryServiceImpl in qmAppSCA01
QueryControllerImpl in qmController being called:
public ArrayList<Person> getPatients(HashMap<String, String> requestMap_) {
String query = queryComposer.getQuery(requestMap_);
ArrayList<Person> patients = queryExecutor.getPatients(query);
return patients;
}
---------------------------------------------------------
By:
QueryServiceImpl from qmAppSCA01:
public ArrayList<Person> getPatients(HashMap<String, String> requestMap_) {
return queryController.getPatients(requestMap_);
}
---------------------------------------------------------
Composte defs for QueryControllerComponent and QueryServiceComponent
---------------------------------------------------------
<component name="QueryControllerComponent">
<implementation.java class="org.rd.qm.impl.QueryControllerImpl"/>
<service name="QueryController">
<interface.java interface="org.rd.qm.QueryController"/>
</service>
<reference name="queryComposer"
target="QueryComposerComponent/QueryComposer">
<interface.java interface="org.rd.qm.QueryComposer"/>
</reference>
<reference name="queryExecutor"
target="QueryExecutorComponent/QueryExecutor">
<interface.java interface="org.rd.qm.QueryExecutor"/>
</reference>
</component>
---------------------------------------------------------
<component name="QueryServiceComponent">
<implementation.java class="org.rd.qm.impl.QueryServiceImpl"/>
<service name="QueryService">
<interface.java interface="org.rd.qm.QueryService" />
</service>
<reference name="queryController"
target="QueryControllerComponent/QueryController">
<interface.java interface="org.rd.qm.QueryController" />
</reference>
</component>
---------------------------------------------------------
Thanks for your help.
monosij