Amit P [http://community.jboss.org/people/apinke] created the discussion

"Adding a Method Annotation not working as expected..."

To view the discussion, visit: http://community.jboss.org/message/629947#629947

--------------------------------------------------------------
Hi All, 

I have a few classes ( in a supplied jar) in which I am trying to mark certain 
specifc methods as "Deprecated" .
I am able to use javassist and add the annotation to the method (code attached 
to the end of this mail) but Eclipse refuses to identify that as a "Deprecated" 
method at compile time.
I decompiled and verified that there is a "@Deprecated" annotation on the 
method. I also used ASM compare between a class in which I added a @Deprecated 
and this class in which javassist  added the annotation and notice one strange 
thing : the access flags are different

"normal" method :
// DEPRECATED
  // access flags 0x20001
  public getName()Ljava/lang/String;
  @Ljava/lang/Deprecated;()
   L0
    LINENUMBER 7 L0
  

javassist annotated method :
   // access flags 0x1
  public getName()Ljava/lang/String;
  @Ljava/lang/Deprecated;()
   L0
    LINENUMBER 7 L0
  

Questions :
1) is there a problem in the way the Annotation is being added ?
2) Cant I add a java.lang.Deprecated annotation to a method ? is there some 
special modifier or instruction to be used to add the inbuilt java Annotations ?

Any help or pointer is appreciated !! 
I tried to make it a "invisibleTag" ,  specify it as "Deprecated" , 
"@Deprecated" but the IDE refuses to treat that as a Deprecated API.

thanks
Pat
----
code snippet :


 CtMethod[] methods = cc.getMethods();
  for (int k = 0; k < methods.length; k++) {
   CtMethod met = methods[k];
    System.out.println("Found Method --> " + met.getName());
    try{
     ClassFile ccFile = cc.getClassFile(); 
     ConstPool constpool = ccFile.getConstPool(); 
     
     AnnotationsAttribute attr = new AnnotationsAttribute(constpool, 
AnnotationsAttribute.visibleTag); 
     Annotation annot = new Annotation("java.lang.Deprecated", constpool);
     attr.addAnnotation(annot); 
     met.getMethodInfo().addAttribute(attr);  
     
     
    }catch(Exception e){
     System.out.println("Skipping method:-->" + met.getName() +"Reason:" + 
e.getMessage() );
    }
  }
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/629947#629947]

Start a new discussion in Javassist at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2062]

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to