users@jaxb.java.net

Re: JAXB metainformation

From: Gary Gregory <ggregory_at_seagullsw.com>
Date: Thu, 10 Jul 2003 15:24:55 -0400

" Or there's a library in Apache Commons that uses reflection to let you
build a reasonable toString method instantly."

FYI,

import org.apache.commons.lang.builder.ToStringBuilder;

public String toString() {
   return ToStringBuilder.reflectionToString(this);
}

-----Original Message-----
From: Kohsuke Kawaguchi [mailto:Kohsuke.Kawaguchi_at_Sun.COM]
Sent: Thursday, July 10, 2003 08:57
To: JAXB-INTEREST_at_JAVA.SUN.COM
Subject: Re: JAXB metainformation

Joan Antoni Farre <joan.antoni.farre_at_barcelona.eds.es> wrote:
> - Can JAXB generate toString() methods? If so, do they perform more or
less
> the value concatenation I've talked about? If no toString() methods can be
> generated, it could be interesting for future JAXB versions.

It doesn't do what you describe out-of-the-box.

But you could use the <xjc:superClass/> customization and write the
toString method by yourself.


> - Does anyone know about some tool which can perform it?

Or there's a library in Apache Commons that uses reflection to let you
build a reasonable toString method instantly.


> - Is it possible to retrieve such information about the restrictions which
> apply to every bean attribute (such as length for strings, for example)?.
I
> know the possibility of using XSOM to retrieve this information directly
> from the schema, but looks complicated and, probably, low performing. On
> the other hand, it's obvious that such information must be included in the
> generated beans in order to be able to perform runtime validation. If this
> possibility doesn't exist, I suggest to consider it for future versions.

If you need to work with JAXB-generated beans in a meta-level (that is,
if your code needs to be able to deal with arbitrary schema), I think
you shouldn't be using JAXB.

You should be able to work more easily at the level of the infoset.
You can just do the so-called "type-assignment" (I believe you could do
that by using some internal mechanism of Xerces, or you can use MSV).

With the type-assignment, you can find out what element/attribute
declaration applies to what element/attribute in a document.

Then you can dive into the corresponding schema definition.


I think the use case of JAXB is for programmers to be willingly bound
*statically* to schemas. In that scenario, I don't think being able to
read metadata is that important (but I'm happy to be corrected.)


> - If not, are there other (may be better) ways than XSOM to do it?

There are many other schema object models available out there. Search
the jaxb-interest archive.


regards,
--
Kohsuke Kawaguchi                  408-276-7063 (x17063)
Sun Microsystems                   kohsuke.kawaguchi_at_sun.com