Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] compilation checks

Hi,

 

I try to define aspects for checking a development rule:

This rule is that on a child of a class (MotherClass), all the method beginning with “mm” have to call a method (which signature is “void checkCredentials(String)) in their body.

 

A solution for that consists of using the Advice before instead of the rule. But at this time we won’t use AOP in production.

 

In fact the child classes are facades and we want to be sure that security code will be called ever we call a façade method.

 

I don’t succeed in writing the good aspect. At this time I try to find a solution based on static check with “declare error”.

 

My classes are:

 

package net.kernevez;

public abstract class Mother {

            public void checkCredentials( String pRole)        {

                        if (pRole == null) {

                                   //My code that absolutely need to be called

                        }

            }

}

 

package net.kernevez;

public class AnyChild extends Mother {

            public void mmBadMethod(){

                        System.out.println("ytyt");

            }

            public void mmGoodMethod()     {

                        checkCredentials(null);

                        System.out.print("ytyt");

            }

            public void mGoodMethod() {

                        System.out.print("ytyt");

            }

            public void mmGoodMethod2()   {

                        System.out.print("uyiuy");

                        checkCredentials(null);

            }

}

 

The declaration and point cut are:

 

            pointcut allMethodToCheck() : within( net.kernevez.Mother+ ) && execution( * mm*(..));

pointcut allMethodWithCredential() : within( net.kernevez.Mother+ ) && call(* checkCredentials(String));

           

            declare error : allMethodToCheck()&&!allMethodWithCredential() : "In method called 'mm*' you need to call checkCredentials()";

 

The result isn’t that I expected.

 

Has somebody an idea to solve my problem ?

 

 

Thanks,

 

Philippe Kernévez

 


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.742 / Virus Database: 495 - Release Date: 19/08/2004


Back to the top