2016-11-01 1 views
0

Ich bin neu in Java und Javassist. Ich würde gerne einen Logger vor jedem Lesezugriff auf eine meiner primitiven Variablen in bestimmten Methoden hinzufügen. Nach einigen Recherchen kam ich mit diesem Code auf:Javassist insturmenter

try { 
method.instrument(
     new ExprEditor() { 
      public void edit(FieldAccess fa) throws CannotCompileException { 
       CtField field = null; 
       CtClass fieldType = null; 
       try { 
        field = fa.getField(); 
        fieldType = field.getType(); 
       } catch (NotFoundException e) { 
        e.printStackTrace(); 
       } 
       if (fa.isReader() && field != null && fieldType.isPrimitive()){ 
        System.out.println("Primitive found: " + field.getName()); 

        //ToDo: call method before variable access 
        fa.replace("{ $_ = $proceed($$); }"); 
       } 
      } 
     } 
    ); 
} catch (CannotCompileException e) { 
    e.printStackTrace(); 
} 

Gibt es eine Möglichkeit, einen (Logger) -Methode vor der Variablen aufrufen zugegriffen wird, oder muss ich dies auf eine andere Weise lösen? Was ist der beste Weg, dies zu erreichen, indem Sie Javassist verwenden?

Hoffnung jemand kann mir helfen :)

Antwort

0

Sie normale Logger-Objekt verwenden, kann der Logger Methoden aufrufen. Stellen Sie jedoch sicher, dass Sie den JAR-Klassenpfad in der Manifestdatei angeben.

Verwandte Themen