Raymond,
                 hello again, I follow your advice  " I suggest that you
open a JIRA and attach the test case there so that we can debug.". I opened
a JIRA (link <http://issues.apache.org/jira/browse/TUSCANY-3067>). This is
my first bug there. Can you tell me if I've posted enough information?
Thanks,
               Sebastián Groh

2009/5/26 Sebastián Groh <[email protected]>:
> Hi Raymond,
>                     thanks for your answer. I debug my application and sca
> source.
> Next I will try to explain the invocation chain:
>
> When JDKInvocationHandler calls method invoke(InvocationChain chain,
> Object[] args, RuntimeWire wire, EndpointReference source)
>
> line 288: Message resp = headInvoker.invoke(msg); // invocation occurs
> without errors
> line 289: Object body = resp.getBody(); // Returns an
> org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl object
>
> It seems that body was not instantiated with the correct class.
>
>
> Cite:
>         " I suggest that you open a JIRA and attach the test case there so
> that we can debug."
> I'll try this, i never did that before. What I need to post there?
>
> For the moment I'll publish my problem here.
>
> My XSD file is:
> <?xml version="1.0" encoding="UTF-8"?>
> <schema xmlns="http://www.w3.org/2001/XMLSchema";
>
>  targetNamespace="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";
>
>  xmlns:tns="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";
>    elementFormDefault="qualified">
>    <complexType name="Practice">
>        <sequence>
>            <element name="name" type="string" />
>        </sequence>
>    </complexType>
>    <complexType name="Laboratory">
>        <sequence>
>            <element name="name" type="string" />
>            <element name="practices" type="tns:Practice"
> maxOccurs="unbounded"/>
>         </sequence>
>    </complexType>
> </schema>
>
> Composite file:
> <?xml version="1.0" encoding="UTF-8"?>
> <sca:composite
> xmlns:federation="http://eclipse.org/SCAExample1/src/resources/federation";
> xmlns:sca="http://www.osoa.org/xmlns/sca/1.0";
> name="clinicalLaboratory"
> targetNamespace="
http://eclipse.org/SCAExample1/src/resources/clinicalLaboratory";>
> <sca:component name="BiochemicalCircleComponent">
>    <sca:implementation.java
class="services.bcircle.BiochemicalCircleImpl"/>
>    <sca:service name="BiochemicalCircle">
>     <sca:interface.java interface="services.bcircle.BiochemicalCircle"/>
>     <sca:binding.ws uri="http://localhost:8080/SCA1/MyServiceComponent"/>
>    </sca:service>
>  </sca:component>
>  <sca:service name="BiochemicalCircle"
> promote="BiochemicalCircleComponent/BiochemicalCircle"/>
> </sca:composite>
>
> Interface file:
> package services.bcircle;
> import java.util.ArrayList;
> import javax.xml.bind.annotation.XmlType;
> import model.sdo.EntityFactory;
> import org.apache.tuscany.sca.databinding.annotation.DataBinding;
> import org.osoa.sca.annotations.Remotable;
>
> @Remotable
> public interface BiochemicalCircle{
>     void setLaboratory(model.sdo.Laboratory lab);
>     model.sdo.Laboratory getLaboratory(String name);
> }
>
> Interface implementation:
>
> package services.bcircle;
> import model.sdo.EntityFactory;
> import model.sdo.Laboratory;
> import org.osoa.sca.annotations.Service;
>
>
> @Service(BiochemicalCircle.class)
> public class BiochemicalCircleImpl implements BiochemicalCircle{
>    public Laboratory getLaboratory(String name) {
>       Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
>       lab.setName("Main Laboratory");
>       return lab;
>    }
>
>    public void setLaboratory(Laboratory lab) {
>       //sad method
>       System.out.println(lab.getName());
>    }
> }
>
> My Test class:
> package test;
>
> import model.sdo.EntityFactory;
> import model.sdo.Laboratory;
>
> import org.apache.tuscany.sca.host.embedded.SCADomain;
> import services.bcircle.BiochemicalCircle;
> import services.bcircle.BiochemicalCircleImpl;
>
>
> public class Test {
>
>     /**
>      * @param args
>      */
>     public static void main(String[] args) {
>         BiochemicalCircle biochemicalCircl = new BiochemicalCircleImpl();
>         Laboratory lab2 = biochemicalCircl.getLaboratory("Lab2"); //This
> invocation without use SCA works ok.
>
>
>         SCADomain scaDomain =
> SCADomain.newInstance("resources/clinicalLaboratory.composite");
>         BiochemicalCircle biochemicalCircle = scaDomain.getService(
>                 BiochemicalCircle.class, "BiochemicalCircleComponent");
>         Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
>         lab.setName("lab2");
>         biochemicalCircle.setLaboratory(lab); // this invocation works ok
> too
>
>         lab = biochemicalCircle.getLaboratory("Lab2"); // here I have an
> exception posted below.
>
>         //here I wait a moment before close scaDomain
>
>         scaDomain.close();
>
> }
>
> Exception:
> Exception in thread "main" java.lang.ClassCastException:
> org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>     at $Proxy16.getLaboratory(Unknown Source)
>     at test.Test.main(Test.java:28)
>
> Note:
> EntityFactory and sdo objects where created using
> org.apache.tuscany.sdo.generate.XSD2JavaGenerator.
>
> Please, tell me if something is wrong.
> Regards,
>
>                  Sebastián Groh
>
>
>
>
> On Tue, May 26, 2009 at 12:30 PM, Raymond Feng <[email protected]>
wrote:
>> Did you check the response message from the WS? It might be the case that
>> XML payload is not conforming to the XSD which is used to generate the
>> SDO.
>>
>> I suggest that you open a JIRA and attach the test case there so that we
>> can
>> debug.
>>
>> Thanks,
>> Raymond
>>
>> --------------------------------------------------
>> From: "Sebastián Groh" <[email protected]>
>> Sent: Sunday, May 24, 2009 11:06 PM
>> To: <[email protected]>
>> Subject: Re: WS bindings and SDO
>>
>>> Hello,
>>>
>>>         Raymond I've posted my interface in my last mail, after that
>>> I did some tests.
>>> When I send a SDO Object, all runs ok, but unfortunately for all SCA
>>> users, return an SDO object is a problem even if HelperContext is
>>> used.
>>>
>>> For example:
>>> 1.  SCADomain scaDomain =
>>>              SCADomain.newInstance("clinicalLaboratory.composite");
>>> 2.  BiochemicalCircle service =
>>>
>>>
>>>
scaDomain.getService(BiochemicalCircle.class,"BiochemicalCircleComponent");
>>> 3. Laboratory lab = EntityFactory.INSTANCE.createLaboratory();
>>> 4. lab.setName("lab2");
>>> 5. biochemicalCircle.setLaboratory(lab);
>>> 6. Laboratory posibleLab = (Laboratory) service.getLaboratory("Lab2");
>>>
>>> Line 5 works ok, SDO Laboratory object was send and name property was
>>> read ok on server side.
>>> Line 6 fails, I'm having always the same error:
>>>
>>>  java.lang.ClassCastException:
>>>  org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>>>  at $Proxy18.getLaboratory(Unknown Source)
>>>
>>> Thanks,
>>> Best Regards,
>>>
>>>                          Sebastián Groh
>>>
>>>
>>>
>>> 2009/5/22 Sebastián Groh <[email protected]>:
>>>>
>>>> Hello Raymond,
>>>>
>>>> My Interface is quite simple:
>>>>
>>>> package services.bcircle;
>>>>
>>>> import java.util.ArrayList;
>>>>
>>>> import org.osoa.sca.annotations.Remotable;
>>>>
>>>> @Remotable
>>>> public interface BiochemicalCircle{
>>>>
>>>>
>>>>       ArrayList<String> getLaboratoriesNames();
>>>>
>>>>       model.sdo.Laboratory getLaboratory(String name);
>>>>
>>>> }
>>>>
>>>> I think that my problem is related with SDO HelperContext but I'm
>>>> confused.
>>>>
>>>> Thanks,
>>>>             Sebastián
>>>>
>>>>
>>>> On Fri, May 22, 2009 at 7:50 PM, Raymond Feng <[email protected]>
>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> It seems that the SDO HelperContext is not correctly populated by
>>>>> Tuscany
>>>>> based on the introspection of the Java interface that references the
>>>>> SDO
>>>>> types. Can you post the BiochemicalCircle interface?
>>>>>
>>>>> Thanks,
>>>>> Raymond
>>>>>
>>>>> --------------------------------------------------
>>>>> From: "Sebastián Groh" <[email protected]>
>>>>> Sent: Friday, May 22, 2009 2:47 PM
>>>>> To: <[email protected]>
>>>>> Subject: Re: WS bindings and SDO
>>>>>
>>>>>> Hello Again,
>>>>>>
>>>>>> I'm getting the same error using ws binding.
>>>>>> If I try:
>>>>>>             SCADomain scaDomain =
>>>>>> SCADomain.newInstance("clinicalLaboratory.composite");
>>>>>>             BiochemicalCircle service =
>>>>>>
>>>>>>
>>>>>>
>>>>>>
scaDomain.getService(BiochemicalCircle.class,"BiochemicalCircleComponent");
>>>>>>             Laboratory lab = (Laboratory)
>>>>>> service.getLaboratory("Lab2");
>>>>>>
>>>>>> I have the exception:
>>>>>>     java.lang.ClassCastException:
>>>>>>    org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>>>>>>    at $Proxy18.getLaboratory(Unknown Source)
>>>>>>
>>>>>> but if I simple do:
>>>>>>
>>>>>>              BiochemicalCircle biochemicalCircle = new
>>>>>> BiochemicalCircleImpl();
>>>>>> Laboratory lab2 = biochemicalCircle.getLaboratory("Lab2");
>>>>>>
>>>>>> All runs ok.
>>>>>>
>>>>>> Invocation to BiochemicalCircle methods that not have SDO parameters
>>>>>> (or return them) works fine even if SCADomain is used.
>>>>>>
>>>>>> Any in this list, know what I should do for solve this problem?
>>>>>>
>>>>>> Thanks,
>>>>>>            Sebastián
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2009/5/21 Sebastián Groh <[email protected]>:
>>>>>>>
>>>>>>> Hello Kevin, Simon,
>>>>>>>
>>>>>>> cite:
>>>>>>>         Is the XSD you generated the SDO from included in your
>>>>>>> contribution?
>>>>>>>
>>>>>>> Yes I'm including the XSD, but how and when should it be used?
>>>>>>> I verified if wsdl generated have included schema types and there
are
>>>>>>> ok. I thought that was enough if the wsdl have schemas included. Is
>>>>>>> this correct?
>>>>>>>
>>>>>>> Simon, you are rigth when you see AnyTypeDataObjectImpl instances is
>>>>>>> becouse "If the ServiceFactory is not registered, the data (from the
>>>>>>> inline schema of the WSDL) are then represented by
>>>>>>> 'org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl' "
>>>>>>>
>>>>>>> What must I do? Use  commonj.sdo.helper.HelperContext or not?
>>>>>>>
>>>>>>>
>>>>>>> Any user in this list have errors like that?
>>>>>>> Thanks for yours answers,
>>>>>>> Regards,
>>>>>>>              Sebastián
>>>>>>>
>>>>>>> On Thu, May 21, 2009 at 6:50 AM, kelvin goodson
>>>>>>> <[email protected]>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> I'm no expert on how SCA uses SDO, but I do understand the SDO side
>>>>>>>> of
>>>>>>>> this, which may help you or someone else get to how to fix this
>>>>>>>> within
>>>>>>>> SCA.  The time that you see instances of AnyTypeDataObjectImpl
>>>>>>>> appearing is when an SDO deserialization operation has no metadata
>>>>>>>> within its operating context to describe an object it is trying to
>>>>>>>> deserialize, so it falls back on a very weak default model of data
>>>>>>>> embodied in the built-in AnyTypedataObject SDO class.
>>>>>>>>
>>>>>>>> Either the SCA infrastructure or you must arrange for the generated
>>>>>>>> SDO factory associated with your Laboratory class to be known to
the
>>>>>>>> relevant instance of SDO's HelperContext class. My feeling is there
>>>>>>>> is
>>>>>>>> most probably a way to influence SCA to do this for you,  but I
>>>>>>>> don't
>>>>>>>> know how.  At the Tuscany SDO API level, the metadata registration
>>>>>>>> is
>>>>>>>> done via the Factory's register(HelperContext scope)  method, so
you
>>>>>>>> could watch for calls to that method on the factory impl.
>>>>>>>>
>>>>>>>> Kelvin.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> 2009/5/21 Simon Laws <[email protected]>:
>>>>>>>>>
>>>>>>>>> 2009/5/21 Sebastián Groh <[email protected]>:
>>>>>>>>>>
>>>>>>>>>> Hello, I'm trying to work with an SCA Composite that use ws
>>>>>>>>>> binding.
>>>>>>>>>> My component definition:
>>>>>>>>>>  <sca:component name="BiochemicalCircleComponent">
>>>>>>>>>>  <sca:implementation.java
>>>>>>>>>> class="services.bcircle.BiochemicalCircleImpl"/>
>>>>>>>>>>  <sca:service name="BiochemicalCircle">
>>>>>>>>>>      <sca:interface.java
>>>>>>>>>> interface="services.bcircle.BiochemicalCircle"/>
>>>>>>>>>>      <sca:binding.ws
>>>>>>>>>> uri="http://localhost:8080/SCA1/MyServiceComponent"/>
>>>>>>>>>>  </sca:service>
>>>>>>>>>>  </sca:component>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> The service retrieve a SDO object (Laboratory) that I generated
>>>>>>>>>> from
>>>>>>>>>> XSD without problems.
>>>>>>>>>> I deployed the project on Apache Tomcat/5.5.27 and I'm using this
>>>>>>>>>> service from a jsp page as follows:
>>>>>>>>>>
>>>>>>>>>> (my includes)
>>>>>>>>>> .
>>>>>>>>>> .
>>>>>>>>>> .
>>>>>>>>>> <% SCADomain scaDomain =
>>>>>>>>>> SCADomain.newInstance("clinicalLaboratory.composite");
>>>>>>>>>>     BiochemicalCircle service =
>>>>>>>>>> scaDomain.getService(BiochemicalCircle.class,
>>>>>>>>>> "BiochemicalCircleComponent");
>>>>>>>>>>
>>>>>>>>>>      Laboratory lab = (Laboratory) service.getLaboratory("Lab2");
>>>>>>>>>> .
>>>>>>>>>> .  (more logic)
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> %>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> In line
>>>>>>>>>>        Laboratory lab = (Laboratory)
>>>>>>>>>> service.getLaboratory("Lab2");
>>>>>>>>>>
>>>>>>>>>> I have the exception:
>>>>>>>>>>      java.lang.ClassCastException:
>>>>>>>>>> org.apache.tuscany.sdo.impl.AnyTypeDataObjectImpl
>>>>>>>>>>      at $Proxy18.getLaboratory(Unknown Source)
>>>>>>>>>>
>>>>>>>>>> I have also tried to use the class
>>>>>>>>>> commonj.sdo.helper.HelperContext
>>>>>>>>>> to
>>>>>>>>>> set a scope for my SDOFactory but I'm having the same exception.
>>>>>>>>>>
>>>>>>>>>> Anyone in this list know to solve this error?
>>>>>>>>>> Regards,
>>>>>>>>>>              Sebastián
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi Sebastien
>>>>>>>>>
>>>>>>>>> Is the XSD you generated the SDO from included in your
>>>>>>>>> contribution?
>>>>>>>>> I'm looking at the 1.x sample helloworld-ws-sdo-webapp and can't
>>>>>>>>> actually see that the SDO types are specified explicitly but the
>>>>>>>>> XSD
>>>>>>>>> used to generate them is included. Any of the SDO experts out
there
>>>>>>>>> know how we should be describing the SDO context in SCA?
>>>>>>>>>
>>>>>>>>> Simon
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>>
>
>

Reply via email to