[jboss-cvs] JBossAS SVN: r61147 - in projects/aop/trunk/aop: src/main/org/jboss/aop and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 6 14:12:07 EST 2007


Author: kabir.khan at jboss.com
Date: 2007-03-06 14:12:07 -0500 (Tue, 06 Mar 2007)
New Revision: 61147

Added:
   projects/aop/trunk/aop/src/resources/test/inforesolve/
   projects/aop/trunk/aop/src/resources/test/inforesolve/jboss-aop.xml
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/InfoResolveAnnotationTestCase.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/POJO.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/ResolveAnnotationAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/TestAnnotation.java
Modified:
   projects/aop/trunk/aop/build-tests-jdk50.xml
   projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/FieldInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/MethodInfo.java
Log:
[JBAOP-314] Resolve annotations from JoinPointInfo so that we can have annotation overrides etc. with before/after/throwing advice

Modified: projects/aop/trunk/aop/build-tests-jdk50.xml
===================================================================
--- projects/aop/trunk/aop/build-tests-jdk50.xml	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/build-tests-jdk50.xml	2007-03-06 19:12:07 UTC (rev 61147)
@@ -365,6 +365,10 @@
          <param name="test" value="nameddomain"/>
          <param name="caller" value="javaagent-genadvisor-tests"/>
       </antcall>
+      <antcall target="_run-javaagent-test" inheritRefs="true">
+         <param name="test" value="inforesolve"/>
+         <param name="caller" value="javaagent-genadvisor-tests"/>
+      </antcall>
 
       <!-- Add tests in _base-tests unless they should only be run in this weaving mode -->
       <antcall target="_base-jdk50-tests" inheritRefs="true">
@@ -537,6 +541,10 @@
 
       <!-- Tests only applicable for this weaving mode -->
       <antcall target="_run-precompiled-test" inheritRefs="true">
+         <param name="test" value="inforesolve"/>
+         <param name="caller" value="precompiled-genadvisor-tests"/>
+      </antcall>
+      <antcall target="_run-precompiled-test" inheritRefs="true">
          <param name="test" value="beforeafter"/>
          <param name="caller" value="precompiled-genadvisor-tests"/>
       </antcall>

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -26,6 +26,7 @@
 
 import org.jboss.aop.advice.Interceptor;
 import org.jboss.aop.joinpoint.ConstructorCalledByMethodJoinpoint;
+import org.jboss.aop.joinpoint.IConByMethodInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.util.MethodHashing;
 
@@ -34,7 +35,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision$
  */
-public class ConByMethodInfo extends CallerConstructorInfo
+public class ConByMethodInfo extends CallerConstructorInfo 
 {
    private final long callingMethodHash;
    private final Method callingMethod;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -24,6 +24,7 @@
 import java.lang.reflect.Constructor;
 
 import org.jboss.aop.joinpoint.ConstructorJoinpoint;
+import org.jboss.aop.joinpoint.IConstructionInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.util.MethodHashing;
 
@@ -33,7 +34,7 @@
  * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
  * @version $Revision$
  */
-public class ConstructionInfo extends JoinPointInfo
+public class ConstructionInfo extends JoinPointInfo 
 {
    private Constructor constructor;
    private int index;
@@ -106,4 +107,18 @@
    {
       return index;
    }
+
+   public Object resolveAnnotation(Class annotation)
+   {
+      Object val = super.resolveAnnotation(annotation);
+      if (val != null) return val;
+
+      if (getAdvisor() != null)
+      {
+         val = getAdvisor().resolveAnnotation(constructor, annotation);
+         if (val != null) return val;
+      }
+
+      return null;
+   }
 }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -25,6 +25,7 @@
 import java.lang.reflect.Method;
 
 import org.jboss.aop.joinpoint.ConstructorJoinpoint;
+import org.jboss.aop.joinpoint.IConstructorInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.util.MethodHashing;
 
@@ -34,7 +35,7 @@
  * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
  * @version $Revision$
  */
-public class ConstructorInfo extends JoinPointInfo
+public class ConstructorInfo extends JoinPointInfo 
 {
    private Method wrapper;
    private Constructor constructor;
@@ -116,4 +117,20 @@
    {
       return index;
    }
+   
+
+   public Object resolveAnnotation(Class annotation)
+   {
+      Object val = super.resolveAnnotation(annotation);
+      if (val != null) return val;
+
+      if (getAdvisor() != null)
+      {
+         val = getAdvisor().resolveAnnotation(constructor, annotation);
+         if (val != null) return val;
+      }
+
+      return null;
+   }
+
 }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/FieldInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/FieldInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/FieldInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -21,15 +21,14 @@
   */
 package org.jboss.aop;
 
-import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
-import org.jboss.aop.SecurityActions.SetAccessibleAction;
 import org.jboss.aop.joinpoint.FieldJoinpoint;
+import org.jboss.aop.joinpoint.IFieldInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.util.MethodHashing;
 
@@ -39,7 +38,7 @@
  * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
  * @version $Revision$
  */
-public class FieldInfo extends JoinPointInfo
+public class FieldInfo extends JoinPointInfo 
 {
    private int index;
    private Field advisedField;
@@ -149,6 +148,20 @@
       return read;
    }
 
+   public Object resolveAnnotation(Class annotation)
+   {
+      Object val = super.resolveAnnotation(annotation);
+      if (val != null) return val;
+
+      if (getAdvisor() != null)
+      {
+         val = getAdvisor().resolveAnnotation(advisedField, annotation);
+         if (val != null) return val;
+      }
+
+      return null;
+   }
+
    private Field doGet(Class clazz, String name)throws NoSuchFieldException
    {
       Field field = null;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -23,7 +23,6 @@
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
-import java.util.Arrays;
 
 import org.jboss.aop.advice.Interceptor;
 import org.jboss.aop.joinpoint.Joinpoint;
@@ -136,4 +135,24 @@
 
    protected abstract Joinpoint internalGetJoinpoint();
    public abstract JoinPointInfo copy();
+   
+   public Object resolveClassMetaData(Object key, Object attr)
+   {
+      return getAdvisor().getClassMetaData().getMetaData(key, attr);
+   }
+   
+   public Object resolveClassAnnotation(Class annotation)
+   {
+      Advisor advisor = getAdvisor();
+      if (advisor != null)
+      {
+         return advisor.resolveAnnotation(annotation);
+      }
+      return null;
+   }
+   
+   public Object resolveAnnotation(Class annotation)
+   {
+      return null;
+   }
 }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -25,6 +25,7 @@
 import java.lang.reflect.Method;
 
 import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.IMethodByConInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.joinpoint.MethodCalledByConstructorJoinpoint;
 
@@ -33,7 +34,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision$
  */
-public class MethodByConInfo extends CallerMethodInfo
+public class MethodByConInfo extends CallerMethodInfo 
 {
 
    private final int callingIndex;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -24,6 +24,7 @@
 import java.lang.reflect.Method;
 
 import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.IMethodByMethodInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.joinpoint.MethodCalledByMethodJoinpoint;
 import org.jboss.aop.util.MethodHashing;
@@ -33,7 +34,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision$
  */
-public class MethodByMethodInfo extends CallerMethodInfo
+public class MethodByMethodInfo extends CallerMethodInfo 
 {
    private final long callingMethodHash;
    private final Method callingMethod;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/MethodInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/MethodInfo.java	2007-03-06 17:53:44 UTC (rev 61146)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/MethodInfo.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -21,17 +21,17 @@
   */
 package org.jboss.aop;
 
+import org.jboss.aop.joinpoint.IMethodInfo;
 import org.jboss.aop.joinpoint.Joinpoint;
 import org.jboss.aop.joinpoint.MethodJoinpoint;
 import org.jboss.aop.util.MethodHashing;
 
 import java.lang.reflect.Method;
-import java.util.Arrays;
 
 /**
  *  This class is here to eliminate a hash lookup in invokeMethod
  */
-public class MethodInfo extends JoinPointInfo
+public class MethodInfo extends JoinPointInfo 
 {
    private Method advisedMethod;
    private Method unadvisedMethod;
@@ -116,4 +116,20 @@
       sb.append("]");
       return sb.toString();
    }
+
+   public Object resolveAnnotation(Class annotation)
+   {
+      Object val = super.resolveAnnotation(annotation);
+      if (val != null)
+      {
+         return val;
+      }
+      
+      Advisor advisor = getAdvisor();
+      if (advisor != null)
+      {
+         return getAdvisor().resolveAnnotation(hash, advisedMethod, annotation);
+      }
+      return null;
+   }
 }

Added: projects/aop/trunk/aop/src/resources/test/inforesolve/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/inforesolve/jboss-aop.xml	                        (rev 0)
+++ projects/aop/trunk/aop/src/resources/test/inforesolve/jboss-aop.xml	2007-03-06 19:12:07 UTC (rev 61147)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aop>
+   <aspect class="org.jboss.test.aop.inforesolve.ResolveAnnotationAspect" scope="PER_VM"/>
+
+   <bind pointcut="all(org.jboss.test.aop.inforesolve.POJO)">
+      <before name="before" aspect="org.jboss.test.aop.inforesolve.ResolveAnnotationAspect"/>
+   </bind>
+</aop>

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/InfoResolveAnnotationTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/InfoResolveAnnotationTestCase.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/InfoResolveAnnotationTestCase.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software 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
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.inforesolve;
+
+import org.jboss.aop.ConstructorInfo;
+import org.jboss.aop.FieldInfo;
+import org.jboss.aop.MethodInfo;
+import org.jboss.test.aop.AOPTestWithSetup;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class InfoResolveAnnotationTestCase extends AOPTestWithSetup
+{
+   public InfoResolveAnnotationTestCase(String arg0)
+   {
+      super(arg0);
+   }
+
+   public void testResolveAnnotationsFromInfo() throws Exception
+   {
+      ResolveAnnotationAspect.clear();
+      POJO pojo = new POJO();
+      assertNotNull(pojo);
+      check(ConstructorInfo.class, "class", "ctor");
+      
+      ResolveAnnotationAspect.clear();
+      pojo.field = 100;
+      check(FieldInfo.class, "class", "field");
+      
+      ResolveAnnotationAspect.clear();
+      assertEquals(100, pojo.field);
+      check(FieldInfo.class, "class", "field");
+      
+      ResolveAnnotationAspect.clear();
+      POJO.staticField = 101;
+      check(FieldInfo.class, "class", "staticField");
+      
+      ResolveAnnotationAspect.clear();
+      assertEquals(101, POJO.staticField);
+      check(FieldInfo.class, "class", "staticField");
+      
+      ResolveAnnotationAspect.clear();
+      assertEquals(201, pojo.method(200));
+      check(MethodInfo.class, "class", "method");
+      
+      ResolveAnnotationAspect.clear();
+      assertEquals(302, pojo.staticMethod(300));
+      check(MethodInfo.class, "class", "staticMethod");
+   }
+   
+   private void check(Class expectedInfoClazz, String expectedClassString, String expectedJoinPointString)
+   {
+      assertNotNull(ResolveAnnotationAspect.info);
+      assertEquals(expectedInfoClazz, ResolveAnnotationAspect.info.getClass());
+      assertNotNull(ResolveAnnotationAspect.classAnnotation);
+      assertEquals(expectedClassString, ResolveAnnotationAspect.classAnnotation.value());
+      assertNotNull(ResolveAnnotationAspect.joinpointAnnotation);
+      assertEquals(expectedJoinPointString, ResolveAnnotationAspect.joinpointAnnotation.value());
+   }
+}
\ No newline at end of file

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/POJO.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/POJO.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -0,0 +1,53 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software 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
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.inforesolve;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at TestAnnotation("class")
+public class POJO
+{
+   @TestAnnotation("field")
+   int field;
+   @TestAnnotation("staticField")
+   static int staticField;
+   
+   @TestAnnotation("ctor")
+   public POJO()
+   {
+   }
+   
+   @TestAnnotation("method")
+   public int method(int i)
+   {
+      return ++i;
+   }
+   
+   @TestAnnotation("staticMethod")
+   public int staticMethod(int i)
+   {
+      return i+2;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/ResolveAnnotationAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/ResolveAnnotationAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/ResolveAnnotationAspect.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -0,0 +1,57 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software 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
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.inforesolve;
+
+import org.jboss.aop.JoinPointInfo;
+import org.jboss.aop.advice.annotation.JoinPoint;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ResolveAnnotationAspect
+{
+   public static JoinPointInfo info;
+   public static TestAnnotation classAnnotation;
+   public static TestAnnotation joinpointAnnotation;
+   
+   public static void clear()
+   {
+      info = null;
+      classAnnotation = null;
+      joinpointAnnotation = null;
+   }
+   
+   public void before(@JoinPoint JoinPointInfo info)
+   {
+      this.info = info;
+      if (info == null)
+      {
+         //This is an error but will be picked up by the test
+         return;
+      }
+         
+      classAnnotation = (TestAnnotation)info.resolveClassAnnotation(TestAnnotation.class);
+      joinpointAnnotation = (TestAnnotation)info.resolveAnnotation(TestAnnotation.class);
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/TestAnnotation.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/TestAnnotation.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/inforesolve/TestAnnotation.java	2007-03-06 19:12:07 UTC (rev 61147)
@@ -0,0 +1,36 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software 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
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.inforesolve;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface TestAnnotation 
+{
+   String value();
+}




More information about the jboss-cvs-commits mailing list