Hi,

If you think it is an issue, please create a new Jira issue at

http://jira.codehaus.org/browse/CASTOR

and attach all relevant files (domain classes, mapping file, XML schema,
test case(s)).

Werner



Pokidov Dmitriy wrote:
> Because early we use Apache digester for unmarshalling, but now we need
> marshalling and we should rewrite digester rules to castor rules, we can'nt
> change source code.
> I think that this is a bug, because when I debug castor sources, I cannt
> understand why elements in XMLFieldDescriptor have castor's namespace?
> 
> 2008/6/11 Werner Guttmann <[EMAIL PROTECTED]>:
> 
>> Hi,
>>
>> Before trying to address your question(s) one by one, I have got a
>> question. Given you have an XML schema instance that you want to use for
>> validation, how come you are not generating the domain and descriptor
>> classes from the XML schema ? This way, you'd get validation for free.
>>
>> Regards
>> Werner
>>
>> Pokidov Dmitriy wrote:
>>> Hello, all
>>>
>>> I have simple example that illustrate problem:
>>>
>>>
>>>
>>> Mapping file:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "
>>> http://castor.org/mapping.dtd";>
>>>
>>>
>>>
>>> <mapping>
>>>
>>>             <class name="test2.OrderItem">
>>>
>>>                         <map-to xml="orderitem" ns-uri="
>>> http://www.otr.ru/sufd/document/desc/"/>
>>>
>>>
>>>
>>>                         <field name="orderItem" type="test2.OrderItem">
>>>
>>>                                    <bind-xml name="orderitem"
>>> node="element"/>
>>>
>>>                         </field>
>>>
>>>
>>>
>>>                         <field name="id" type="string">
>>>
>>>                                    <bind-xml name="identity"
>>> node="attribute"/>
>>>
>>>                         </field>
>>>
>>>
>>>
>>>                         <field name="orderQuantity" type="integer">
>>>
>>>                                    <bind-xml name="quantity"
>>> node="element"/>
>>>
>>>                         </field>
>>>
>>>             </class>
>>>
>>> </mapping>
>>>
>>>
>>>
>>> Schema file:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <xs:schema attributeFormDefault="unqualified"
>> elementFormDefault="qualified"
>>> targetNamespace="http://jopa.org"; xmlns:xs="
>> http://www.w3.org/2001/XMLSchema
>>> ">
>>>
>>>   <xs:element name="item" type="itemType"/>
>>>
>>>   <xs:complexType name="itemType">
>>>
>>>     <xs:sequence>
>>>
>>>       <xs:element type="xs:string" name="quantity"/>
>>>
>>>     </xs:sequence>
>>>
>>>     <xs:attribute type="xs:string" name="identity"/>
>>>
>>>   </xs:complexType>
>>>
>>> </xs:schema>
>>>
>>>
>>>
>>> And xml that I want to unmarshall:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <orderitem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>
>>>                         xsi:schemaLocation="
>>> http://www.otr.ru/sufd/document/desc/
>>> http://otr-sufd/xmlschema/docschema.xsd";
>>>
>>>                         xmlns="http://www.otr.ru/sufd/document/desc/";
>>> identity="12">
>>>
>>>                         <quantity>100</quantity>
>>>
>>>                         <orderitem
>>> identity="13"><quantity>100</quantity></orderitem>
>>>
>>> </orderitem>
>>>
>>>
>>>
>>> And class OrderItem:
>>>
>>> public class OrderItem {
>>>
>>>             private String id;
>>>
>>>             private Integer orderQuantity;
>>>
>>>             private OrderItem orderItem;
>>>
>>>
>>>
>>>             public OrderItem getOrderItem() {
>>>
>>>                         return orderItem;
>>>
>>>             }
>>>
>>>
>>>
>>>             public void setOrderItem(OrderItem orderItem) {
>>>
>>>                         this.orderItem = orderItem;
>>>
>>>             }
>>>
>>>
>>>
>>>             public OrderItem() {
>>>
>>>             }
>>>
>>>
>>>
>>>             public OrderItem(String id, Integer orderQuantity) {
>>>
>>>                         this.id = id;
>>>
>>>                         this.orderQuantity = orderQuantity;
>>>
>>>             }
>>>
>>>
>>>
>>>             public String getId() {
>>>
>>>                         return id;
>>>
>>>             }
>>>
>>>
>>>
>>>             public void setId(String id) {
>>>
>>>                         this.id = id;
>>>
>>>             }
>>>
>>>
>>>
>>>             public Integer getOrderQuantity() {
>>>
>>>                         return orderQuantity;
>>>
>>>             }
>>>
>>>
>>>
>>>             public void setOrderQuantity(Integer orderQuantity) {
>>>
>>>                         this.orderQuantity = orderQuantity;
>>>
>>>             }
>>>
>>> }
>>>
>>>
>>>
>>> And when I unmarshall xml, I get exception:
>>>
>>> java.lang.NoClassDefFoundError: test2/Orderitem (wrong name:
>>> test2/OrderItem)
>>>
>>>             at java.lang.ClassLoader.defineClass1(Native Method)
>>>
>>>             at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
>>>
>>>             at
>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>>>
>>>             at
>> java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>>>             at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
>>>
>>>             at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>>>
>>>             at java.security.AccessController.doPrivileged(Native Method)
>>>
>>>             at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>
>>>             at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>>
>>>             at
>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
>>>             at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>
>>>             at
>>>
>> org.exolab.castor.xml.util.resolvers.ResolveHelpers.loadClass(ResolveHelpers.java:140)
>>>             at
>>>
>> org.exolab.castor.xml.util.resolvers.ByIntrospection.internalResolve(ByIntrospection.java:87)
>>>             at
>>>
>> org.exolab.castor.xml.util.resolvers.AbstractResolverClassCommand.resolve(AbstractResolverClassCommand.java:55)
>>>             at
>>>
>> org.exolab.castor.xml.util.resolvers.CastorXMLStrategy.getDescriptor(CastorXMLStrategy.java:137)
>>>             at
>>>
>> org.exolab.castor.xml.util.resolvers.CastorXMLStrategy.resolveClass(CastorXMLStrategy.java:82)
>>>             at
>>>
>> org.exolab.castor.xml.util.XMLClassDescriptorResolverImpl.resolve(XMLClassDescriptorResolverImpl.java:241)
>>>             at
>>>
>> org.exolab.castor.xml.MarshalFramework.searchInheritance(MarshalFramework.java:502)
>>>             at
>>>
>> org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1865)
>>>             at
>>>
>> org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1418)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:878)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
>>>             at
>>>
>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
>>>             at
>>> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:715)
>>>
>>>             at
>>> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:616)
>>>
>>>             at Test2.testUnmarshalItem(Test2.java:61)
>>>
>>>             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>>             at
>>>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>             at
>>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>             at
>>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
>>>
>>>             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>>             at
>>>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>             at
>>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>             at
>>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
>>>
>>>
>>>
>>> When I set ns-prefix and write xml with prefix, all work correctly, but I
>>> need xml without prefixes. Please help me.
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>    http://xircles.codehaus.org/manage_email
>>
>>
>>
> 
> 

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to