Thanks for your support concerning my problems.
Could anyone also please comment on the exception I
described that occurs when I try to unmarshal my XML
document.
Here it is again.
This is the relevant mapping file part:
> <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>
I try to unmarshal an XML document that contains this:
> <state state-moment="StateBegin"
> stamptime="2005-10-25T11:46:09" >INIT</state>
This exception occurs:
> 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)
I cannot see a reason why the string "INIT" should not
be allowed at this location.
Stefan
--- Stefan Lober <[EMAIL PROTECTED]> schrieb:
> 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>(ClassDescriptorImpl.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]
> -------------------------------------------------
>
>
___________________________________________________________
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]
-------------------------------------------------