Steafan, Based upon Keith's comment, can you please post the complete stack trace ?
Werner > -----Original Message----- > From: Keith Visco [mailto:[EMAIL PROTECTED] > Sent: Mittwoch, 23. November 2005 06:19 > To: [email protected] > Subject: Re: [castor-user] [XML/JDO] Problems using > ClassDescriptors and a mapping file > > Stefan, > > Type-safe enum style classes are generated without a default > constructor. Castor XML handles these types of classes, I > believe some work recently went into Castor JDO for > supporting them as well, but I don't know the extent of their support. > > http://castor.codehaus.org/xml-mapping.html#7.5-Type-safe-enum > eration-mapping > > > You can use descriptors with a mapping, but the mapping will > take precedence, so I recommend you remove any items from the > mapping file that you don't want to customize and then let > the descriptors handle the rest. > > If you want to override just one field and let the generated > descriptor do the rest, you can do the following: > > <class name="Foo" auto-complete="true"> > <field name="bar" handler="BarHandler"/> </class> > > Castor will load the FooDescriptor and then override the > associated bar FieldDescriptor with the above mapping. > > You can also specify a GeneralizedFieldHandler without a > mapping file if you use a binding-file during source generation. > > --Keith > > > > Stefan Lober wrote: > > Hello, > > I have built my project around Castor using an XML Schema > as starting > > point for my development. > > The development process is planned to be as follows: > > XSD => Java source (via SourceGenerator) Java source => > Java classes > > (Java compiler) Java classes => mapping file for XML&JDO > (MappingTool) > > > > I have modified the MappingTool class, so that it also > integrates JDO > > mapping information in my mapping file. > > The intention is to unmarshal an XML document (described by > the XSD) > > and persist it in the database. > > > > Unfortunately, a construct in the XSD causes some problems. This is > > it: > > > > <element name="state"> > > <complexType mixed="true"> > > <attribute name="id" type="int" use="optional" /> > > <attribute name="state-moment" use="required"> > > <simpleType> > > <restriction base="NMTOKEN"> > > <enumeration value="Unknown" /> > > <enumeration value="StateEnd" /> > > <enumeration value="StateBegin" /> > > </restriction> > > </simpleType> > > </attribute> > > <attribute name="stamptime" type="string" > > use="required" /> > > </complexType> > > </element> > > > > This element is referenced from a another element in the schema. > > > > First, I had let the SourceGenerator generate ONLY the > classes and NO > > class descriptors (with -gen-mapping and -nodesc). > > I get this mapping back from MappingTool: > > > > <class cst:name="log.State" > > cst:depends="log.Systemstates" cst:identity="id" > > cst:key-generator="MAX"> > > <description>Default mapping for class log.State</description> > > <map-to cst:table="State" cst:xml="state" /> <field > cst:name="valid" > > cst:type="boolean"> > > <sql name="valid" dirty="check" /> > > <bind-xml name="valid" node="attribute" /> > > </field> > > <field cst:name="id" cst:type="integer"> > > <sql name="id" type="integer" dirty="check" /> > > <bind-xml name="id" node="attribute" /> > > </field> > > <field cst:name="content" cst:type="string"> > > <sql name="content" type="char" dirty="check" /> > > <bind-xml name="content" node="element" /> > > </field> > > <field cst:name="stamptime" cst:type="string"> > > <sql name="stamptime" type="char" dirty="check" /> > > <bind-xml name="stamptime" node="element" /> > > </field> > > </class> > > > > This gives me the following error when the unmarshal method > is called: > > > > Illegal Text data found as child of: state > > value: "INIT"{file: [not available]; line: 5; > > column: 85} > > at > > org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:671) > > > > The according XML line ist this: > > > > <state state-moment="StateBegin" > > stamptime="2005-10-25T11:46:09" >INIT</state> > > > > --------------------------------- > > > > So I tried using the class descriptors. Unmarshalling the > XML document > > works now. But as soon as I try to persist the data in the > DB, I have > > to use the generated mapping (form MappingTool). The call of > > JDOManager.loadConfiguration results in the following > > exception: > > > > org.exolab.castor.mapping.MappingException: The Java class > > log.types.StateStateMomentType is not constructable -- it does not > > contain a default public constructor > > at > > > org.exolab.castor.mapping.loader.ClassDescriptorImpl.<init>(ClassDescr > > iptorImpl.java:161) > > > > Is my approach of using class descriptors AND a mapping file the > > reason for this problem? > > Is it possible to solve this? > > > > Another question: Is it possible to use a GerealizedFieldHandler > > WITHOUT a mapping file? > > > > Any hint would be appreciated. > > > > Stefan > > > > > > > > > > > > > > ___________________________________________________________ > > Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier > > anmelden: http://mail.yahoo.de > > > > ------------------------------------------------- > > If you wish to unsubscribe from this list, please send an empty > > message to the following address: > > > > [EMAIL PROTECTED] > > ------------------------------------------------- > > > > > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please send an > empty message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

