[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RES: RES: [aspectj-users] Declare error
|
Nick,
My problem is that I would like to declare an error if the default
constructor isn't declared explicitly, like example bellow. I think it is
not possible...
class A extends MainClass {
A() {} // ok
}
class B extends MainClass {
// error, default constructor not declared
}
-----Mensagem original-----
De: aspectj-users-admin@xxxxxxxxxxx [mailto:aspectj-users-admin@xxxxxxxxxxx]
Em nome de Nicholas Lesiecki
Enviada em: terça-feira, 30 de março de 2004 00:39
Para: aspectj-users@xxxxxxxxxxx
Assunto: Re: RES: [aspectj-users] Declare error
The problem with this solution is that it will flag any non-default
constructor. Thus the implementation of BadA below should be ok (it has a
default constructor) but is incorrectly flagged by aspect C.
I don't think this can be done at compile time with the current compiler.
The problem is that declare warning/error flags individual offensive join
point. The error you are attempting to detect is the lack of a join point
(default constructor) in a set of join points (constructors of a given
class). I think Ron's solution is the best so far.
Cheers,
Nick
public class Andre {
public static void main(String[] args) {}
static class A {}
static class GoodA extends A { GoodA() {} }
static class BadA extends A {
BadA(String s) {}
BadA(){}//whoops! This should be OK!
}
static class WhoCares1 { WhoCares1() {} }
static class WhoCares2 { WhoCares2(String s) {} }
static aspect C {
pointcut p():
execution(A+.new(..)) && !execution(A+.new());
declare error: p() : "boooo!";
}
}
On Mar 29, 2004, at 1:47 PM, Jeffrey Palm wrote:
> André Dantas Rocha wrote:
>
>> Hi Jitesh,
>> The problem is that I would like to do this in compile time, using
>> errors or warnings... Andre -----Mensagem original-----
>> De: aspectj-users-admin@xxxxxxxxxxx
>> [mailto:aspectj-users-admin@xxxxxxxxxxx]
>> Em nome de JITESH KALYANI Shivanand
>> Enviada em: sexta-feira, 26 de março de 2004 16:41
>> Para: aspectj-users@xxxxxxxxxxx
>> Assunto: RE: [aspectj-users] Declare error HI, I have tried small
>> example. We can have poincut to constructor and check if it is
>> default constructor OR prameterised constructor. If it is
>> prameterised constructor, throw error. See if this u want.
>> class constructorTest {
>> int a = 0;
>> public static void main(String[] args) {
>> constructorTest obj1 = new constructorTest();
constructorTest
>> obj2 = new constructorTest(10);
>> System.out.println("Program Over!");
>> }
>>
>> public constructorTest() {
>> System.out.println("Executing Default Constructor");
>> }
>>
>> public constructorTest(int a) {
>> this.a = a;
>> System.out.println("Executing parameterised Constructor : a
= "+a);
>> }
>> }
>> aspect testaspect
>> {
>> pointcut myConstructor() : within(constructorTest) &&
>> execution(constructorTest+.new(..));
>> before (): myConstructor() {
>> Object[] args = thisJoinPoint.getArgs();
>> if(args.length == 0) {
>> System.out.println("Default Constructor");
>> }else {
>> System.out.println("Parameterised Constructor");
>> //throw error.
>> }
>> }
>> }
>> Jitesh
>>> ----------
>>> From:
>> aspectj-users-admin@xxxxxxxxxxx[SMTP:aspectj-users-admin@xxxxxxxxxxx]
>> on
>> behalf of André Dantas Rocha[SMTP:ad-rocha@xxxxxxxxxx]
>>> Reply To: aspectj-users@xxxxxxxxxxx
>>> Sent: Friday, March 26, 2004 5:17 PM
>>> To: aspectj-users@xxxxxxxxxxx
>>> Subject: RES: [aspectj-users] Declare error
>>>
>>> I don't know how to....
>>>
>>> _____
>>>
>>> De: aspectj-users-admin@xxxxxxxxxxx
>>> [mailto:aspectj-users-admin@xxxxxxxxxxx] Em nome de Nicholas
>>> Lesiecki Enviada em: sexta-feira, 26 de março de 2004 01:51
>>> Para: aspectj-users@xxxxxxxxxxx
>>> Assunto: Re: [aspectj-users] Declare error
>>>
>>>
>>> Possibly. Can you write an attempt at doing this and submit it to
>>> the
>> list?
>>> Nick
>>> On Mar 25, 2004, at 12:53 PM, André Dantas Rocha wrote:
>>>
>>>
>>>
>>> Hi,
>>> I would like to declare an error if any subtype of ClassA do not
>>> have a
>> default constructor.
>>> Is it possible?
>>> Thanks
>>>
>>>
>>>
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> http://dev.eclipse.org/mailman/listinfo/aspectj-users
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> http://dev.eclipse.org/mailman/listinfo/aspectj-users
>
> Try this:
>
> public class Andre {
>
> public static void main(String[] args) {}
>
> static class A {}
> static class GoodA extends A { GoodA() {} }
> static class BadA extends A { BadA(String s) {} }
> static class WhoCares1 { WhoCares1() {} }
> static class WhoCares2 { WhoCares2(String s) {} }
>
> static aspect C {
> pointcut p():
> execution(A+.new(..)) && !execution(A+.new());
> declare error: p() : "boooo!";
> }
> }
>
> Jeff
>
> --
> Jeffrey Palm --> http://www.ccs.neu.edu/home/jpalm
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users