You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2011/07/14 17:23:06 UTC

svn commit: r1146749 - in /felix/trunk/scrplugin: annotations/pom.xml generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java maven-scr-plugin/pom.xml scrtask/pom.xml

Author: cziegeler
Date: Thu Jul 14 15:23:05 2011
New Revision: 1146749

URL: http://svn.apache.org/viewvc?rev=1146749&view=rev
Log:
FELIX-3041 : maven-scr-plugin generates StackOverflowError with custom annotation tag provider

Modified:
    felix/trunk/scrplugin/annotations/pom.xml
    felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java
    felix/trunk/scrplugin/maven-scr-plugin/pom.xml
    felix/trunk/scrplugin/scrtask/pom.xml

Modified: felix/trunk/scrplugin/annotations/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/annotations/pom.xml?rev=1146749&r1=1146748&r2=1146749&view=diff
==============================================================================
--- felix/trunk/scrplugin/annotations/pom.xml (original)
+++ felix/trunk/scrplugin/annotations/pom.xml Thu Jul 14 15:23:05 2011
@@ -47,7 +47,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.generator</artifactId>
-            <version>1.1.2</version>
+            <version>1.1.3-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>

Modified: felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java?rev=1146749&r1=1146748&r2=1146749&view=diff
==============================================================================
--- felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java (original)
+++ felix/trunk/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/JavaClassDescriptorManager.java Thu Jul 14 15:23:05 2011
@@ -367,6 +367,18 @@ public abstract class JavaClassDescripto
         return descs;
     }
 
+    private boolean doingHasScrPluginAnnotationCheck = false;
+
+    private boolean hasScrPluginAnnotation(final Class<?> clazz, final JavaClass javaClass)
+    {
+        boolean result;
+        doingHasScrPluginAnnotationCheck = true;
+
+        result = getAnnotationTagProviderManager().hasScrPluginAnnotation( javaClass,
+                new AnnotationJavaClassDescription( clazz, javaClass, this ));
+        doingHasScrPluginAnnotationCheck = false;
+        return result;
+    }
 
     /**
      * Get a java class description for the class.
@@ -393,17 +405,16 @@ public abstract class JavaClassDescripto
                         // check for java annotation descriptions - fallback to
                         // QDox if none found
                         Class<?> clazz = this.classloader.loadClass( className );
-                        if ( this.processAnnotations
-                            && getAnnotationTagProviderManager().hasScrPluginAnnotation( javaClass,
-                                    new AnnotationJavaClassDescription( clazz, javaClasses[index], this )) )
+                        if ( this.processAnnotations && !doingHasScrPluginAnnotationCheck
+                            && hasScrPluginAnnotation(clazz, javaClass) )
                         {
                             this.log.debug( "Found java annotation description for: " + className );
-                            result = new AnnotationJavaClassDescription( clazz, javaClasses[index], this );
+                            result = new AnnotationJavaClassDescription( clazz, javaClass, this );
                         }
                         else if ( this.parseJavadocs )
                         {
                             this.log.debug( "Found qdox description for: " + className );
-                            result = new QDoxJavaClassDescription( clazz, javaClasses[index], this );
+                            result = new QDoxJavaClassDescription( clazz, javaClass, this );
                         }
                     }
                     catch ( ClassNotFoundException e )
@@ -429,7 +440,9 @@ public abstract class JavaClassDescripto
                     throw new SCRDescriptorException( "Unable to load class", className, 0 );
                 }
             }
-            this.javaClassDescriptions.put( className, result );
+            if ( !doingHasScrPluginAnnotationCheck ) {
+                this.javaClassDescriptions.put( className, result );
+            }
         }
         return result;
     }

Modified: felix/trunk/scrplugin/maven-scr-plugin/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/maven-scr-plugin/pom.xml?rev=1146749&r1=1146748&r2=1146749&view=diff
==============================================================================
--- felix/trunk/scrplugin/maven-scr-plugin/pom.xml (original)
+++ felix/trunk/scrplugin/maven-scr-plugin/pom.xml Thu Jul 14 15:23:05 2011
@@ -57,7 +57,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.generator</artifactId>
-            <version>1.1.2</version>
+            <version>1.1.3-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>

Modified: felix/trunk/scrplugin/scrtask/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/scrplugin/scrtask/pom.xml?rev=1146749&r1=1146748&r2=1146749&view=diff
==============================================================================
--- felix/trunk/scrplugin/scrtask/pom.xml (original)
+++ felix/trunk/scrplugin/scrtask/pom.xml Thu Jul 14 15:23:05 2011
@@ -54,7 +54,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.generator</artifactId>
-            <version>1.1.2</version>
+            <version>1.1.3-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>