Hi,
I'm trying to save information from several pointcut. More precise: I try to
catch method call that eventually will match some conditions, write it to a
class called DetailedSignature implements Serializable and save that
information in one place.
As far as I - as aspectJ-newbie - understood, I cannot open a file for the
whole life of an aspect, as there is no constructor. Therefore I tried to
use an ObjectOutputStream like this:
pointcut methodWithReturnValue() : (execution(!void
*.*(..))&&(!within(org.test.serversimulation.DetailedSignature))
&&(!within(org.test.serversimulation.SignatureCracker))
&&(!within(junit.*)));
after() returning(Object o) :
methodWithReturnValue() {
try {
File testDataFile = new
File("serializedTest.data");
FileOutputStream fout = new
FileOutputStream(testDataFile,
true);
ObjectOutputStream oos = new
ObjectOutputStream(fout);
oos.writeObject(detailedSignature);
oos.flush();
oos.close();
System.out.println("wrote
detailedSignature
"+detailedSignature.toString());
}
catch (Exception e) { e.printStackTrace();
}
}
The program runs fine and I actually can see the data I want in the file.
But when I try to read it, I get the exception:
java.io.StreamCorruptedException: invalid type code: AC
Now I searched and found that this always seems to happen when trying to
append to an ObjectOutputStream multiple times
(http://forums.sun.com/thread.jspa?threadID=5177084)
Now I'm a bit at a loss. I was thinking of trying to write kind of
bruteforce the information to a text file and based on that read and
recreate the object manually, but that is certainly not very flexible.
Does anyone know a way how to keep the outputstream open and pass it to
several matches of the pointcut?
Or would you know a more elegant strategy of saving objects from within
several matches of a pointcut?
Thanks for help
Mark
(start of the file with captured method
¬í sr +org.test.serversimulation.DetailedSignature˜Ë±W„çÅ
Z isLiteralValueL allmodifierst Ljava/lang/String;L
callingobjectClassnameq ~ L callingobjectMethodNameq ~ L
callingobjectPackageq ~ L callingobjectPackageAndClassq ~ L
callingobjectParametersq ~ L modifierst Ljava/util/ArrayList;L
parametersq ~ L returnValueClassq ~ L returnValuePackageq ~ L
returnValuePackageAndClassq ~ L signatureLongStringq ~
... all methods catched appear in the file.
--
View this message in context:
http://www.nabble.com/Saving-information-from-several-pointcuts-to-an-ObjectOutputStream-tp22111630p22111630.html
Sent from the AspectJ - users mailing list archive at Nabble.com.
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users