i haven't verified this yet but does your suggested solution
apply both to abstract classes and interfaces?
(i was referring specifically to two classes that both implement a
specific interface.)
in other words, can i used abstract mappings to model the latter,
or do i have to use abstract classes?
yes, it's interesting to see how the xml side of
this is analogous to xml schema substitution groups.
thanks, eitan
On Tue, 2005-08-16 at 11:32 -0700, Dennis Sosnoski wrote:
> Assuming you want to use a common binding for I your best way of
> handling this is by using a <mapping abstract="true" ...> for I, and
> <mapping extends="I" ...> mappings for A and B. That way the x reference
> to I will accept either of the two extensions. This is the limited
> equivalent of a schema substitution group (limited because the 1.0 code
> supports only one level of extends).
>
> - Dennis
>
> Eitan Suez wrote:
>
> >hi all,
> >
> > given a simple interface modeling scenario where
> > class A and class B implement interface I, and
> > finally where class C has a property, x, of type
> > I. how does one model this in jibx?
> >
> > in my mapping file i know i'll be specifying
> > a mapping for A, B, and C (including C's property,
> > x). but the problem is that when jibx tries to
> > marshal/unmarshal C it knows nothing about the
> > interface type.
> >
> > am i overlooking something?
> >
> > i solved the problem by writing an "InterfaceMapper"
> > whose gist is in these two methods:
> >
> > public void marshal(Object obj, IMarshallingContext ictx)
> > throws JiBXException
> > {
> > ((IMarshallable) obj).marshal(ictx);
> > }
> >
> > public Object unmarshal(Object obj, IUnmarshallingContext ictx)
> > throws JiBXException
> > {
> > return ictx.unmarshalElement();
> > }
> >
> > that is, any time you try to marshal x, it will always be of type
> > A or B and they're both marshallable. when it's time to unmarshal,
> > all the information is there for jibx to simply do its job (to know
> > which concrete implementation of I has been marshalled).
> >
> > the only thing i'm not doing here (which is important) is verifying
> > that:
> >
> > a. the type of the unmarshalled element is mapped
> > b. the type of the unmarshalled element is an instance of I
> >
> > i'm hoping that there's already a way to do this in jibx without a
> > customer marshaller. if not, then i think something like the above
> > might be useful to include in/add to jibx.
> >
> >thanks, eitan
> >
> >
> >
> >-------------------------------------------------------
> >SF.Net email is Sponsored by the Better Software Conference & EXPO
> >September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
> >Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
> >Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
> >_______________________________________________
> >jibx-users mailing list
> >[email protected]
> >https://lists.sourceforge.net/lists/listinfo/jibx-users
> >
> >
> >
>
>
> -------------------------------------------------------
> SF.Net email is Sponsored by the Better Software Conference & EXPO
> September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
> Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
> Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
> _______________________________________________
> jibx-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jibx-users
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users