入力として文字列を受け取るメソッドがあり、アスペクトがメソッドの実行をインターセプトし、特定の条件で文字列を変更し、結合ポイントが新しい入力を受け取るようにしたいので、わかりません変形したということです。
これは可能ですか、それともセキュリティ上の理由で不可能ですか?
AspectJ を使用すると、次のようにアラウンド アドバイスを宣言できます。
public aspect TransformationAspect {
pointcut transform(String s) : call(* yourMethodName(..)) && args(s);
Object around(String s): transform(s) {
// ... Transform String here
return proceed(s);
}
}
コードは、コンパイル時または実行時に AspectJ Java エージェントを使用して実装する必要があります。
これは可能ですが、使用する AOP テクノロジによって異なります。
EJB 3.x または CDI では、次の疑似コードのようになります。
Object intercept( InvocationContext context ) {
Object[] params = context .getParameters();
//modify the string and update the array
//the value of i depends on the method signature (the parameter position)
//and getting it is left for you as an excersise
params[i] = modify( (String)params[i] );
context.setParameters( params );
return context.proceed();
}