org.exolab.javasource
Interface JAnnotatedElement

All Known Implementing Classes:
AbstractJClass, AbstractJField, DescriptorJClass, JAnnotatedElementHelper, JAnnotationType, JClass, JConstant, JConstructor, JDODescriptorJClass, JEnum, JEnumConstant, JField, JInnerClass, JInterface, JMethod, JMethodSignature, JParameter, JStructure

public interface JAnnotatedElement

Defines methods for manipulating annotations held against various program code elements, such as classes, fields, methods etc. This interface is similar to the java.lang.reflect.AnnotatedElement except that it also allows modifications of associated annotations. It is implemented by the classes within this package that represent applicable code elements.

Adding the class annotations

   JClass lollipop = new JClass("Lollipop");
   JAnnotationType endorsersType = new JAnnotationType("Endorsers");
   JAnnotation endorsers = new JAnnotation(endorsersType);
   endorsers.setValue(new String[] { "\"Children\"", "\"Unscrupulous dentists\""});
   lollipop.addAnnotation(endorsers);
 
outputs
   @Endorsers(
       {
           "Children",
           "Unscrupulous dentists"
       })
   public class Lollipop {
   }
 
Adding the method annotations
   JClass timeMachine = new JClass("TimeMachine");
   JAnnotationType requestType = new JAnnotationType("RequestForEnhancement");
   JAnnotation request = new JAnnotation(requestType);
   request.setElementValue("id", "2868724");
   request.setElementValue("synopsis", "\"Provide time-travel functionality\"");
   request.setElementValue("engineer", "\"Mr. Peabody\"");
   request.setElementValue("date", "\"4/1/2004\"");
   JMethod travelThroughTime = new JMethod(null, "travelThroughTime");
   travelThroughTime.addAnnotation(request);
   travelThroughTime.addParameter(new JParameter(new JClass("Date"), "date"));
   timeMachine.addMethod(travelThroughTime);
 
outputs
   @RequestForEnhancement(
       id       = 2868724,
       synopsis = "Provide time-travel functionality",
       engineer = "Mr. Peabody",
       date     = "4/1/2004")
   public void travelThroughTime(Date date)
   {
   }
 
Adding the field annotations
   JClass timeMachine = new JClass("EventProducer");
   JAnnotationType suppressWarningsType = new JAnnotationType("SuppressWarnings");
   JAnnotation suppressWarnings = new JAnnotation(suppressWarningsType);
   JField field = new JField(new JClass("DocumentHandler"), "documentHandler");
   field.addAnnotation(suppressWarnings);
   timeMachine.addField(field);
 
outputs
   @SuppressWarnings()
   private DocumentHandler documentHandler;
 

Version:
$Revision: 6669 $ $Date: 2006-04-25 16:09:10 -0600 (Tue, 25 Apr 2006) $
Author:
Andrew Fawcett

Method Summary
 void addAnnotation(JAnnotation annotation)
          Adds a JAnnotation to this source element.
 JAnnotation getAnnotation(JAnnotationType annotationType)
          Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.
 JAnnotation[] getAnnotations()
          Returns a list of JAnnotation's already set on this source element.
 boolean hasAnnotations()
          Returns true if this source element has any annotations.
 boolean isAnnotationPresent(JAnnotationType annotationType)
          Returns true if a JAnnotation exists for the given JAnnotationType.
 JAnnotation removeAnnotation(JAnnotationType annotationType)
          Removes the JAnnotation from this source element for the given JAnnotationType.
 

Method Detail

getAnnotation

JAnnotation getAnnotation(JAnnotationType annotationType)
Retrieves a JAnnotation for the given JAnnotationType, returns null if no annotation has been set.

Parameters:
annotationType - Annotation type to retrieve.
Returns:
A JAnnotation for the given JAnnotationType.

getAnnotations

JAnnotation[] getAnnotations()
Returns a list of JAnnotation's already set on this source element.

Returns:
A list of all JAnnotations associated with this source element.

isAnnotationPresent

boolean isAnnotationPresent(JAnnotationType annotationType)
Returns true if a JAnnotation exists for the given JAnnotationType.

Parameters:
annotationType - Annotation type to check for presence or absense.
Returns:
True if a JAnnotation has been added for the given JAnnotationType.

addAnnotation

void addAnnotation(JAnnotation annotation)
Adds a JAnnotation to this source element. An IllegalArgumentException is thrown if one already exists for the associated JAnnotationType.

Parameters:
annotation - A JAnnotation to add to this source element.

removeAnnotation

JAnnotation removeAnnotation(JAnnotationType annotationType)
Removes the JAnnotation from this source element for the given JAnnotationType. An IllegalArgumentException is thrown if the provided JAnnotation isn't present.

Parameters:
annotationType - Annotation type to remove.
Returns:
The JAnnotation that was associated with this source element.

hasAnnotations

boolean hasAnnotations()
Returns true if this source element has any annotations.

Returns:
Returns true if this source element has any annotations.


Copyright © 2011. All Rights Reserved.