Hi Arnaud,
I think I've found the problem. It was really in my code.
I used a value <false> as a parameter in the method setMarshalExtendedType
of the marshaller:
marshaller.setMarshalExtendedType(false);
I denoted it during a preparation the code to be sent you.
So the value <true> "saved" me: the output is as I expected!!!
Thank you very much for help.
Alexei
> -----Original Message-----
> From: Arnaud Blandin [mailto:[EMAIL PROTECTED]]
> Sent: 12 December 2002 09:22
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Marshaling heterogeneous collections
>
>
> Hi Alexei,
>
> Can you please post the code you are using to set the mapping and
> marshall your objects?
>
> Arnaud
>
> -----Original Message-----
> From: Oleksiy Mishchenko
> [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, December 12, 2002 10:18 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Marshaling heterogeneous collections
>
> Claude,
> �
> I have downloaded Castor-XML version 0.9.4.1 and just tried to use it.
> The result is the same: Castor maps the content of the heterogeneous
> Vector�using getters of the�interface specified�for�the items of this
> Vector in the�mapping file (IProcessor) and nothing more (does not
> explore a real class implemented it: e.g. processorIO). The real
> classes�are�definitely defined in the mapping as well, but...
> Is there any solution?!!
> �
> �
> Thanks
> �
> Alexei
> �
> -----Original Message-----
> From: Oleksiy Mishchenko
> [mailto:[EMAIL PROTECTED]]
> Sent: 11 December 2002 17:15
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Marshaling heterogeneous collections
> Hi Claude,
> �
> Great thanks for the information.
> At the moment I use Castor version 0.9.4.
> I have done everything you suggested me (added auto-naming
> attribute and
> updated Engine with setProcessors(Vector processors)), but my
> new output
> looks like following:
> �
> <engine>�
> ���� <iprocessor>�
> ��������<type>processorCPU</type>
> ��������.......
> ���� </iprocessor>�
> ���� <iprocessor>�
> ��������<type>processorIO</type>
> ��������.......
> ���� </iprocessor>�
> </engine>
>
> Real classes I use are different of course.
> It seems to me�that Castor explores just�the interface IProcessor
> instead of the real classes. I don't see any�attributes and elements
> which are specific for the real classes.
> Each�real�class is�defined in the mapping file with an
> element <map-to>
> and describes the mapping of�all its fields.
> What could be�wrong?
> �
> �
> Cheers
> �
> Alexei
> -----Original Message-----
> From: Claude Vedovini [mailto:[EMAIL PROTECTED]]
> Sent: 11 December 2002 15:51
> To: [EMAIL PROTECTED]
> Subject: Re: [castor-dev] Marshaling heterogeneous collections
> Hi,
> Try with the following mapping:
> <mapping>
> ������� <class name="Engine">
> ������� ������� <map-to xml="engine" />
> ������� ������� <field name="processors" type="IProcessor"
> collection="vector">
> ������� ������� ������� <bind-xml auto-naming="deriveByClass"
> node="element" />
> ������� ������� </field>
> ������� </class>
> ������� <class name="processorCPU">
> ������� ������� <map-to xml="cpu"/>
> ������� ������� ...
> ������� </class>
> ������� <class name="processorIO">
> ������� ������� <map-to xml="pio"/>
> ������� ������� ...
> ������� </class>
> ������� <class name="processorVideo">
> ������� ������� <map-to xml="pvideo"/>
> ������� ������� ...
> ������� </class>
> </mapping>
>
> Where you define specific sub-classes fields in place of the elipsis.
> you could even define the mapping to IProcessor and then "extends" the
> other mappings
> Engine should have the following form:
> public class Engine {
> ������� private Vector processors;
> ������� public void setProcessors(Vector processors) �� {
> ������� ������� this.processors = processors;
> ������� }
> ������� public Vector getProcessors() {
> ������� ������� return processors;
> ������� }
> }
> NOTE: this will only works with version 0.9.4.x of Castor
> Have fun,
> Claude
>
> > -----Original Message-----
> > From: Oleksiy Mishchenko
> > [mailto:[EMAIL PROTECTED]]
> > Sent: 11 December 2002 16:05
> > To: [EMAIL PROTECTED]
> > Subject: [castor-dev] Marshaling heterogeneous collections
> >
> >
> > Hello,
> >
> > I have been exploring a possibility of using the Castor XML Mapping
> > facilities for our needs.
> > Everything I have tried works perfect and complies with our
> > requirements.
> > However, I am confronted with some difficulties concerning
> marshaling.
>
> > I'm trying to map a Java class containing a collection of
> > heterogeneous
> > items, which are inherited from the same abstract class, to
> > an XML document.
> >
> > Let me show the details using the Castor' classic example
> > taken from the URI
> > http://castor.exolab.org/xml-mapping.html#5.-xsi:type .
> > Assume we have an architecture following the example but
> > gently modified to
> > demonstrate our real needs. We added a collection of the
> > Vector type that
> > should contain heterogeneous processors implementing the interface
> > IProcessor:
> > public interface IProcessor
> > {
> > ����� public void process();
> > }
> > public class processorCPU� implements IProcessor {...}
> > public class processorIO����� implements IProcessor {...}
> > public class processorVideo implements IProcessor {...}
> > ..
> > public class Engine
> > {
> > ����� private Vector processors;
> > ����� public void addProcessor(IProcessor processor)
> > ����� {
> > ����� ������� processors.add(processor);
> > ����� }
> > ����� public Vector getProcessors()
> > ����� {
> > ����� ������� return processors;
> > ����� }
> > }
> >
> > We would like to see an XML configuration file as following:
> >
> > <engine>
> > ����� <cpu/>
> > ����� <pio/>
> > ����� <pvideo/>
> > </engine>
> >������������
> >
> > At first I tried to use a mapping file that looks like below:
> >
> > <mapping>
> > ����� <class name="Engine">
> > ����� ������� <map-to xml="engine" />
> > ����� ������� <field name="processorCPU" type="IProcessor"
> > required="false"
> > ����� ������� ������� set-method="addProcessor"
> > get-method="getProcessors">
> > ����� ������� ������� <bind-xml name="cpu" node="element" />
> > ����� ������� </field>
> > ����� ������� <field name="processorIO" type="IProcessor"
> > required="false"
> >
> > ����� ������� ������� set-method="addProcessor"
> > get-method="getProcessors">
> > ����� ������� ������� <bind-xml name="pio" node="element" />
> > ����� ������� </field>
> > ����� ������� <field name="processorVideo" type="IProcessor"
> > required="false"
> > ����� ������� ������� set-method="addProcessor"
> > get-method="getProcessors">
> > ����� ������� ������� <bind-xml name="pvideo" node="element" />
> > ����� ������� </field>
> > ����� </class>
> > </mapping>
> >
> > It works fine in a scope of unmarshaling, because of
> > polymorphism and nature
> > of the Vector collection. However, it is obvious that the method
> > getProcessors() returns a whole collection of the
> > heterogeneous elements,
> > like: processorCPU, processorIO and processorVideo.
> > The problem is that the Castor Mapping framework calls this
> > method as many
> > times as a number of corresponding fields present in the
> > mapping file (in
> > described case it is 3). Having not any opportunity to
> > identify, which XML
> > field Castor requests the data for, during processing a call
> > of the method
> > getProcessors() I cannot restrict the content of the returned
> > Vector in
> > order to present the objects of the necessary types only.
> >
> > I clearly realize that Castor's behavior in this situation is
> > absolutely
> > right and an actual problem is in the mapping, which has to
> > be properly
> > specified. It is important to denote that we would like to
> > avoid specific
> > tricks like using an attribute xsi:type="java:..." because,
> > despite the fact
> > it works correctly in the Castor framework, the prefix java
> > prevents the XML
> > document to be validated by other software we apply (e.g. XML Spy).
> > Moreover, we want our XML documents would not contain any
> > development tool
> > or programming language specific features.
> >
> > The question is: could you please give me any hint how to
> achieve the
> > functionality we need with the Castor API? Should I create
> > some specific
> > handler in an application implementing something like the
> FieldHandler
>
> > interface etc. or there is any other way to solve the problem?
> >
> >
> > Your any help is much appreciated.
> >
> > Alexei
> > [EMAIL PROTECTED]
> >
> > -----------------------------------------------------------
> > If you wish to unsubscribe from this mailing, send mail to
> > [EMAIL PROTECTED] with a subject of:
> > ����� unsubscribe castor-dev
> >
> ______________________________________________________________
> __________
> __
> � This email and any files transmitted with it are CONFIDENTIAL and
> intended
> solely for the use of the individual or entity to which they are
> addressed.
> � Any unauthorized copying, disclosure, or distribution of
> the material
> within
> this email is strictly forbidden.
> � Any views or opinions presented within this e-mail are
> solely those of
> the
> author and do not necessarily represent those of Odyssey Asset
> Management
> Systems SA unless otherwise specifically stated.
> � An electronic message is not binding on its sender.� Any message
> referring to
> a binding engagement must be confirmed in writing and duly signed.
> � If you have received this email in error, please notify the sender
> immediately
> and delete the original.
>
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
> unsubscribe castor-dev
>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev