Hi Frank,

thanks for you quick and perfect answer, it works great!

Jawad.

Le 5 oct. 2010 à 16:10, Frank Budinsky a écrit :

> Jawad,
> 
> You're right that the first problem was because the types were not 
> defined/registered.
> 
> The XSDHelper.define() method is used to define types that will be 
> implemented using dynamic SDO. If, you want to use static (generated) SDO 
> classes, then you must call the generated Factory.register() method, instead 
> of XSDHelper.define() to define the types.
> 
> Frank.
> 
> Jawad <[email protected]> wrote on 10/05/2010 07:10:25 AM:
> 
> > [image removed] 
> > 
> > Tuscany SDO, static objects and context
> > 
> > Jawad 
> > 
> > to:
> > 
> > user
> > 
> > 10/05/2010 07:12 AM
> > 
> > Please respond to user
> > 
> > Hi everyone!
> > 
> > I'm currently working on the implementation of an SCA component, 
> > exposed and called via SOAP,  and I'm trying to dynamically load an 
> > XML file that contains an instance of an XSD type.
> > I have generated the Java classes associated with this XSD and when 
> > I send SOAP request to Tuscany using such types as parameters, I get
> > the static types associated with the data.
> > 
> > Here is my XML file:
> > <?xml version="1.0" encoding="utf-8"?>
> > <data:compte xmlns:data="http://localhost/testns"; 
> > xsi:type="data:Compte" 
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >     <data:intitule>Test</data:intitule>    
> >     <data:numero>1</data:numero>
> > </data:compte>
> > 
> > I'm using the following code:
> > FileInputStream fis = new FileInputStream("/Development/
> > default_data/file.xml");
> > XMLStreamHelperImpl strHelper = new XMLStreamHelperImpl
> > (org.apache.tuscany.sca.databinding.sdo.SDOContextHelper.getDefaultHelperContext
> > ());
> > XMLDocument doc = XMLHelper.INSTANCE.load(fis);
> > XMLStreamReader reader = strHelper.createXMLStreamReader(doc);
> >                   
> > reader.next();
> > DataObject obj = strHelper.loadObject(reader);
> > 
> > If I execute it I get the following ClassCastException : The feature
> > 'compte's type 'DataObject' does not permit a value of type 'Compte'
> > 
> > I tried to load my XSD using XSDHelper:
> > FileInputStream xsdfis = new FileInputStream("/Development/
> > default_data/Schemas.xsd");
> > XSDHelper.INSTANCE.define(xsdfis, null);
> > 
> > The exception is not raised anymore but I get a DynamicDataObject 
> > and not a static one.
> > 
> > If I correctly understand the way Tuscany SDO works, the first 
> > exception is raised because the TypeHelper of the default context is
> > "empty" (it only contains default types). When I call the 
> > XSDHelper.define method, my schemas are loaded but no link is done 
> > with my generated classes.
> > 
> > How can I solve it ? What is the best way to get the same context asTuscany 
> > ?
> > I thought that I could use 
> > org.apache.tuscany.sca.databinding.sdo.SDOContextHelper.getHelperContext
> > (Operation op) but I cannot figure out how to find the current operation.
> > 
> > Best,
> > Jawad
> 

Reply via email to