From: aclement Date: Thu, 14 Sep 2006 13:48:06 +0000 (+0000) Subject: testcode for 157054 - random matching (!!) with pointcuts matching on get of annotate... X-Git-Tag: BEFORE_133532~53 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=359ef5055a0cfa1f16bf7e0de8d4a001dcdda542;p=aspectj.git testcode for 157054 - random matching (!!) with pointcuts matching on get of annotated fields --- diff --git a/tests/multiIncremental/PR157054/base/dash/obtain/Obtain.java b/tests/multiIncremental/PR157054/base/dash/obtain/Obtain.java new file mode 100644 index 000000000..64e3b7910 --- /dev/null +++ b/tests/multiIncremental/PR157054/base/dash/obtain/Obtain.java @@ -0,0 +1,46 @@ +/* +* Copyright (C) 2005 John D. Heintz +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Library General Public License +* as published by the Free Software Foundation; either version 2.1 +* of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Library General Public License for more details. +* +* John D. Heintz can be reached at: jheintz@pobox.com +*/ +package dash.obtain; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * The @Obtain annotation provides a marker for fields that will be "obtain"-ed at + * runtime based on lookups to the ProviderService service. See the ObtainLookup class + * for documentation of the details about the annotated field that is provided to the + * Provider service. + * + *

An AspectJ Aspect is used to control the interception of field accesses and + * provide the binding behavior into the ProviderService service. The AspectJ pointcut + * used is: + *

pointcut obtain_get(): get(@Obtain * *);
+ * + *

If the ProviderService service fails to correctly Obtain a target object + * a NullPointerException will be thrown into the code accessing the field. + * + *

A single field will be obtained once per instance. + * + * @see dash.obtain.provider.ProviderService + * @see dash.obtain.provider.ObtainLookup + * @throws java.lang.NullPointerException + * @author jheintz + * + */ +@Retention(RetentionPolicy.RUNTIME) +public @interface Obtain { + public String value() default ""; +} diff --git a/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticAspect.aj b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticAspect.aj new file mode 100644 index 000000000..eff8dfc6d --- /dev/null +++ b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticAspect.aj @@ -0,0 +1,16 @@ +package dash.obtain; + + +public aspect ObtainStaticAspect { + + pointcut obtain_get(): get(@Obtain static * *); + + Object around(): obtain_get() { + return proceed(); + } + + public void foo() { + //System.out.println("foo: "+ObtainStaticTestClass.foo); + } + +} diff --git a/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTest.java b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTest.java new file mode 100644 index 000000000..d257c2f08 --- /dev/null +++ b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTest.java @@ -0,0 +1,60 @@ +/* +* Copyright (C) 2005 John D. Heintz +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Library General Public License +* as published by the Free Software Foundation; either version 2.1 +* of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Library General Public License for more details. +* +* John D. Heintz can be reached at: jheintz@pobox.com +*/ +package dash.obtain; + + +public class ObtainStaticTest { + + @Obtain static String bar2; + + public void testRegularFieldNull() throws Exception { + try { + ObtainStaticTestClass.baz.length(); + fail("should have null pointered"); + } catch (NullPointerException ex) { + ;// noop + } + } + + public void fail(String s) {} + + /** + * + * @throws Exception + */ + public void testNullPointerException() throws Exception { + try { + String bar = ObtainStaticTestClass.bar; + //System.out.println("bar2:"+ObtainStaticTest.bar2); + fail(bar); + } catch (NullPointerException ex) { + ;// noop + } + } + + /** + * + * @throws Exception + */ + public void testBasicObtain() throws Exception { + // set @Obtain-able value to "foo" String + //provider.setObtainableValue(ObtainStaticTestClass.class, "foo", "foo"); + + assertEquals("foo", ObtainStaticTestClass.foo); + } + +public void assertEquals(Object a,Object b) {} +} diff --git a/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTestClass.java b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTestClass.java new file mode 100644 index 000000000..b8f714b43 --- /dev/null +++ b/tests/multiIncremental/PR157054/base/dash/obtain/ObtainStaticTestClass.java @@ -0,0 +1,27 @@ +/* +* Copyright (C) 2005 John D. Heintz +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Library General Public License +* as published by the Free Software Foundation; either version 2.1 +* of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Library General Public License for more details. +* +* John D. Heintz can be reached at: jheintz@pobox.com +*/ +package dash.obtain; + +public class ObtainStaticTestClass { + + @Obtain static String foo; + @Obtain static String bar; + static String baz; + + public void foo() { + //System.out.println("foo: "+ObtainStaticTestClass.foo); + } +} diff --git a/tests/multiIncremental/PR157054/inc1/dash/obtain/ObtainStaticTest.java b/tests/multiIncremental/PR157054/inc1/dash/obtain/ObtainStaticTest.java new file mode 100644 index 000000000..366f37b04 --- /dev/null +++ b/tests/multiIncremental/PR157054/inc1/dash/obtain/ObtainStaticTest.java @@ -0,0 +1,60 @@ +/* +* Copyright (C) 2005 John D. Heintz +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU Library General Public License +* as published by the Free Software Foundation; either version 2.1 +* of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Library General Public License for more details. +* +* John D. Heintz can be reached at: jheintz@pobox.com +*/ +package dash.obtain; + + +public class ObtainStaticTest { + + @Obtain static String bar2; + + public void testRegularFieldNull() throws Exception { + try { + ObtainStaticTestClass.baz.length(); + fail("should have null pointered"); + } catch (NullPointerException ex) { + ;// noop + } + } + + public void fail(String s) {} + + /** + * + * @throws Exception + */ + public void testNullPointerException() throws Exception { + try { + String bar = ObtainStaticTestClass.bar; + System.out.println("bar2:"+ObtainStaticTest.bar2); + fail(bar); + } catch (NullPointerException ex) { + ;// noop + } + } + + /** + * + * @throws Exception + */ + public void testBasicObtain() throws Exception { + // set @Obtain-able value to "foo" String + //provider.setObtainableValue(ObtainStaticTestClass.class, "foo", "foo"); + + assertEquals("foo", ObtainStaticTestClass.foo); + } + +public void assertEquals(Object a,Object b) {} +}