Hi Frank,

Thanks for the update. FYI, these pages still mention the arrayAccessors option:

http://incubator.apache.org/tuscany/java_sdo_overview.html
http://cwiki.apache.org/TUSCANY/sdo-project-code-structure.html

There should be a warning to avoid this option. We have quite a bit of
code written already that uses this which will need to change. I'd
like to make sure other people don't fall into that scenario.

Thanks,
-Chris

On 5/10/07, Frank Budinsky <[EMAIL PROTECTED]> wrote:
Chris,

The -arrayAccessors option is just some prototype testing in Tuscany, it's
not supported. In fact, it's broken for several reasons these days. Since
we changed to the noEMF generator pattern (i.e., there should be no EMF
dependencies in the generated code), but notice that the getDog() method,
below, is generating code with EMF dependencies (BasicEList). We'll need
to fix that if we decide to keep this option.

Also note that the arrayAccessor pattern is not compliant with the SDO
specification, so for all of these reasons I would recommend not using it.

Frank.

[EMAIL PROTECTED] wrote on 05/10/2007 09:18:24 AM:

> Hi Kelvin,
>
> Thank you for your quick response. I built Tuscany SDO the morning of
> May 9th. I'm using EMF 2.2.3. When I generate the static classes
> against the schema below, I see the following method created in
> PersonTypeImpl:
>
>   public DogType[] getDog()
>   {
>     BasicEList list = (BasicEList)getDogList();
>     if (list.isEmpty()) return DOG_EEMPTY_ARRAY;
>     list.shrink();
>     return (DogType[])list.data();
>   }
>
> The getDogList() in that method is returning a
> FeatureMapUtil$FeatureEList object which can't be cast into a
> BasicEList.
>
> I'm using the -arrayAccessors switch when generating my source. That
> may be the missing piece here. Sorry I didn't include that earlier.
> Here are the commands I use to generate the static SDOs:
>
> set javaExe=C:\ibmsdk1.4.2_sr4-1\bin\java
> set output=.
>
> set sdo_cp=lib\org.eclipse.emf.codegen_2.2.2.v200705020400.jar;
> lib\org.eclipse.emf.codegen.ecore_2.2.2.v200705020400.jar;lib\org.
> eclipse.emf.common_2.2.1.v200705020400.jar;lib\org.eclipse.emf.
> ecore_2.2.3.v200705020400.jar;lib\org.eclipse.emf.ecore.change_2.2.
> 1.v200705020400.jar;lib\org.eclipse.emf.ecore.xmi_2.2.3.
> v200705020400.jar;lib\sdo-api-r2.1-1.0-incubating-SNAPSHOT.jar;
> lib\tuscany-sdo-impl-1.0-incubating-SNAPSHOT.jar;lib\tuscany-sdo-
>
tools-1.0-incubating-SNAPSHOT.jar;lib\org.eclipse.xsd_2.2.3.v200705020400.jar
> set options=-cp %sdo_cp%
> org.apache.tuscany.sdo.generate.XSD2JavaGenerator -arrayAccessors
> -targetDirectory %output%
>
> %javaExe% %options% Person.xsd
>
> Let me know if you still have problems recreating this issue. Thanks,
> -Chris
>
> On 5/10/07, kelvin goodson <[EMAIL PROTECTED]> wrote:
> > Hi  Chris,
> >   the code snippet you supplied doesn't compile against the code that
I
> > generated. Person's dog Property is isMany=true so to add a dog you
need to
> > do person.getDog().add(aDog)
> > Regards, kelvin.
> >
> > On 10/05/07, Chris Mildebrandt <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi,
> > >
> > > I'm having a little generation problem with groups. Here's my sample
> > > schema:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > targetNamespace="http://www.example.org/Person";
> > > xmlns:person="http://www.example.org/Person";
> > > elementFormDefault="qualified">
> > >     <xsd:element name="Person"
type="person:PersonType"></xsd:element>
> > >
> > >     <xsd:complexType name="PersonType">
> > >         <xsd:sequence>
> > >                 <xsd:element name="Name"
type="xsd:string"></xsd:element>
> > >                 <xsd:element name="Age"
type="xsd:string"></xsd:element>
> > >                         <xsd:group ref="person:AnimalGroup"
minOccurs="0"
> > > maxOccurs="unbounded"/>
> > >         </xsd:sequence>
> > >     </xsd:complexType>
> > >
> > >     <xsd:simpleType name="Hair">
> > >         <xsd:restriction base="xsd:string"></xsd:restriction>
> > >     </xsd:simpleType>
> > >
> > >         <xsd:group name="AnimalGroup">
> > >                 <xsd:choice>
> > >                         <xsd:element name="Cat"
type="person:CatType"/>
> > >                         <xsd:element name="Dog"
type="person:DogType"/>
> > >                 </xsd:choice>
> > >         </xsd:group>
> > >
> > >     <xsd:complexType name="DogType">
> > >         <xsd:sequence>
> > >                 <xsd:element name="Name"
type="xsd:string"></xsd:element>
> > >                 <xsd:element name="Age"
type="xsd:string"></xsd:element>
> > >                 <xsd:element name="Breed"
type="xsd:string"></xsd:element>
> > >         </xsd:sequence>
> > >     </xsd:complexType>
> > >
> > >     <xsd:complexType name="CatType">
> > >         <xsd:sequence>
> > >                 <xsd:element name="Name"
type="xsd:string"></xsd:element>
> > >                 <xsd:element name="Age"
type="xsd:string"></xsd:element>
> > >                 <xsd:element name="Breed"
type="xsd:string"></xsd:element>
> > >         </xsd:sequence>
> > >     </xsd:complexType>
> > >
> > > </xsd:schema>
> > >
> > > And my code:
> > >
> > >         HelperContext context = SDOUtil.createHelperContext();
> > >
> > >         PersonFactory.INSTANCE.register(context);
> > >         PersonType person =
PersonFactory.INSTANCE.createPersonType();
> > >
> > >         person.setAge("30");
> > >         person.setName("Jim");
> > >
> > >         DogType dog = PersonFactory.INSTANCE.createDogType();
> > >         dog.setAge("4");
> > >         dog.setBreed("pug");
> > >         dog.setName("chewie");
> > >
> > >         DogType[] dogs = new DogType[0];
> > >
> > >         person.setDog(dogs);
> > >         person.getDog();
> > >
> > > I get the following exception when running either setDogs() or
getDogs():
> > >
> > > Exception in thread "main" java.lang.ClassCastException:
> > > org.eclipse.emf.ecore.util.FeatureMapUtil$FeatureEList
> > >         at org.example.person.impl.PersonTypeImpl.setDog(
> > > PersonTypeImpl.java:447)
> > >         at Test.anyTest_Static_Person(Test.java:144)
> > >         at Test.main(Test.java:153)
> > >
> > >
> > > Let me know if you need any more information. Thanks,
> > > -Chris
> > >
> > >
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to