> Hi there,
>
> It would be best if you could raise a bug for this. What you are
> seeing is not the intended behavior. Thanks.
>
> Andy is away right now until Thursday, but he will be able to look at
> this when he returns.
>
> --a
>
> On Mon, Aug 31, 2009 at 5:21 AM, <
jeanlouis.pasturel@xxxxxxxxxxxxxxxxxx> wrote:
>> Perhaps there is confusion with the reserved Aspectj word thisJoinPoint used
>> in jour advice @Around.
>>
>> I don’t know it is a bug ; I let AspectJ gurus answer when they will come
>> back from holidays ;-)
>>
>>
>>
>> Cordialement / Best regards
>>
>>
>>
>> Jean-Louis Pasturel
>>
>> ________________________________
>>
>> De :
aspectj-users-bounces@xxxxxxxxxxx
>> [mailto:
aspectj-users-bounces@xxxxxxxxxxx] De la part de João Gonçalves
>> Envoyé : lundi 31 août 2009 14:11
>> À :
aspectj-users@xxxxxxxxxxx
>> Objet : Re: [aspectj-users] [BUG?] java.lang.VerifyError with
>> @AspectJannotation (but with a certain call to print, it works!?)
>>
>>
>>
>> Execution solves the problem!!
>>
>> Many thanks.
>>
>> But, still, shouldn't this be considered a bug? I mean, if I use the
>> "traditional" aspect notation, everything goes as planned. And the fact that
>> adding the prints, solves the problem is also weird...
>>
>> Should I resport a bug?
>>
>> Thanks.
>>
>> On Mon, Aug 31, 2009 at 1:01 PM, <
jeanlouis.pasturel@xxxxxxxxxxxxxxxxxx>
>> wrote:
>>
>> Sorry João,
>>
>> I have not read your entire post correctly.
>>
>> Did you try with an “execution” pointcut ( not a call) ?
>>
>>
>>
>> Cordialement / Best regards
>>
>>
>>
>> Jean-Louis Pasturel
>>
>> ________________________________
>>
>> De :
aspectj-users-bounces@xxxxxxxxxxx
>> [mailto:
aspectj-users-bounces@xxxxxxxxxxx] De la part de João Gonçalves
>> Envoyé : lundi 31 août 2009 12:58
>>
>> À :
aspectj-users@xxxxxxxxxxx
>>
>> Objet : Re: [aspectj-users] [BUG?] java.lang.VerifyError with
>> @AspectJannotation (but with a certain call to print, it works!?)
>>
>>
>>
>> Unfortunately, that's not the problem. With or without the blank the same
>> happens.
>>
>> Regards.
>>
>>
>>
>> On Mon, Aug 31, 2009 at 9:03 AM, <
jeanlouis.pasturel@xxxxxxxxxxxxxxxxxx>
>> wrote:
>>
>> Perhaps a blank misses in the annoted pointcut :
>>
>> @Pointcut("call(public void figures.FigureElement+.move(int, int))"
>>
>> +"<blank>&& target(fe) && args(dx, dy)")
>>
>>
>>
>> Cordialement / Best regards
>>
>>
>>
>> Jean-Louis Pasturel
>>
>>
>>
>> ________________________________
>>
>> De :
aspectj-users-bounces@xxxxxxxxxxx
>> [mailto:
aspectj-users-bounces@xxxxxxxxxxx] De la part de João Gonçalves
>> Envoyé : lundi 31 août 2009 09:45
>> À :
aspectj-users@xxxxxxxxxxx
>> Objet : [aspectj-users] [BUG?] java.lang.VerifyError with @AspectJannotation
>> (but with a certain call to print, it works!?)
>>
>>
>>
>> Hi,
>>
>> I'm using Eclipse 3.4.1, AspectJ 1.6.5 and AJDT 2.0.0.
>>
>> I've created a very simple test scenario that utilizes @AspectJ. When
>> running a main method in a class or when running a Junit test, I get the
>> following error:
>>
>>
>>
>> Exception in thread "main" java.lang.VerifyError: (class: figures/Line,
>> method: move_aroundBody3$advice signature:
>> (Lfigures/Line;Lfigures/Point;IILorg/aspectj/lang/JoinPoint;Lanswers/Answer2h;Lorg/aspectj/lang/ProceedingJoinPoint;Lfigures/FigureElement;II)V)
>> Incompatible argument to function
>> at MainTest.main(MainTest.java:24)
>>
>> Here's the aspect that is causing the error
>>
>> ===============================================================
>>
>> Answer2h.java
>>
>> ===============================================================
>>
>> package answers;
>>
>> import org.aspectj.lang.ProceedingJoinPoint;
>> import org.aspectj.lang.annotation.*;
>> import figures.*;
>> import java.awt.Rectangle;
>>
>> @Aspect
>> public class Answer2h {
>> @Pointcut("call(public void figures.FigureElement+.move(int, int))"
>> +"&& target(fe) && args(dx, dy)")
>> void movingFigureElement(FigureElement fe, int dx, int dy) {}
>>
>> @Around("movingFigureElement(fe, dx, dy)")
>> public void checkIfBoundsMovedSame(ProceedingJoinPoint thisJoinPoint,
>> FigureElement fe, int dx, int dy) throws Throwable {
>> Rectangle rectangleBefore = new Rectangle(fe.getBounds());
>> thisJoinPoint.proceed(new Object[]{fe, dx, dy});
>> rectangleBefore.translate(dx, dy);
>> if(!rectangleBefore.equals(fe.getBounds()))
>> throw new IllegalStateException("move() invariant violation");
>> }
>> }
>> ===============================================================
>>
>> However, strangely, when I had the following 3 lines to my aspect (I was
>> just doing debug), everything works normally:
>>
>> ===============================================================
>>
>> Answer2h.java (with 3 more lines)
>>
>> ===============================================================
>>
>> package answers;
>>
>> import org.aspectj.lang.ProceedingJoinPoint;
>> import org.aspectj.lang.annotation.*;
>> import figures.*;
>> import java.awt.Rectangle;
>>
>> @Aspect
>> public class Answer2h {
>> @Pointcut("call(public void figures.FigureElement+.move(int, int))"
>> +"&& target(fe) && args(dx, dy)")
>> void movingFigureElement(FigureElement fe, int dx, int dy) {}
>>
>> @Around("movingFigureElement(fe, dx, dy)")
>> public void checkIfBoundsMovedSame(ProceedingJoinPoint thisJoinPoint,
>> FigureElement fe, int dx, int dy) throws Throwable {
>> Rectangle rectangleBefore = new Rectangle(fe.getBounds());
>>
>> for(Object o: thisJoinPoint.getArgs()) {
>> System.out.print(o+" ");
>> }
>>
>> thisJoinPoint.proceed(new Object[]{fe, dx, dy});
>> rectangleBefore.translate(dx, dy);
>> if(!rectangleBefore.equals(fe.getBounds()))
>> throw new IllegalStateException("move() invariant violation");
>> }
>> }
>> ===============================================================
>>
>> ????
>>
>> If I use any other print (and comment the privous print), the code continues
>> giving the same error...
>>
>> Examples (that don't work):
>>
>> // System.out.println("ENTERED");
>> // System.out.println("Kind: "+thisJoinPoint.getKind());
>> // System.out.println("Signature: "+thisJoinPoint.getSignature());
>> // System.out.println("This: "+thisJoinPoint.getThis());
>> // System.out.println("Target: "+thisJoinPoint.getTarget());
>>
>> Another interesting thing (that makes me believe it's some kind of bug).
>> The Answer2h.java is equivalent to this one:
>>
>> ===============================================================
>>
>> Answer2h.aj
>>
>> ===============================================================
>>
>> package answers;
>>
>> import figures.*;
>> import java.awt.Rectangle;
>>
>> public aspect Answer2h {
>> pointcut movingFigureElement(FigureElement figureElement, int dx, int dy):
>> call(public void figures.FigureElement+.move(int, int)) &&
>> target(figureElement) &&
>> args(dx, dy);
>>
>> void around(FigureElement figureElement, int dx, int dy):
>> movingFigureElement(figureElement, dx, dy) {
>> Rectangle rectangleBefore =
>> new Rectangle(figureElement.getBounds());
>> proceed(figureElement, dx, dy);
>> rectangleBefore.translate(dx, dy);
>> if(!rectangleBefore.equals(figureElement.getBounds()))
>> throw new IllegalStateException("move() invariant violation"); }
>> }
>> ===============================================================
>>
>> But this latter works!!
>>
>> Can anyone tell me how to fix this?
>>
>> Thanks.
>>
>> Here's the MainTest.java code (not sure if it helps):
>>
>> ===============================================================
>>
>> MainTest.java
>>
>> ===============================================================
>>
>> import figures.Box;
>> import figures.FigureElement;
>> import figures.Group;
>> import figures.Line;
>> import figures.Point;
>> import figures.SlothfulPoint;
>>
>>
>> public class MainTest {
>>
>> /**
>> * @param args
>> */
>> public static void main(String[] args) {
>> Box bb;
>> Point p1;
>> Point p2;
>> Line l1;
>> SlothfulPoint sloth1;
>> Group g;
>>
>> p1 = new Point(10, 100);
>> p2 = new Point(20, 200);
>> l1 = new Line(p1, p2); // line of the error
>> bb = new Box(5, 5, 10, 10);
>> sloth1 = new SlothfulPoint(0, 0);
>> g = new Group(p1);
>>
>> FigureElement fe = new SlothfulPoint(10, 10);
>> try {
>> fe.move(10, 10);
>> System.out.println("should have thrown IllegalStateException");
>> } catch (IllegalStateException e) { e.printStackTrace(); }
>>
>> p1.move(30, 45);
>> p2.move(10, 33);
>> }
>>
>> }
>>
>> ===============================================================
>>
>> P.S.:
>>
>> When I use the MainTest.java to lauch the example, inside Answer2h.java I
>> have to use this call to proceed:
>>
>> thisJoinPoint.proceed(new Object[]{fe, dx, dy});
>>
>> But, when I use the JUnit, the test oly runs if I use :
>>
>> thisJoinPoint.proceed(new Object[]{fe, fe, dx, dy});
>>
>> Why? Shouldn't the call be the same? And shouldn't the latter be the correct
>> one ({target + 3 parameters})?
>>
>> Regards.
>>
>> *********************************
>> This message and any attachments (the "message") are confidential and
>> intended solely for the addressees.
>> Any unauthorised use or dissemination is prohibited.
>> Messages are susceptible to alteration.
>> France Telecom Group shall not be liable for the message if altered, changed
>> or falsified.
>> If you are not the intended addressee of this message, please cancel it
>> immediately and inform the sender.
>> ********************************
>>
>> _______________________________________________
>> aspectj-users mailing list
>>
aspectj-users@xxxxxxxxxxx
>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>>
>> *********************************
>> This message and any attachments (the "message") are confidential and
>> intended solely for the addressees.
>> Any unauthorised use or dissemination is prohibited.
>> Messages are susceptible to alteration.
>> France Telecom Group shall not be liable for the message if altered, changed
>> or falsified.
>> If you are not the intended addressee of this message, please cancel it
>> immediately and inform the sender.
>> ********************************
>>
>> _______________________________________________
>> aspectj-users mailing list
>>
aspectj-users@xxxxxxxxxxx
>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>>
>> *********************************
>> This message and any attachments (the "message") are confidential and
>> intended solely for the addressees.
>> Any unauthorised use or dissemination is prohibited.
>> Messages are susceptible to alteration.
>> France Telecom Group shall not be liable for the message if altered, changed
>> or falsified.
>> If you are not the intended addressee of this message, please cancel it
>> immediately and inform the sender.
>> ********************************
>>
>> _______________________________________________
>> aspectj-users mailing list
>>
aspectj-users@xxxxxxxxxxx
>>
https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
> _______________________________________________
> aspectj-users mailing list
>
aspectj-users@xxxxxxxxxxx
>
https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users