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
>
>
>


-- 
With best regards, Pokidov N. Dmitriy

Reply via email to