Author: cziegeler
Date: Mon Dec 19 07:01:49 2016
New Revision: 1774998

URL: http://svn.apache.org/viewvc?rev=1774998&view=rev
Log:
FELIX-5404 : Annotation configurations default values are not considered. Apply 
patch from Julian Sedding

Modified:
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/inject/Annotations.java
    
felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/inject/AnnotationTest.java

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/inject/Annotations.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/inject/Annotations.java?rev=1774998&r1=1774997&r2=1774998&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/inject/Annotations.java 
(original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/inject/Annotations.java 
Mon Dec 19 07:01:49 2016
@@ -56,6 +56,13 @@ public class Annotations
                 complexFields.put(key, method);
                 continue;
             }
+
+            if ( raw == null && method.getDefaultValue() != null )
+            {
+                m.put( name, method.getDefaultValue());
+                continue;
+            }
+
             try
             {
                 if (returnType.isArray())

Modified: 
felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/inject/AnnotationTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/inject/AnnotationTest.java?rev=1774998&r1=1774997&r2=1774998&view=diff
==============================================================================
--- 
felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/inject/AnnotationTest.java
 (original)
+++ 
felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/inject/AnnotationTest.java
 Mon Dec 19 07:01:49 2016
@@ -136,6 +136,7 @@ public class AnnotationTest extends Test
         values.put("lon", "12345678");
         values.put("shor", 3l);
         values.put("string", 3);
+        values.put("array", new String[]{"foo", "bar"});
         return values;
     }
 
@@ -172,6 +173,7 @@ public class AnnotationTest extends Test
         long lon() default Long.MIN_VALUE;
         short shor() default -8;
         String string() default "default";
+        String[] array() default {};
     }
     
     public void testA2AllValues() throws Exception
@@ -193,6 +195,29 @@ public class AnnotationTest extends Test
         assertEquals(12345678l,  a.lon());
         assertEquals((short)3, a.shor());
         assertEquals("3", a.string());
+        assertArrayEquals(new String[]{"foo", "bar"}, a.array());
+    }
+
+    public void testA2DefaultValues() throws Exception
+    {
+        Map<String, Object> values = Collections.emptyMap();
+
+        Object o = Annotations.toObject( A2.class, values, mockBundle(), 
false);
+        assertTrue("expected an A2", o instanceof A2);
+
+        A2 a = (A2) o;
+        assertEquals(true, a.bool());
+        assertEquals((byte)5, a.byt());
+        assertEquals('a', a.cha());
+        assertEquals(Integer.class, a.clas());
+        assertEquals(E1.b, a.e1());
+        assertEquals(-2.0, a.doubl());
+        assertEquals(-4f, a.floa());
+        assertEquals(-5, a.integer());
+        assertEquals(Long.MIN_VALUE,  a.lon());
+        assertEquals((short)-8, a.shor());
+        assertEquals("default", a.string());
+        assertArrayEquals(new String[0], a.array());
     }
     
     public @interface A1Arrays {


Reply via email to