[jboss-cvs] JBossAS SVN: r92203 - in projects/annotations/trunk/core: src/main/java/org/jboss/annotations/javalangreflect and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 10 14:55:43 EDT 2009
Author: jesper.pedersen
Date: 2009-08-10 14:55:43 -0400 (Mon, 10 Aug 2009)
New Revision: 92203
Added:
projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/
projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/Test.java
projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/package.html
Modified:
projects/annotations/trunk/core/build.xml
projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javalangreflect/JavaClass.java
projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistclasspool/JavassistClassPool.java
projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistinputstream/JavassistInputStream.java
projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/ClassTests.java
Log:
[JBANN-18] Don't record annotations against abstract classes
Modified: projects/annotations/trunk/core/build.xml
===================================================================
--- projects/annotations/trunk/core/build.xml 2009-08-10 17:46:49 UTC (rev 92202)
+++ projects/annotations/trunk/core/build.xml 2009-08-10 18:55:43 UTC (rev 92203)
@@ -98,6 +98,9 @@
</copy>
<mkdir dir="${build.core.dir}/testjars" />
+ <jar destfile="${build.core.dir}/testjars/classabstract.jar"
+ basedir="${build.core.dir}/test"
+ includes="**/common/**, **/classabstract/**"/>
<jar destfile="${build.core.dir}/testjars/classconstructor.jar"
basedir="${build.core.dir}/test"
includes="**/common/**, **/classconstructor/**"/>
Modified: projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javalangreflect/JavaClass.java
===================================================================
--- projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javalangreflect/JavaClass.java 2009-08-10 17:46:49 UTC (rev 92202)
+++ projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javalangreflect/JavaClass.java 2009-08-10 18:55:43 UTC (rev 92203)
@@ -36,6 +36,7 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -47,7 +48,7 @@
import java.util.logging.Logger;
/**
- * An annotation scanner for JCA/SJC
+ * An annotation scanner using java.lang.reflect
* @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
*/
public class JavaClass implements AnnotationScanner
@@ -102,7 +103,8 @@
if (trace)
log.finest("Class=" + clz.getName());
- if (!clz.isAnnotation())
+ if (!clz.isAnnotation() &&
+ (!Modifier.isAbstract(clz.getModifiers()) || clz.isInterface()))
{
java.lang.annotation.Annotation[] classAnnotations = clz.getAnnotations();
if (classAnnotations != null)
Modified: projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistclasspool/JavassistClassPool.java
===================================================================
--- projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistclasspool/JavassistClassPool.java 2009-08-10 17:46:49 UTC (rev 92202)
+++ projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistclasspool/JavassistClassPool.java 2009-08-10 18:55:43 UTC (rev 92203)
@@ -49,11 +49,12 @@
import javassist.CtField;
import javassist.CtMethod;
import javassist.LoaderClassPath;
+import javassist.Modifier;
import javassist.NotFoundException;
import javassist.bytecode.ClassFile;
/**
- * An annotation scanner
+ * An annotation scanner using Javassist's ClassLoader
* @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
*/
public class JavassistClassPool implements AnnotationScanner
@@ -115,7 +116,8 @@
{
CtClass ctClass = cp.get(className);
- if (ctClass.getClassFile2().getMajorVersion() >= ClassFile.JAVA_5 && !ctClass.isAnnotation())
+ if (ctClass.getClassFile2().getMajorVersion() >= ClassFile.JAVA_5 && !ctClass.isAnnotation() &&
+ (!Modifier.isAbstract(ctClass.getModifiers()) || ctClass.isInterface()))
{
if (trace)
log.finest("Class=" + ctClass.getName());
Modified: projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistinputstream/JavassistInputStream.java
===================================================================
--- projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistinputstream/JavassistInputStream.java 2009-08-10 17:46:49 UTC (rev 92202)
+++ projects/annotations/trunk/core/src/main/java/org/jboss/annotations/javassistinputstream/JavassistInputStream.java 2009-08-10 18:55:43 UTC (rev 92203)
@@ -51,10 +51,11 @@
import javassist.CtField;
import javassist.CtMethod;
import javassist.LoaderClassPath;
+import javassist.Modifier;
import javassist.bytecode.ClassFile;
/**
- * An annotation scanner
+ * An annotation scanner using Javassist and InputStream
* @author <a href="mailto:jesper.pedersen at jboss.org">Jesper Pedersen</a>
*/
public class JavassistInputStream implements AnnotationScanner
@@ -140,7 +141,8 @@
}
}
- if (isJava5.booleanValue() && !ctClass.isAnnotation())
+ if (isJava5.booleanValue() && !ctClass.isAnnotation() &&
+ (!Modifier.isAbstract(ctClass.getModifiers()) || ctClass.isInterface()))
{
if (trace)
log.finest("Class=" + ctClass.getName());
Modified: projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/ClassTests.java
===================================================================
--- projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/ClassTests.java 2009-08-10 17:46:49 UTC (rev 92202)
+++ projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/ClassTests.java 2009-08-10 18:55:43 UTC (rev 92203)
@@ -86,6 +86,25 @@
}
/**
+ * Class abstract
+ * @throws Throwable throwable exception
+ */
+ @Test
+ public void testClassAbstract() throws Throwable
+ {
+ URL archive = getURL("classabstract.jar");
+ AnnotationRepository ar = scanner.scan(new URL[] {archive});
+
+ assertNotNull(ar);
+
+ assertFalse(ar.hasAnnotation(Deprecated.class));
+
+ List<Annotation> l = ar.getAnnotation(Deprecated.class);
+
+ assertNull(l);
+ }
+
+ /**
* Class level
* @throws Throwable throwable exception
*/
Added: projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/Test.java
===================================================================
--- projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/Test.java (rev 0)
+++ projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/Test.java 2009-08-10 18:55:43 UTC (rev 92203)
@@ -0,0 +1,31 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008-2009, 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.annotations.test.tests.classabstract;
+
+/**
+ * Test
+ */
+ at Deprecated
+public abstract class Test
+{
+}
Added: projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/package.html
===================================================================
--- projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/package.html (rev 0)
+++ projects/annotations/trunk/core/src/test/java/org/jboss/annotations/test/tests/classabstract/package.html 2009-08-10 18:55:43 UTC (rev 92203)
@@ -0,0 +1,3 @@
+<body>
+An abstract class with a class level annotation
+</body>
More information about the jboss-cvs-commits
mailing list