Hi Mark, let me prepare and push my test on GitHub. I'll get back when done.

Ove

On Sep 4, 2012, at 10:48 AM, Mark Struberg wrote:

> Hi Ove, sounds weird at the first read. Do you have the sample code online 
> somewhere?
> 
> LieGrue,
> strub
> 
> 
> 
> 
> ----- Original Message -----
>> From: Ove Ranheim <[email protected]>
>> To: [email protected]
>> Cc: 
>> Sent: Sunday, September 2, 2012 2:38 PM
>> Subject: Add JAXB annotations to a bean dynamically using the 
>> AnnotatedTypeBuilder
>> 
>> Hi,
>> 
>> I'm trying to add JAXB annotations dynamically using the 
>> AnnotatedTypeBuilder. My goal is to have a bean that is used to map data 
>> using 
>> JAXB (where I want to use my own annotations for declaration/mapping).
>> 
>> Extension:
>> 
>>     public <X> void processAnnotatedTypes(@Observes 
>> ProcessAnnotatedType<X> processAnnotatedType) {
>>         Class<X> beanClass = 
>> processAnnotatedType.getAnnotatedType().getJavaClass();
>>         
>>         MyConfigSource myConfigSourceAnnotation = 
>> beanClass.getAnnotation(MyConfigSource.class);
>>         if (myConfigSourceAnnotation != null && 
>> myConfigSourceAnnotation.location().length() > 0) {
>>             
>>             AnnotatedTypeBuilder<X> builder = new 
>> AnnotatedTypeBuilder<X>().readFromType(beanClass);
>>             builder.addToClass(new XmlRootElementLiteral());            
>>             processAnnotatedType.setAnnotatedType(builder.create());         
>>    
>>             
>>             log.infof("XmlRootElement annotation: %s", 
>> builder.getJavaClass().getAnnotation(XmlRootElement.class)); <== return null
>>         }
>>         
>>     }
>> 
>> My configuration bean:
>> 
>> @MyConfigSource(location = "parts.home")
>> //@XmlRootElement(name = "parts-config")
>> //@XmlAccessorType(XmlAccessType.PROPERTY)
>> public class PartsXmlConfig implements Serializable {
>>     ...
>> }
>> 
>> 
>> XmlRootElement literal:
>> 
>> public class XmlRootElementLiteral extends 
>> AnnotationLiteral<XmlRootElement> implements XmlRootElement {
>> 
>>     private static final long serialVersionUID = 49878732553198946L;
>> 
>>     @Override
>>     public String name() {
>>         return "parts-config";
>>     }
>> 
>>     @Override
>>     public String namespace() {
>>         return "http://www.w3.org/2001/XMLSchema";;
>>     }
>> 
>> }
>> 
>> The compiler gives a warning that says: "The annotation type XmlRootElement 
>> should not be used as a superinterface for XmlRootElementLiteral"
>> 
>> What is the correct way to use AnnotatedTypeBuilder in this case, and how 
>> can I 
>> get around the warning above for the XmlRootlElement?
>> 
>> 
>> Best regards, 
>> Ove
>> 

Reply via email to