The steps performed in analyzing an instance variable

The VariableLyrinx.process() method is invoked by the ClassLyrinx. This method has as goal to create an instance of the uk.co.jemos.clanker.components.Variable class and to initialize its attributes with values such as Javadocs, type, name, etc.

These the steps performed by the VariableLyrinx.process() method:

  • For the reasons already seen for classes and methods, this method narrows down the instance of com.sun.tools.javac.Tree object to the type com.sun.tools.javac.Tree.VarDef.
  • The method then proceeds in determining the variable type. There are substantially three instance variable types: instance variables of object type; instance variables of primitive datatypes, and instance variables of an inner class type. The Java compiler returns three different types of Tree objects, one for each variable type. Once the method has determined the instance variable type, this information is set as attribute in the Variable object after one has been created thanks to the ComponentManufactory class.
  • The method then sets the variable name.
  • If the variable was initialized, the method sets this information in the Variable class, as attribute.
  • The method then, similarly to what was done for classes and methods (and more generally for every component) adds the Variable object in the registry maintained by the Amplimet.
  • The method then retrieves the Javadoc comments for this variable from the ThapterImpl object, and sets those comments as attribute in the Variable object.
  • The method sets the modifiers in the Variable object, represented by a collection of strings.
  • For each annotation, invokes the process() method on the Annotation Lyrinx and adds the uk.co.jemos.clanker.components.Annotation object returned to the Variable class as attribute.
  • Finally, the artifact of this method (i.e. the instance of the uk.co.jemos.clanker.components.Variable class) is returned to the client (the ClassLyrinx.process() method)

The attributes made available by the Variable component are the following:

  • The annotations, contained in a collection.
  • The Javadocs, represented by an instance of the uk.co.jemos.clanker.components.VariableComment class.
  • The initial value, represented by an Object type
  • The modifiers, contained in a collection of Strings
  • The unique parent identifier, represented by the hashcode of the Clazz object parent of this instance variable
  • The variable name
  • The variable type, represented by a String which can contain the plain name if the type was in the java.lang package, the fully qualified name otherwise.