Author: cschneider
Date: Mon Apr 18 08:01:56 2016
New Revision: 1739703

URL: http://svn.apache.org/viewvc?rev=1739703&view=rev
Log:
[ARIES-1533] Make sure interfaces do not cause a NPE

Added:
    
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/TestInterface.java
Modified:
    
aries/trunk/jpa/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/AnnotationScanner.java
    
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/AnnotationScannerTest.java

Modified: 
aries/trunk/jpa/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/AnnotationScanner.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/AnnotationScanner.java?rev=1739703&r1=1739702&r2=1739703&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/AnnotationScanner.java
 (original)
+++ 
aries/trunk/jpa/jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/AnnotationScanner.java
 Mon Apr 18 08:01:56 2016
@@ -29,7 +29,7 @@ public class AnnotationScanner {
 
     public List<AccessibleObject> getJpaAnnotatedMembers(Class<?> c, Class<? 
extends Annotation> annotation) {
         final List<AccessibleObject> jpaAnnotated = new 
ArrayList<AccessibleObject>();
-        for (Class<?> cl = c; cl != Object.class; cl = cl.getSuperclass()) {  
+        for (Class<?> cl = c; cl != Object.class && cl != null; cl = 
cl.getSuperclass()) {
             parseClass(annotation, jpaAnnotated, cl);
         }
         return jpaAnnotated;

Modified: 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/AnnotationScannerTest.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/AnnotationScannerTest.java?rev=1739703&r1=1739702&r2=1739703&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/AnnotationScannerTest.java
 (original)
+++ 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/AnnotationScannerTest.java
 Mon Apr 18 08:01:56 2016
@@ -87,5 +87,14 @@ public class AnnotationScannerTest {
         Assert.assertEquals("setEmf", method.getName());
     }
 
+    /**
+     * When using a factory the class can be an interface. We need to make 
sure this does not cause a NPE
+     */
+    @Test
+    public void getFactoryTest() {
+        AnnotationScanner scanner = new AnnotationScanner();
+        List<AccessibleObject> members = 
scanner.getJpaAnnotatedMembers(TestInterface.class, PersistenceUnit.class);
+        Assert.assertEquals(0, members.size());
+    }
     
 }

Added: 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/TestInterface.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/TestInterface.java?rev=1739703&view=auto
==============================================================================
--- 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/TestInterface.java
 (added)
+++ 
aries/trunk/jpa/jpa-blueprint/src/test/java/org/apache/aries/jpa/blueprint/impl/TestInterface.java
 Mon Apr 18 08:01:56 2016
@@ -0,0 +1,5 @@
+package org.apache.aries.jpa.blueprint.impl;
+
+public interface TestInterface {
+
+}


Reply via email to