[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] AspectJ and inputstream
|
Your before() advice is simply assigning the advice local variable
called 'is', it won't affect the advised location. You could use
around advice to do that.
void around(InputStream is): execution(* bar(..)) && args(is) {
String l = readContents(is);
ByteArrayInputStream bais = new ByteArrayInputStream(l.getBytes());
return proceed(bais);
}
Andy.
2009/1/20 Al Aghili <aaghili@xxxxxxxxxxxxxxxxxx>:
>
>
> Hi,
> I'm having an issue trying to read an inputstream data in my aspect and then
> setting the input stream object to a new object. This doesn't work
>
> Here is the sample code
>
> public class AspectSampleMain {
> public static void main(String[] args) {
> // TODO Auto-generated method stub
> String test = "hello world
> askdjlasdkjaldkjasldkjalsdkjaslkdjalskjdslakjd dsjalkjd";
> ByteArrayInputStream bais = new
> ByteArrayInputStream(test.getBytes());
> InputStream is = bais;
> bar(is);
>
> }
> public static void bar(InputStream is){
> String l = readContent(is);
> System.out.println(l); // l is blank this is wrong because is
> has been read.
> }
> }
> Here is my aspect
> public aspect AspectSample {
> pointcut sample(java.io.InputStream is):
> execution(* AspectSampleMain.bar( .. ))
> && args(is);
>
> before (java.io.InputStream is):sample(is){
>
> String l = readContent(is);
> ByteArrayInputStream bais = new
> ByteArrayInputStream(l.getBytes());
> is = bais;
>
> }
> }
>
> This does not work as the "is" does not get set to bais after the aspect
> returns to the bar() code. So the input stream has been read and can't be
> re-read again.
>
> How do I get around this.
>
> Thanks
> Al
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>