2 Replies Latest reply on Feb 25, 2009 6:06 PM by andre1001

    Freemarker and annotations

    andre1001

      Hi,


      I'm generating view code from Pojos and I was think about using annotations as a more flexible method to do that.


      Pojo:



      @Entity
      public class Acesso implements Serializable
      {
         private static final long serialVersionUID = -167586088947004386L;
      
         @Id @GeneratedValue
         private Integer id;
         private Usuario usuario;
      
         @RestricaoComEmpresa
         @ManyToOne
         @JoinColumn(name = "id_empresa")
         private Empresa empresa;
         private String introducao;
      
      ...............
      



      Now, I'm trying to access annotation from my Pojos this way:



      "entrou ${componentName} ${property.name}"
      ${pojo.decoratedObject.mappedClass.getDeclaredField(property.name).declaredAnnotations?size} 
      



      which results this:


            "entrou acesso id" 
           0 
            "entrou acesso autorizado" 
           0 
            "entrou acesso autorizado_por" 
           0 
            "entrou acesso desautorizado_por" 
           0 
            "entrou acesso empresa" 
           0 
            "entrou acesso introducao" 
           0 
      




      1) Why there's no annotations on my Field?


      2) Is there a better way to access annotations from my Field definitions?


      Thanks.

        • 1. Re: Freemarker and annotations
          andre1001

          It's working. My Build Automatically option was disabled and I was working with an older bytecode.


          Now, how can FreeMarker understand that RestricaoComEmpresa is not an expression?


          ${pojo.decoratedObject.mappedClass.getDeclaredField(property.name).isAnnotationPresent(RestricaoComEmpresa.class)}
          



          Error:



          freemarker.core.InvalidReferenceException: Expression RestricaoComEmpresa is undefined on line 29, column 96 in src/EntityList.java.ftl.
               at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
               at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134)
               at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)
               at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
               at freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:86)


          • 2. Re: Freemarker and annotations
            andre1001