You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2013/11/19 08:46:17 UTC

svn commit: r1543340 - /incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java

Author: rmannibucau
Date: Tue Nov 19 07:46:16 2013
New Revision: 1543340

URL: http://svn.apache.org/r1543340
Log:
extracting auto set method to be able to reuse it in plugin/endpoints etc

Modified:
    incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java

Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java?rev=1543340&r1=1543339&r2=1543340&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/configuration/ioc/IoCs.java Tue Nov 19 07:46:16 2013
@@ -119,33 +119,37 @@ public final class IoCs {
         }
 
         if (loadedClass.getAnnotation(AutoSet.class) != null) {
-            Class<?> current = loadedClass;
-            while (current != null && !current.isInterface() && !Object.class.equals(current)) {
-                for (final Field field : loadedClass.getDeclaredFields()) {
-                    if (Modifier.isFinal(field.getModifiers())) {
-                        continue;
-                    }
+            autoSet(instance, loadedClass);
+        }
+
+        return instance;
+    }
 
-                    final String value = Configuration.getProperty(loadedClass.getName() + "." + field.getName(), null);
-                    if (value != null) {
-                        final boolean acc = field.isAccessible();
+    public static <T> void autoSet(final T instance, final Class<?> loadedClass) throws IllegalAccessException {
+        Class<?> current = loadedClass;
+        while (current != null && !current.isInterface() && !Object.class.equals(current)) {
+            for (final Field field : loadedClass.getDeclaredFields()) {
+                if (Modifier.isFinal(field.getModifiers())) {
+                    continue;
+                }
+
+                final String value = Configuration.getProperty(loadedClass.getName() + "." + field.getName(), null);
+                if (value != null) {
+                    final boolean acc = field.isAccessible();
+                    if (!acc) {
+                        field.setAccessible(true);
+                    }
+                    try {
+                        field.set(instance, convertTo(field.getType(), value));
+                    } finally {
                         if (!acc) {
-                            field.setAccessible(true);
-                        }
-                        try {
-                            field.set(instance, convertTo(field.getType(), value));
-                        } finally {
-                            if (!acc) {
-                                field.setAccessible(false);
-                            }
+                            field.setAccessible(false);
                         }
                     }
                 }
-                current = current.getSuperclass();
             }
+            current = current.getSuperclass();
         }
-
-        return instance;
     }
 
     public static void setSingletonInstance(final Class<?> clazz, final Object instance) {