[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] Saving information from several pointcuts to an ObjectOutputStream
|
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.