Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] declare question

i just discovered that when i build the project manually it doesn't give any error but eclipse always signals the error in because if its automatic build. but since this is an aspectj project shouldnt the auto build be compiling aspectj? More, shouldn't the builds be the same?

On Dec 14, 2007 12:31 AM, Renato Rodrigues <renatolmsrodrigues@xxxxxxxxx> wrote:
I already had the interface Ola if that's what you mean, i just forgot to write it here.
I have AspectJ 1.5

I could make this work if i create an aspect and put all the code in the same aspect but if i try to separate in 3 different classes

if i put this code in one aspect it works
    interface Ola {}
   
    class Client {
       
        public Client(){}

       
           public void aux() {
               Ola o = new Client();
           }
        }
        public aspect X {


          declare parents: Client implements Ola;
        }

but if create an aspect X, an interface Ola and a class Client it doesn't work... i can't understand why

I tried cleaning the project but the same happened.


On Dec 13, 2007 11:44 PM, Andy Clement < andrew.clement@xxxxxxxxx> wrote:
You wouldn't need the cast compiling this java:

interface Ola {}
class Client implements Ola {

   public void aux() {
       Ola o = new Client();
   }

}

So you don't need the cast if you pull out the implements into an aspect:

interface Ola {}
class Client {

   public void aux() {
       Ola o = new Client();
   }

}
aspect X {

  declare parents: Client implements Ola;
}

Since the type hierarchy is entirely consistent for this program once the declare parents has been applied.

If you are doing a fresh compile from source, the code above will be fine.  There are some issues with incremental compilation and interype declarations like the declare parents statement - to see if that is what is affecting you, do a project clean - does it now compile cleanly?

The only time the above set of declarations wont work together is if you compiled pieces of the program separately, for example compiling Ola and Client without the aspect - that would require the cast.

Did you try putting the code I included in a source file to see if that works for you?  What level of AspectJ/AJDT are you on, the latest?

In reply to Bhaskar


> I have seen the type cast error happen to me a couple of times before,
> I never verified if it was due to the eager parsing by the editor the
> typecast seemed to make sense to me and I put it in there.

If you are in the AspectJ Editor for the files, that editor is aware of intertype declarations.  If you see this problem in that case then it may be an incremental compilation problem - which, as I mentioned above, we can determine by doing a project clean and observing whether the problem vanishes.


Andy.

On 13/12/2007, Renato Rodrigues <renatolmsrodrigues@xxxxxxxxx > wrote:
For me it only works if i do the cast Bhaskar Maddala suggested.Is this normal?



I'm within an eclipse project so i just save and it compiles alone. Didn't understand your question, sorry.

If i defined the aspect like :

aspect example{

   public interface Ola{};
    declare parents: Client implements Ola;

}

and still continue with the same code in class Client is it normal that it gives and error saying  "Ola cannot be resolved to a type"


On Dec 13, 2007 9:06 PM, Andy Clement < andrew.clement@xxxxxxxxx> wrote:
I'm not quite sure what you are doing, but that program compiles fine for me:

---- Client.java ---- 8<----
interface Ola {}

public class Client {
   Client(){};

   public int num1(){
       return 1;
   }

   public void aux()
   {
       Ola o = new Client();
   }
}

 aspect example{


    declare parents: Client implements Ola;

}
---- Client.java ---- 8<----

C:\aspectj1.5-dev>ajc -showWeaveInfo Client.java
Extending interface set for type 'Client' (Client.java) to include
'Ola' (Client.java)

Are you compiling all from source? are you binary weaving in some way?
it should be fine.  You *might* get a eager parsing bug in the eclipse
editor as it isnt aware the aspect will make everything alright at
compile time?

Andy.

On 13/12/2007, Renato Rodrigues < renatolmsrodrigues@xxxxxxxxx> wrote:
> Im a newbie to AspectJ and i'm trying to do a simple declare parents
> _expression_ so a Class can implement an interface
>
> i have class:
>
>
> public class Client {
>     Client(){};
>
>     public int num1(){
>         return 1;
>     }
>
>     public void aux()
>     {
>         Ola o = new Client();
>     }
> }
> and aspect :
>
>
> public aspect example{
>
>
>      declare parents: Client implements Ola;
>
> }
>
>
> and the compiler says Type mismatch: cannot convert from Client to Ola
>
> _______________________________________________
> 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



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users




Back to the top