]> source.dussan.org Git - aspectj.git/commitdiff
pr113630 testcase added - commented out.
authoraclement <aclement>
Wed, 26 Oct 2005 12:28:26 +0000 (12:28 +0000)
committeraclement <aclement>
Wed, 26 Oct 2005 12:28:26 +0000 (12:28 +0000)
tests/bugs150/pr113630/Bean.java [new file with mode: 0644]
tests/bugs150/pr113630/BeanSupportAspectj.aj [new file with mode: 0644]
tests/bugs150/pr113630/BeanTestCase.java [new file with mode: 0644]
tests/bugs150/pr113630/PropertySupportAspect5.aj [new file with mode: 0644]
tests/bugs150/pr113630/javaBean.java [new file with mode: 0644]
tests/bugs150/pr113630/propertyChanger.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml

diff --git a/tests/bugs150/pr113630/Bean.java b/tests/bugs150/pr113630/Bean.java
new file mode 100644 (file)
index 0000000..fafad79
--- /dev/null
@@ -0,0 +1,17 @@
+package com.blueprint.util.aspectj5.test;
+
+import java.io.Serializable;
+
+@javaBean()
+public class Bean implements Serializable{
+               
+               private String name;
+
+               public String getName() {
+                       return name;
+               }
+               @propertyChanger()
+               public void setName( String name ) {
+                       this.name = name;
+               }
+}
\ No newline at end of file
diff --git a/tests/bugs150/pr113630/BeanSupportAspectj.aj b/tests/bugs150/pr113630/BeanSupportAspectj.aj
new file mode 100644 (file)
index 0000000..8262ad6
--- /dev/null
@@ -0,0 +1,10 @@
+/**
+ * 
+ */
+package com.blueprint.util.aspectj5.test;
+
+import com.blueprint.util.aspectj5.test.PropertySupportAspect5.PropertySupport;
+
+public aspect BeanSupportAspectj {
+     declare parents: @javaBean * implements PropertySupport;
+}
diff --git a/tests/bugs150/pr113630/BeanTestCase.java b/tests/bugs150/pr113630/BeanTestCase.java
new file mode 100644 (file)
index 0000000..0df2272
--- /dev/null
@@ -0,0 +1,34 @@
+package com.blueprint.util.aspectj5.test;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import junit.framework.TestCase;
+
+public class BeanTestCase extends TestCase implements PropertyChangeListener{
+
+       public void setUp() throws Exception{
+               super.setUp();
+       }
+
+       public void TearDown() throws Exception{
+               super.setUp();
+       }
+       
+       public void propertyChange(PropertyChangeEvent e){
+             System.out.println("Property [" + e.getPropertyName() + "[ changed from " +
+                                                                               e.getOldValue() + " to " + e.getNewValue() );
+    }
+       
+    public static void main(String [] argv) {
+      new BeanTestCase().testPropertyChange();
+    }
+       public void testPropertyChange(){
+               Bean b = new Bean();
+               b.addPropertyChangeListener( "name", this );
+               b.setName( "Test" );
+               assertEquals( b.getName() , "Test" );
+               b.setName( "Test1" );
+               assertEquals( b.getName() , "Test1" );
+       }
+}
diff --git a/tests/bugs150/pr113630/PropertySupportAspect5.aj b/tests/bugs150/pr113630/PropertySupportAspect5.aj
new file mode 100644 (file)
index 0000000..10e4388
--- /dev/null
@@ -0,0 +1,90 @@
+package com.blueprint.util.aspectj5.test;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.lang.reflect.Field;
+import org.aspectj.lang.Signature;
+
+public aspect PropertySupportAspect5 {
+               
+                       PropertyChangeSupport PropertySupport.support = new PropertyChangeSupport(this);
+
+                       public interface PropertySupport{
+                                 public void addPropertyChangeListener( PropertyChangeListener listener );
+                                 public void addPropertyChangeListener( String propertyName,
+                                                                            PropertyChangeListener listener );
+                                 public void removePropertyChangeListener( String propertyName,
+                                                                               PropertyChangeListener listener );
+                                 public void removePropertyChangeListener( PropertyChangeListener listener );
+                                 public void hasListeners( String propertyName );
+                                 public void firePropertyChange( Bean b,
+                                                                                                 String property,
+                                                                                                 String oldval,
+                                                                                                 String newval );
+                       }
+                       
+                       public void PropertySupport.addPropertyChangeListener(PropertyChangeListener listener){
+                           support.addPropertyChangeListener(listener);
+                       }
+                       
+                       public void PropertySupport.addPropertyChangeListener( String propertyName,
+                                                                              PropertyChangeListener listener){
+
+                               support.addPropertyChangeListener(propertyName, listener);
+                   }
+                   
+                       public void PropertySupport.removePropertyChangeListener( String propertyName,
+                                                                                     PropertyChangeListener listener) {
+                               support.removePropertyChangeListener(propertyName, listener);
+                   }
+                       
+                       public void PropertySupport.removePropertyChangeListener(PropertyChangeListener listener) {
+                           support.removePropertyChangeListener(listener);
+                       }
+                       
+                       public void PropertySupport.hasListeners(String propertyName) {
+                           support.hasListeners(propertyName);
+                       }
+
+                       pointcut callSetter( Bean b ) 
+                   : call( @propertyChanger * *(..) ) && target( b );
+                       
+                       void around( Bean b ) : callSetter( b )  {
+                           String propertyName = getField( thisJoinPointStaticPart.getSignature() ).
+                                                                                                                                                       getName();
+                               System.out.println( "The property is [" + propertyName + "]" );
+                               String oldValue = b.getName();
+                           proceed( b );
+                           b.firePropertyChange( b, propertyName, oldValue, b.getName());
+                       }
+
+                   private Field getField( Signature signature ){
+                       Field field = null;
+                               System.out.println( "Getting the field name of [" +signature.getName() + "]" );
+                       
+                       try{
+                               String methodName = signature.getName();
+                               field = signature.getDeclaringType().
+                                                                       getDeclaredField( methodName.
+                                                                                                          substring( 3,
+                                                                                                                 methodName.length() ).
+                                                                                                                                       toLowerCase());
+                               field.setAccessible(true);
+                       }catch( NoSuchFieldException nsfe ){
+                               nsfe.printStackTrace();
+                       }
+                               return field;
+                       }
+
+                       public void PropertySupport.firePropertyChange( Bean b,
+                                                                                                                       String property,
+                                                                                                                       String oldval,
+                                                                                                                       String newval) {
+                               System.out.println( "The property is [" + property + "]");
+                               System.out.println( "The old value is [" + oldval + "]");
+                               System.out.println( "The new value is [" + newval + "]");
+                               b.support.firePropertyChange( property,
+                                                       ( oldval == null ) ? oldval : new String(oldval),
+                                           new String(newval));
+                       }
+}
\ No newline at end of file
diff --git a/tests/bugs150/pr113630/javaBean.java b/tests/bugs150/pr113630/javaBean.java
new file mode 100644 (file)
index 0000000..ae2663e
--- /dev/null
@@ -0,0 +1,9 @@
+package com.blueprint.util.aspectj5.test;
+
+import java.lang.annotation.*;
+import java.lang.*;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target({ ElementType.TYPE })
+public @interface javaBean {
+}
diff --git a/tests/bugs150/pr113630/propertyChanger.java b/tests/bugs150/pr113630/propertyChanger.java
new file mode 100644 (file)
index 0000000..9fb87b5
--- /dev/null
@@ -0,0 +1,10 @@
+package com.blueprint.util.aspectj5.test;
+
+import java.lang.annotation.*;
+import java.lang.*;
+
+@Retention( RetentionPolicy.RUNTIME )
+@Target({ ElementType.METHOD })
+public @interface propertyChanger {
+}
+
index b61e75437f5101e9568916d7c616919bcf86b8d4..28ac28c5ed477a6cf655b78aac84e72bce3d39fd 100644 (file)
@@ -217,6 +217,10 @@ public class GenericsTests extends XMLBasedAjcTestCase {
     public void testGenericsBang_pr95993() {
            runTest("NPE at ClassScope.java:660 when compiling generic class");
     }    
+    
+//    public void testIncompatibleClassChangeError_pr113630() {
+//     runTest("IncompatibleClassChangeError");
+//    }
        
        // generic aspects
        public void testPR96220_GenericAspects1() {runTest("generic aspects - 1");}
index 703204ab0e649a4d71674e24bac97ccf45e43bca..c825b5c95a90815a59cdc7c89d72ea7a27f3722a 100644 (file)
     <ajc-test dir="bugs150" title="Problem with constructor ITDs">
         <compile files="pr112783.aj" options="-1.5"/>
     </ajc-test>
+    
+    <ajc-test dir="bugs150/pr113630" title="IncompatibleClassChangeError">
+        <compile files="Bean.java,BeanSupportAspectj.aj,BeanTestCase.java,javaBean.java,propertyChanger.java,PropertySupportAspect5.aj" options="-1.5"/>
+        <run class="com.blueprint.util.aspectj5.test.BeanTestCase"/>
+    </ajc-test>  
  
     <ajc-test dir="bugs150" title="Generics ClassCastException">
         <compile files="pr113445.aj" options="-1.5,-emacssym"/>