Thanks Sekhar for all your responses - I think I'm on top of
everything you've told me thus far. Your emails have been very much
appreciated.
cheers
dim
On 6/22/05, Sekhar Vajjhala <Sekhar.Vajjhala_at_sun.com> wrote:
> Dmitri Colebatch wrote:
> Its just a simple javabean. eg:
class Customer
{
String name;
String
> licenseNumber;
}
etc. the problem I see is that I can see how to
> get:
<Deal>
<Customer>
<Name>Dmitri Colebatch</Name>
> <LicenseNumber>123456789</LicenseNumber>
> </Customer>
</Deal>
but what I want is
<Deal>
<Customer>
> <IndividualCustomer>
<Name>Dmitri Colebatch</Name>
> <LicenseNumber>123456789</LicenseNumber>
> </IndividualCustomer>
</Customer>
</Deal>
so I'm assuming that I'll need
> to configure a custom mapper or
something.... suggestions?
> I was going to suggest @XmlJavaTypeAdapter for this but I see from your
> later post that you already tried that out. Good to know it works for you.
>
> Regards
> Sekhar
>
>
>
cheers
dim
On 6/21/05, Sekhar Vajjhala <Sekhar.Vajjhala_at_sun.com> wrote:
> Dmitri Colebatch wrote:
> Done:
http://wiki.java.net/bin/view/Javawsxml/JaxbExistingClassExistingSchemaHowTo
I've
> only done the basic formatting - I'll fix that in time.
I've just hit a
> situation where I have
class Deal
{
private Customer customer;
}
and I
> want to map it to:
<Deal>
<Customer>
<IndivualCustomer> ...
I didn't see
> the Java representation corresponding to IndividualCustomer.
So I can't
> tell. Can you post that ?
Thanks
Sekhar
is this possible? am
> I going to need to remodel my classes.
Obviously Customer has multiple
> implementations (as well as individual
we have co-buyer and company). Any
> suggestions?
cheers
dim
On 6/21/05, Kohsuke Kawaguchi
> <Kohsuke.Kawaguchi_at_sun.com> wrote:
Comments about the steps later, but
> I think this would make a great Wiki
page. Would you be interested in adding
> this to Wiki and link it
> from
http://wiki.java.net/bin/view/Javawsxml/JaxbSI
> ?
Dmitri Colebatch wrote:
Hi all,
I figured I'd start by making a
> few notes on how what I'm learning so
that (a) others can correct me where
> I'm missing something, and (b)
someone else can benefit from it. What
> follows here is a very basic
outline of a few steps that I'm finding myself
> going through when
serializing an existing class.
Step one - decide whether
> you want to serialize fields (ie field
declarations) or properties (get/set
> methods). By default properties
are serialized. You need to put either:
> @XmlAccessorType(AccessType.FIELD)
or
> @XmlAccessorType(AccessType.PROPERTY)
at the top of your class depending on
> which approach you want to take.
Step two - identify the root element for
> the class, add the
appropriate annotation to the top of the class:
> @XmlRootElement(name = "ElementName", namespace =
> "ElementNamespace")
Having done this, give it a quick test, if you have
> something vaguely
resembling a javabean JAXB should spit something out - the
> top level
element will be ok, but you may find you need to tweak various
> bits
and pieces.
I've found setting field access (step one) is easiest (so
> far - I've
only just started!). So the rest of this assumes you're using
> field
access.
Step three - identify the type of the element, and the order
> of the
fields to be serialized. I'm assuming that your element is a
> complex
type, and it contains a sequence or all group. To identify the
> type
of element use the XmlType annotation. If your element contains
> an
anonymous type do this:
@XmlType(name = "")
or if you have a global
> type, do this:
@XmlType(name = "TypeName, namespace =
> "TypeNamespace")
Step four - Specify the order of the fields to be
> serialized. We do
this by adding the propOrder attribute (???) to the
> XmlType
annotation. Suppose you have two fields, foo and bar, and you
> want
foo to appear before bar, do this (note that I'm assuming you're
> using
an anonymous type, if you're using a global type change this to
> suit):
@XmlType(name = "", propOrder = { "foo", "bar" })
Step five -
> Customize the mappings. Suppose you want foo to map to an
element called
> "SomethingElse" then find the field foo:
private String foo;
and annotate
> it as follows:
@XmlElement(name = "SomethingElse", namespace
> =
"ElementNamespace", type=String.class)
private String foo;
Note also the
> namespace and type of the field.
Step six - Customize other types. Suppose
> bar is in fact another type:
private MyClass bar;
public class MyClass
{
> private String a;
private String b;
// .... use your imagination!
}
and
> you want to map Bar to an element called "SomeRandomName", then
you need to
> do two things. Firstly, lets tell the field decl in our
first class that's
> the name of the element:
@XmlElement(name = "SomeRandomName" namespace =
> "Namespace")
private MyClass bar;
Secondly, we need to tell JAXB how to
> serialize MyClass. This is much
the same as for the top level class so I
> wont go through it again.
And that concludes my learning! Hopefully this is
> (a) accurate, (b)
sensible, and (c) helpful. I'll keep adding to this I
> think, and will
look forward to any constructive criticism or
> questions.
cheers
dim
---------------------------------------------------------------------
To
> unsubscribe, e-mail:
> users-unsubscribe_at_jaxb.dev.java.net
For additional
> commands, e-mail: users-help_at_jaxb.dev.java.net
--
Kohsuke Kawaguchi
Sun
> Microsystems kohsuke.kawaguchi_at_sun.com
>
---------------------------------------------------------------------
To
> unsubscribe, e-mail:
> users-unsubscribe_at_jaxb.dev.java.net
For additional
> commands, e-mail: users-help_at_jaxb.dev.java.net
> ---------------------------------------------------------------------
To
> unsubscribe, e-mail:
> users-unsubscribe_at_jaxb.dev.java.net
For additional
> commands, e-mail: users-help_at_jaxb.dev.java.net
>
>