cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ko...@apache.org
Subject [1/2] git commit: updated refs/heads/master to d1dd85a
Date Wed, 09 Oct 2013 18:41:58 GMT
Updated Branches:
  refs/heads/master 0d7aa931b -> d1dd85a4c


ReflectUtil: test for getAllFieldsForClass

- code comment turned to javadoc
- added braces to if and for statements to make it look more like the rest
- tests added

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d1dd85a4
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d1dd85a4
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d1dd85a4

Branch: refs/heads/master
Commit: d1dd85a4c42d1dfc282a0b71407ac668701ccd12
Parents: 66fe3ab
Author: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Authored: Tue Oct 8 21:02:58 2013 +0200
Committer: Laszlo Hornyak <laszlo.hornyak@gmail.com>
Committed: Wed Oct 9 20:39:41 2013 +0200

----------------------------------------------------------------------
 utils/src/com/cloud/utils/ReflectUtil.java      | 16 +++--
 utils/test/com/cloud/utils/ReflectUtilTest.java | 63 ++++++++++++++++++++
 2 files changed, 75 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d1dd85a4/utils/src/com/cloud/utils/ReflectUtil.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/ReflectUtil.java b/utils/src/com/cloud/utils/ReflectUtil.java
index 930e0b6..fecd896 100755
--- a/utils/src/com/cloud/utils/ReflectUtil.java
+++ b/utils/src/com/cloud/utils/ReflectUtil.java
@@ -106,7 +106,12 @@ public class ReflectUtil {
         return fields;
     }
 
-    // Returns all unique fields except excludeClasses for a cmd class
+    /**
+     * Returns all unique fields except excludeClasses for a cmd class
+     * @param cmdClass    the class in which fields should be collected
+     * @param excludeClasses the classes whose fields must be ignored
+     * @return list of fields
+     */
     public static Set<Field> getAllFieldsForClass(Class<?> cmdClass,
                                                   Class<?>[] excludeClasses) {
         Set<Field> fields = new HashSet<Field>();
@@ -116,14 +121,17 @@ public class ReflectUtil {
         while (superClass != null && superClass != Object.class) {
             String superName = superClass.getName();
             boolean isNameEqualToSuperName = false;
-            for (Class<?> baseClass: excludeClasses)
-                if (superName.equals(baseClass.getName()))
+            for (Class<?> baseClass: excludeClasses) {
+                if (superName.equals(baseClass.getName())) {
                     isNameEqualToSuperName = true;
+                }
+            }
 
             if (!isNameEqualToSuperName) {
                 Field[] superClassFields = superClass.getDeclaredFields();
-                if (superClassFields != null)
+                if (superClassFields != null) {
                     Collections.addAll(fields, superClassFields);
+                }
             }
             superClass = superClass.getSuperclass();
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d1dd85a4/utils/test/com/cloud/utils/ReflectUtilTest.java
----------------------------------------------------------------------
diff --git a/utils/test/com/cloud/utils/ReflectUtilTest.java b/utils/test/com/cloud/utils/ReflectUtilTest.java
index 4c8eb50..fc1cda6 100644
--- a/utils/test/com/cloud/utils/ReflectUtilTest.java
+++ b/utils/test/com/cloud/utils/ReflectUtilTest.java
@@ -16,7 +16,11 @@
 // under the License.package com.cloud.utils;
 package com.cloud.utils;
 
+import java.lang.reflect.Field;
 import java.util.List;
+import java.util.Set;
+
+import org.junit.Assert;
 import org.junit.Test;
 
 import static com.cloud.utils.ReflectUtil.flattenProperties;
@@ -88,4 +92,63 @@ public final class ReflectUtilTest {
         }
 
     }
+
+    static class Empty {
+    }
+
+    static class Foo {
+        String fooField;
+        int fooIntField;
+    }
+
+    static class Bar extends Foo {
+        String barField;
+        int barIntField;
+    }
+
+    static class Baz extends Foo {
+        String bazField;
+        int bazIntField;
+    }
+
+    @Test
+    public void getAllFieldsForClassWithFoo() throws NoSuchFieldException, SecurityException
{
+        Set<Field> fooFields = ReflectUtil.getAllFieldsForClass(Foo.class, new Class<?>
[] {});
+        Assert.assertNotNull(fooFields);
+        Assert.assertEquals(2, fooFields.size());
+        Assert.assertTrue(fooFields.contains(Foo.class.getDeclaredField("fooField")));
+        Assert.assertTrue(fooFields.contains(Foo.class.getDeclaredField("fooIntField")));
+    }
+
+    @Test
+    public void getAllFieldsForClassWithBar() throws NoSuchFieldException, SecurityException
{
+        Set<Field> barFields = ReflectUtil.getAllFieldsForClass(Bar.class, new Class<?>
[] {});
+        Assert.assertNotNull(barFields);
+        Assert.assertEquals(4, barFields.size());
+        Assert.assertTrue(barFields.contains(Foo.class.getDeclaredField("fooField")));
+        Assert.assertTrue(barFields.contains(Foo.class.getDeclaredField("fooIntField")));
+        Assert.assertTrue(barFields.contains(Bar.class.getDeclaredField("barField")));
+        Assert.assertTrue(barFields.contains(Bar.class.getDeclaredField("barIntField")));
+    }
+
+    @Test
+    public void getAllFieldsForClassWithBarWithoutFoo() throws NoSuchFieldException, SecurityException
{
+        Set<Field> barFields = ReflectUtil.getAllFieldsForClass(Bar.class, new Class<?>
[] {Foo.class});
+        Assert.assertNotNull(barFields);
+        Assert.assertEquals(2, barFields.size());
+        Assert.assertTrue(barFields.contains(Bar.class.getDeclaredField("barField")));
+        Assert.assertTrue(barFields.contains(Bar.class.getDeclaredField("barIntField")));
+    }
+
+    @Test
+    public void getAllFieldsForClassWithBazWithoutBar() throws NoSuchFieldException, SecurityException
{
+        Set<Field> bazFields = ReflectUtil.getAllFieldsForClass(Baz.class, new Class<?>
[] {Bar.class});
+        Assert.assertNotNull(bazFields);
+        Assert.assertEquals(4, bazFields.size());
+        Assert.assertTrue(bazFields.contains(Foo.class.getDeclaredField("fooField")));
+        Assert.assertTrue(bazFields.contains(Foo.class.getDeclaredField("fooIntField")));
+        Assert.assertTrue(bazFields.contains(Baz.class.getDeclaredField("bazField")));
+        Assert.assertTrue(bazFields.contains(Baz.class.getDeclaredField("bazIntField")));
+    }
+
 }


Mime
View raw message