dev@jaxb.java.net

Make *Fields public

From: Aleksei Valikov <valikov_at_disy.net>
Date: Fri, 10 Jun 2005 13:34:26 +0200

Hi.

>> I'd like to make *Field/*FieldRenderers public.
>> Any objections?
>
> I'm bit uncomfortable.
>
> The exposed part of the Fields are defined in FieldOutline. We should
> rather think about extending *Outline than making their implementations
> accessible.
>
> Perhaps would you elaborate on why would you like to make them public?

I have to generate identifier properties for Hibernate. To hold property
model consistent, I'd like to generate them as CValuePropertyInfos.
However, generated fields must be @XmlTransient so that they won't be
processed by JAXB. This means I need something like TransientSingleField:

public class TransientSingleField extends SingleField {

     public TransientSingleField(ClassOutlineImpl context, CPropertyInfo
prop) {
         super(context, prop);
     }


     protected void annotate(JAnnotatable field) {

         field.annotate(XmlTransient.class);
     }
}

To be able to extend SingleField, I need it to be public.
You're right, I could implement FieldOutline, but this would result in
copying a lot of the code from SingleField, AbstractField* and so on,
I'd like to avoid this.

I will also need a ProxyField - a field which simply accesses field from
another property.

Choices are: add TransientSingleField and ProxyField to JAXB or make
appropriate classes public to allow extensions. I like the last
alternative a bit better - more freedom in plugins and I don't have to
hack into JAXB with my field classes.

Bye.
/lexi