I just filed a castor bug (CASTOR-1267) which describes this problem. It is not just NMTOKEN, it also happens in xsd:integer.

Bill

Werner Guttmann wrote:
Stefan,

Can you please post the source code for the (generated)
StateStateMomentType class ? It looks odd to me that any class generated
by the source generator would not have a default constructor. Having
said that, as you are specifing an enum, this migth as well be the case
... ;-). Let's look at the class first.

Regards
Werner


-----Original Message-----
From: Stefan Lober [mailto:[EMAIL PROTECTED] Sent: Dienstag, 22. November 2005 17:14
To: [email protected]
Subject: [castor-user] [XML/JDO] Problems using ClassDescriptors and a mapping file

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>(Cl
assDescriptorImpl.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]
-------------------------------------------------

Reply via email to