Hi,
Yes, I'll send you well documented HOW-TO document next week.
Please check it for spelling, because my english is a far away from perfect.

Have a nice weekend.

Thank you again.
Antoni

-----Original Message-----
From: Werner Guttmann [mailto:[EMAIL PROTECTED]
Sent: 11. huhtikuuta 2008 13:01
To: [email protected]
Subject: Re: [castor-user] How to use hierarchical objects with wrapper



Alatalo, Antoni wrote:
> All right it works. I did misundestund about container element. After
> removing it all works fine.
>
> Thank you very much.
>
> As you see the result is very clean. Only two files and POJO does not
> have any dependencies on Castor. Very nice.
>
> I think you can place this example to the Cator site to provide simple
> Hierarchy functionality.

Would you mind - given the time I have spent on helping you - coming up with a 
well-structured HOW-TO document for the XML part of Castor ?

Werner
>
>
> Thank you very much Antoni
>
> -----Original Message----- From: Werner Guttmann
> [mailto:[EMAIL PROTECTED] Sent: 11. huhtikuuta 2008 12:30 To:
> [email protected] Subject: Re: [castor-user] How to use
> hierarchical objects with wrapper
>
> Using your test case (the one supplied below), I get the following
> output after marshalling:
>
> <foo:foo xmlns:foo="http://example.com/foo"; name="foo"> <foo:children>
> <foo:foo name="foo1"/> <foo:foo name="foo2"/> </foo:children>
> </foo:foo>
>
> Which - as far as I can tell - is what you wanted, correct ?
>
> Werner
>
> Alatalo, Antoni wrote:
>> Hi, Thank you for reply. Still doesn't work MAPPING: <?xml
>> version="1.0"?> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping
>> DTD Version 1.0//EN" "http://castor.org/mapping.dtd";> <mapping>
>> <class name="com.example.Foo" auto-complete="false"> <map-to
>> xml="foo" ns-uri="http://example.com/foo"; ns-prefix="foo" /> <field
>> name="name" type="java.lang.String"> <bind-xml name="name"
>> node="attribute" /> </field> <field name="children"
>> collection="collection" type="com.example.Foo" container="false">
>> <bind-xml name="foo" location="children"/> </field> </class>
>> </mapping>
>>
>> Gets the output <foo:foo xmlns:foo="http://example.com/foo";
>> name="foo"> <foo> <foo:foo name="foo1"> <foo /> </foo:foo> <foo:foo
>> name="foo2"> <foo /> </foo:foo> </foo> </foo:foo>
>>
>> And should be: <foo:foo name="foo"
>> xmlns:foo="http://example.com/foo";> <foo:children> <foo:foo
>> name="foo1" /> <foo:foo name="foo2" /> </foo:children> </foo:foo>
>>
>> The location attribute changes children name to foo, nothing else.
>> Still name of element is without namespace prefix. Another empty
>> <children/> (or with location <foo/>) element exists. How it can be
>> removed?
>>
>>
>> Thank you. Antoni
>>
>> -----Original Message----- From: Werner Guttmann
>> [mailto:[EMAIL PROTECTED] Sent: 11. huhtikuuta 2008 11:41
>> To: [email protected] Subject: Re: [castor-user] How to use
>> hierarchical objects with wrapper
>>
>> Actually, please ignore my last comment re: the use of the
>> 'container' attribute. It won't work in your case, and switching to
>> the use of the location attribute is the correct way forward.
>>
>> Regards Werner
>>
>> Werner Guttmann wrote:
>>> Hi Antoni,
>>>
>>> looking at the missing namespace prefix on the children element, I
>>> changed the mapping as follows (and introduced a location attribute
>>> on the <bind-xml> definition for the children field mapping. That
>>> did it for me.
>>>
>>> <mapping> <class name="xml.children.Foo" auto-complete="false">
>>> <map-to xml="foo" ns-uri="http://example.com/foo"; ns-prefix="foo"
>>> /> <field name="name" type="java.lang.String"> <bind-xml name="name"
>>> node="attribute" /> </field> <field name="children"
>>> collection="collection" type="xml.children.Foo"> <bind-xml
>>> name="foo" location="children" /> </field> </class> </mapping>
>>>
>>> I will have another look at the use of the container attribute, as
>>> it looks like a bug to me .... but I think that the solution shown
>>> should satisfy you.
>>>
>>> Werner
>>>
>>> Alatalo, Antoni wrote:
>>>> To continue this conversation question once again: Is there a way
>>>> to have xsd and POJO like I have (or yours modified xsd) and get
>>>> the ouput I expect by using castors mapping file? 1.
>>>> children with namespace prefix 2. empty children are not marhaled?
>>>>
>>>> Thank you a lot for your requests Antoni
>>>>
>>>> -----Original Message----- From: Alatalo, Antoni
>>>> [mailto:[EMAIL PROTECTED] Sent: 10. huhtikuuta 2008
>>>> 13:49 To: [email protected] Subject: RE: [castor-user] How
>>>> to use hierarchical objects with wrapper
>>>>
>>>> Hi, I've did generate code and it's not right way for me.
>>>> Enstead of one domain class I get six classes. From simple 20 line
>>>> class I get something too complex.
>>>>
>>>> As I mentioned before I want to use same domain structure
>>>> independent from the technologies. In the other words no hibernate,
>>>> castor or axis should be present in the model.
>>>>
>>>> Of course here can be three different domain models, one is my own,
>>>> second generated by castor, third database layer model.
>>>> But it requers mappings between models and is not what we are
>>>> looking.
>>>>
>>>> The ideal is something like castors mapping file. It's a glue
>>>> between java class and xsd schema. Only thing is to get it work in
>>>> every situation.
>>>>
>>>>
>>>> Regards. Antoni
>>>>
>>>> -----Original Message----- From: Werner Guttmann
>>>> [mailto:[EMAIL PROTECTED] Sent: 10. huhtikuuta 2008
>>>> 13:23 To: [email protected] Subject: Re: [castor-user] How
>>>> to use hierarchical objects with wrapper
>>>>
>>>> Hi,
>>>>
>>>> there you are:
>>>>
>>>> **** XML schema:
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?> <schema
>>>> xmlns="http://www.w3.org/2001/XMLSchema";
>>>> targetNamespace="http://example.com/foo";
>>>> xmlns:tns="http://example.com/foo";
>>>> elementFormDefault="qualified"> <complexType name="foo"> <sequence>
>>>> <element name="children" minOccurs="0"> <complexType> <sequence>
>>>> <element name="foo" type="tns:foo"
>>>>
>>>> maxOccurs="unbounded"> </element> </sequence> </complexType>
>>>> </element> </sequence> <attribute name="name"></attribute>
>>>> </complexType> <!-- <element name="foo"
>>>> type="tns:fooType"></element> --> </schema>
>>>>
>>>> *** builder properties:
>>>>
>>>> # Selects the Java class mapping for <xsd:element>'s and
>>>> <xsd:complexType>'s. # Legal values are 'element' and 'type'.
>>>> For 'element' mapping, the source # generator creates a Java class
>>>> hierarchy based on elements in the XML Schema. # For 'type'
>>>> mapping, the class hierarchy is based on types in the XML Schema. #
>>>> Default is 'element'. #
>>>> org.exolab.castor.builder.javaclassmapping=type
>>>>
>>>> Everything else is standard, so please generate the classes
>>>> yourself. Please note that I changed the XML schema to meet the
>>>> expected XML defined in the test case.
>>>>
>>>> Regards Werner Guttmannb
>>>>
>>>>
>>>>
>>>> Alatalo, Antoni wrote:
>>>>> Please, send me schema you modified and class you are generated
>>>>>
>>>>> Seems that I send you wrong version of xsd. Here is what I'm
>>>>> using. Only different is ref <?xml version="1.0"
>>>>> encoding="UTF-8"?> <schema
>>>>> xmlns="http://www.w3.org/2001/XMLSchema";
>>>>> targetNamespace="http://example.com/foo";
>>>>> xmlns:tns="http://example.com/foo";
>>>>> elementFormDefault="qualified"> <complexType name="fooType">
>>>>> <sequence> <element name="children" minOccurs="0"
>>>>> nillable="false"> <complexType> <sequence> <element ref="tns:foo"
>>>>>
>>>>> maxOccurs="unbounded"> </element> </sequence> </complexType>
>>>>> </element> </sequence> <attribute name="name"></attribute>
>>>>> </complexType> <element name="foo"
>>>>> type="tns:fooType"></element> </schema>
>>>>>
>>>>>
>>>>> Terv. Antoni
>>>>>
>>>>> -----Original Message----- From: Werner Guttmann
>>>>> [mailto:[EMAIL PROTECTED] Sent: 10. huhtikuuta 2008
>>>>> 12:45 To: [email protected] Subject: Re: [castor-user] How
>>>>> to use hierarchical objects with wrapper
>>>>>
>>>>> Just to let you know, after modifying your XML schema slightly, I
>>>>> was able to pruduce the desired output as follows just by
>>>>> generating classes from the XML schema given, without having to
>>>>> write a mapping file.
>>>>>
>>>>> Regards Werner Committer, Castor
>>>>>
>>>>> Alatalo, Antoni wrote:
>>>>>> Hi, Here is all in nutshell: SCHEMA: <?xml version="1.0"
>>>>>> encoding="UTF-8"?> <schema
>>>>>> xmlns="http://www.w3.org/2001/XMLSchema";
>>>>>> targetNamespace="http://example.com/foo";
>>>>>> xmlns:tns="http://example.com/foo";
>>>>>> elementFormDefault="qualified"> <complexType name="fooType">
>>>>>> <sequence> <element name="children"
>>>>>> minOccurs="0"> <complexType> <sequence> <element name="child"
>>>>>> type="tns:fooType"
>>>>>>
>>>>>> maxOccurs="unbounded"> </element> </sequence> </complexType>
>>>>>> </element> </sequence> <attribute name="name"></attribute>
>>>>>> </complexType> <element name="foo"
>>>>>> type="tns:fooType"></element> </schema>
>>>>>>
>>>>>> CASTOR <?xml version="1.0"?> <!DOCTYPE mapping PUBLIC
>>>>>> "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
>>>>>> "http://castor.org/mapping.dtd";> <mapping> <class
>>>>>> name="com.example.Foo" auto-complete="false"> <map-to xml="foo"
>>>>>> ns-uri="http://example.com/foo"; ns-prefix="foo"
>>>>>> /> <field name="name" type="java.lang.String"> <bind-xml
>>>>>> name="name" node="attribute" /> </field> <field name="children"
>>>>>> collection="collection"
>>>>>> type="com.example.Foo" container="false"> </field> </class>
>>>>>> </mapping>
>>>>>>
>>>>>> BEAN package com.example; import java.util.Collection;
>>>>>>
>>>>>> public class Foo { private String name; private Collection<Foo>
>>>>>> children;
>>>>>>
>>>>>> public Foo(){} public Foo(String name){ setName(name); } public
>>>>>> Collection<Foo> getChildren() { return children; } public void
>>>>>> setChildren(Collection<Foo> children) { this.children = children;
>>>>>> } public String getName() { return name; } public void
>>>>>> setName(String name) { this.name = name; } }
>>>>>>
>>>>>>
>>>>>> TESTCASE: package com.example;
>>>>>>
>>>>>> import java.io.IOException; import java.io.StringReader; import
>>>>>> java.io.StringWriter; import java.util.Collection; import
>>>>>> java.util.HashSet;
>>>>>>
>>>>>> import junit.framework.TestCase; import
>>>>>> org.exolab.castor.xml.XMLContext; import
>>>>>> org.exolab.castor.mapping.Mapping; import
>>>>>> org.exolab.castor.mapping.MappingException; import
>>>>>> org.exolab.castor.xml.MarshalException; import
>>>>>> org.exolab.castor.xml.Unmarshaller; import
>>>>>> org.exolab.castor.xml.Marshaller; import
>>>>>> org.exolab.castor.xml.ValidationException;
>>>>>>
>>>>>> import com.example.Foo;
>>>>>>
>>>>>> public class CastorFooTest extends TestCase { Mapping mapping =
>>>>>> null; XMLContext context = null; public void
>>>>>> setUp() throws IOException, MappingException{ mapping = new
>>>>>> Mapping();
>>>>>>
>>>>>> mapping.loadMapping("src/META-INF/castor/foo-castor.xml");
>>>>>> context = new XMLContext(); context.addMapping(mapping); } public
>>>>>> void testMarhallFoo() throws IOException, MappingException,
>>>>>> MarshalException, ValidationException{ Marshaller marshaller =
>>>>>> context.createMarshaller(); StringWriter writer = new
>>>>>> StringWriter(); marshaller.setWriter(writer);
>>>>>> marshaller.setMarshalAsDocument(false);
>>>>>> marshaller.setMapping(mapping);
>>>>>> marshaller.setSuppressNamespaces(false);
>>>>>> marshaller.marshal(getFoo()); assertEquals(expected,
>>>>>> writer.getBuffer().toString()); } public void
>>>>>> testUnMarhallFoo() throws IOException, MappingException,
>>>>>> MarshalException, ValidationException{ Unmarshaller unmarshaller
>>>>>> = context.createUnmarshaller(); StringReader reader = new
>>>>>> StringReader(expected); Foo result =
>>>>>> (Foo)unmarshaller.unmarshal(reader); Foo exp = getFoo();
>>>>>> assertEquals(exp.getName(), result.getName()); } private Foo
>>>>>> getFoo(){ Foo foo = getFoo(""); Collection<Foo> children = new
>>>>>> HashSet<Foo>(); children.add(getFoo("2"));
>>>>>> children.add(getFoo("1")); foo.setChildren(children); return foo;
>>>>>> } private Foo getFoo(String s){ Foo foo = new
>>>>>> Foo("foo".concat(s)); return foo; } private String expected =
>>>>>> "<foo:foo xmlns:foo=\"http://example.com/foo\";
>>>>>> name=\"foo\"><foo:children><foo:foo
>>>>>> name=\"foo1\"></foo:foo><foo:foo
>>>>>> name=\"foo2\"></foo:foo></foo:children></foo:foo>"; }
>>>>>>
>>>>>>
>>>>>> Expected output <?xml version="1.0" encoding="UTF-8"?> <foo:foo
>>>>>> name="foo" xmlns:foo="http://example.com/foo";>
>>>>>> <foo:children> <foo:foo name="foo1"/> <foo:foo name="foo2"/>
>>>>>> </foo:children> </foo:foo>
>>>>>>
>>>>>> OUTPUT I GET: <?xml version="1.0" encoding="UTF-8"?> <foo:foo
>>>>>> name="foo" xmlns:foo="http://example.com/foo";>
>>>>>> <children> - ERROR NUMBER 1 <foo:foo name="foo1"> <children /> -
>>>>>> ERROR NUMBER 2 </foo:foo> <foo:foo name="foo2"> <children /> -
>>>>>> ERROR NUMBER 2 </foo:foo> </children> - ERROR NUMBER 1 </foo:foo>
>>>>>>
>>>>>> Output I get isn't valid: 1. <children> element must have foo
>>>>>> prefix as all others: <foo:children> 2. there must not be empty
>>>>>> <children/> element at all
>>>>>>
>>>>>> Regards. Antoni
>>>>>>
>>>>>> -----Original Message----- From: Werner Guttmann
>>>>>> [mailto:[EMAIL PROTECTED] Sent: 9. huhtikuuta 2008
>>>>>> 15:13 To: [email protected] Subject: Re:
>>>>>> [castor-user] How to use hierarchical objects with wrapper
>>>>>>
>>>>>>
>>>>>>
>>>>>> Alatalo, Antoni wrote:
>>>>>>> Hi, I have Object A that has Collection of Objects A.
>>>>>>> Normal hierarchy structure. I got to work it almost well except
>>>>>>> two details. The collection is wrapped. It should look like this
>>>>>>> Lets name namespace like bar <bar:foo name="1"> <bar:children>
>>>>>>> <bar:foo name="2*"*/> <bar:foo name="3"/> </bar:children>
>>>>>>> </bar:foo>
>>>>>>>
>>>>>>> The problem is that chioldren while marhalling doen't get bar
>>>>>>> prefix. This is output after marshalling <bar:foo name="1">
>>>>>>> <children> <bar:foo name="2*"*> <children/> </bar:foo> <bar:foo
>>>>>>> name="3"> <children/> </bar:foo> </children> </bar:foo>
>>>>>>>
>>>>>>> How can i configure mapper to use prefix with "children"
>>>>>>> wrapper? Without this xml is not valid!
>>>>>> What version of Castor are you using ? And what does your mapping
>>>>>> for the relevant classes look like ? It looks like you are using
>>>>>> the locations attribute on the field mapping for the 'bar'
>>>>>> children ?
>>>>>>
>>>>>>> Teh next thing is empty collection. How can i configure mapper
>>>>>>> to exclude empty or null not required values?
>>>>>> Can you show us some sample XML that highlights your problem ? It
>>>>>> just isn't fully clear to me what the problem is.
>>>>>>
>>>>>>> Thank you *Antoni Alatalo *Ohjelmistoasiantuntija Kuntatoimiala,
>>>>>>> sosiaalitoimi _________________________________________
>>>>>>>
>>>>>>> *Logica **- Releasing your potential
>>>>>>>
>>>>>>> *Karvaamokuja 2 PL 38 00381 Helsinki Vaihde: 010 302 010
>>>>>>> Suora: 040 583 1097 [EMAIL PROTECTED] _www.logica.fi_
>>>>>>> <http://www.logicacmg.fi> WM-datan nimi on nyt *Logica.*
>>>>>>>
>>>>>>>
>>>>>> -----------------------------------------------------------------
>>>>>> -
>>>>>>  - -- 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
>>>>>>
>>>>>>
>>>>>>
>>>>> ------------------------------------------------------------------
>>>>> -
>>>>>  - - 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
>>>>>
>>>>>
>>>>>
>>>> -------------------------------------------------------------------
>>>> -
>>>>  - 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
>>>>
>>>>
>>>>
>>>>
>>>> -------------------------------------------------------------------
>>>> -
>>>>  - 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
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>>  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
>>
>>
>>
>
>
> ---------------------------------------------------------------------
>  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
>
>
>


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