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

