ObjectInput
slv Jan 22, 2009 6:48 AMHello,
I am currently playing around with JBoss AOP, but I can't seem to make my pointcuts work.
This is the xml file:
<aop>
<aspect class="main.Aspect" />
<bind pointcut="execution(void $instanceof{java.io.ObjectOutput}->writeObject($instanceof{java.lang.Object}))">
<around aspect="main.Aspect" name="secureWrite" />
</bind>
<bind pointcut="execution($instanceof{java.lang.Object} $instanceof{java.io.ObjectInput}->readObject())">
<around aspect="main.Aspect" name="secureRead" />
</bind>
</aop>
My Aspect class is this:
package main;
import org.jboss.aop.joinpoint.MethodInvocation;
public class Aspect {
private final SecureCommunication secure;
public Aspect() {
secure = new SecureCommunicationRSA();
}
public Object secureWrite(MethodInvocation invocation) throws Throwable {
System.out.println("Writing secure");
Object[] args = invocation.getArguments();
for (int i = 0; i < args.length; i++) {
args = secure.encrypt(args);
}
return invocation.invokeNext();
}
public Object secureRead(MethodInvocation invocation) throws Throwable {
System.out.println("Reading secure");
return secure.decrypt(invocation.invokeNext());
}
}
And the class I want to instrument is this:
package main;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class Main {
/**
* @param args
*/
public static void main(String[] args) throws IOException,
ClassNotFoundException {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream(
new File("test")));
out.writeObject("this");
out.writeObject("is");
out.writeObject("a test");
out.close();
ObjectInput in = new ObjectInputStream(new FileInputStream(new File(
"test")));
System.out.println(in.readObject());
System.out.println(in.readObject());
System.out.println(in.readObject());
}
}
When I try to apply the aspects, I get the following message
[aop-debug] org.jboss.aop.instrument.Instrumentor trying to transform main.Main
[aop-debug] org.jboss.aop.instrument.CallerTransformer There are no caller pointcuts!
[aop-debug] org.jboss.aop.instrument.JoinpointSimpleClassifier javassist.CtMethod@44a4fe33[public static main ([Ljava/lang/String;)V] matches no pointcuts
[aop-debug] org.jboss.aop.instrument.JoinpointSimpleClassifier javassist.CtConstructor@176e552[public Main ()V] matches no pointcuts
[aop-debug] org.jboss.aop.instrument.Instrumentor was main.Main converted: false
[no comp needed] /home/slv/Desktop/EncryptionTest/classes/main/Main.class
Can you please help me? I tried so many things and I can't make it work.
Thank you,
Silviu