2016-11-01 8 views
0

私はJavaとJavassistを初めて使用しています。私は、特定のメソッドで私の原始的な変数のいずれかで各読み取りアクセスの前にロガーを追加したいと思います。いくつかの研究の後、私はこのコードを思い付いた: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(); 
} 

は、変数がアクセスされた、または私は別の方法でこれを解決しなければならないの前に(ロガー)メソッドをコールする方法はありますか? Javassistを使ってこれを達成する最良の方法は何ですか?

希望誰かが私を助けることができます:)

答えて

0

あなたはロガーのメソッドを呼び出すために、通常のロガーオブジェクトを使用することができます。ただし、マニフェストファイルにjarクラスのパスを指定してください。

関連する問題