From 6d0b84f00a193618387b1905e92250f7537c38e8 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Thu, 28 Jun 2007 16:17:28 +0000
Subject: [PATCH] revert: changes to @Mandatory annotation of r714, since it
 has a negative impact on the robustness when doing refactorings

SVN: 742
---
 .../cisd/common/annotation/Mandatory.java     |  4 +-
 .../cisd/common/utilities/ClassUtils.java     | 19 ++----
 .../cisd/common/utilities/ClassUtilsTest.java | 68 ++-----------------
 3 files changed, 14 insertions(+), 77 deletions(-)

diff --git a/common/source/java/ch/systemsx/cisd/common/annotation/Mandatory.java b/common/source/java/ch/systemsx/cisd/common/annotation/Mandatory.java
index 286a9b7a8bf..0cbeaf0d3cd 100644
--- a/common/source/java/ch/systemsx/cisd/common/annotation/Mandatory.java
+++ b/common/source/java/ch/systemsx/cisd/common/annotation/Mandatory.java
@@ -28,9 +28,9 @@ import java.lang.annotation.Target;
  * @author Christian Ribeaud
  */
 @Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
+@Target(ElementType.FIELD)
 @Inherited
 public @interface Mandatory
 {
-    public String[] value();
+
 }
diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/ClassUtils.java b/common/source/java/ch/systemsx/cisd/common/utilities/ClassUtils.java
index 3d152769a62..e55f846ee22 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/ClassUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/ClassUtils.java
@@ -24,8 +24,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.commons.lang.ArrayUtils;
-
 import ch.systemsx.cisd.common.annotation.Mandatory;
 import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
 
@@ -44,20 +42,17 @@ public final class ClassUtils
     /**
      * For given <code>Class</code> returns a list of fields that are annotated with {@link Mandatory}.
      */
-    public final static List<Field> getMandatoryFields(Class<?> clazz)
+    public final static List<Field> getMandatoryFields(Class clazz)
     {
-        final Mandatory mandatory = clazz.getAnnotation(Mandatory.class);
-        return getFields(clazz, null, mandatory == null ? null : mandatory.value());
+        return getMandatoryFields(clazz, null);
     }
-
+    
     /**
-     * For given <code>Class</code> (and eventually its superclasses) return a list of <code>Field</code> objects
-     * that matches the ones defined in <code>strFields</code>.
+     * For given <code>Class</code> returns a list of fields that are annotated with {@link Mandatory}.
      * 
      * @param fields if <code>null</code>, then a new <code>List</code> is created.
-     * @return never <code>null</code> but could return an empty <code>List</code>.
      */
-    public final static List<Field> getFields(Class<?> clazz, List<Field> fields, String... strFields)
+    private final static List<Field> getMandatoryFields(Class clazz, List<Field> fields)
     {
         List<Field> list = fields;
         if (list == null)
@@ -66,7 +61,7 @@ public final class ClassUtils
         }
         for (Field field : clazz.getDeclaredFields())
         {
-            if (ArrayUtils.indexOf(strFields, field.getName()) > -1)
+            if (field.getAnnotation(Mandatory.class) != null)
             {
                 list.add(field);
             }
@@ -74,7 +69,7 @@ public final class ClassUtils
         Class superclass = clazz.getSuperclass();
         if (superclass != null)
         {
-            return getFields(superclass, list, strFields);
+            return getMandatoryFields(superclass, list);
         }
         return list;
     }
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/ClassUtilsTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/ClassUtilsTest.java
index a36999f2b71..ebaa9f1cd06 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/ClassUtilsTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/ClassUtilsTest.java
@@ -16,15 +16,10 @@
 
 package ch.systemsx.cisd.common.utilities;
 
-import static org.testng.AssertJUnit.*;
-
-import java.lang.reflect.Field;
-import java.util.List;
+import static org.testng.AssertJUnit.assertEquals;
 
 import org.testng.annotations.Test;
 
-import ch.systemsx.cisd.common.annotation.Mandatory;
-
 /**
  * Test cases for the {@link ClassUtils} class.
  * 
@@ -33,50 +28,17 @@ import ch.systemsx.cisd.common.annotation.Mandatory;
 public final class ClassUtilsTest
 {
 
+    /**
+     * Test method for {@link ch.systemsx.cisd.common.utilities.ClassUtils#getCurrentMethod()}.
+     */
     @Test
     public final void testGetCurrentMethod()
     {
         assertEquals("testGetCurrentMethod", ClassUtils.getCurrentMethod().getName());
         // Border cases
-        assertEquals(new SameMethodName().getMethodName(), new SameMethodName().getMethodName(new Object(),
-                new Object()));
-    }
-
-    @Test
-    public final void testGetFields()
-    {
-        List<Field> fields = ClassUtils.getFields(A.class, null, "otherField");
-        assertNotNull(fields);
-        assert fields.size() == 0;
-        // A
-        fields = ClassUtils.getFields(A.class, null, "someField");
-        assertNotNull(fields);
-        assert fields.size() == 1;
-        // B
-        fields = ClassUtils.getFields(B.class, null, "someField");
-        assertNotNull(fields);
-        assert fields.size() == 1;
-        // C
-        fields = ClassUtils.getFields(C.class, null, "someField");
-        assertNotNull(fields);
-        assert fields.size() == 1;
+        assertEquals(new SameMethodName().getMethodName(), new SameMethodName().getMethodName(new Object(), new Object()));
     }
 
-    @Test
-    public final void testGetMandatoryFields()
-    {
-        List<Field> fields = ClassUtils.getMandatoryFields(A.class);
-        assertNotNull(fields);
-        assert fields.size() == 0;
-        fields = ClassUtils.getMandatoryFields(C.class);
-        assertNotNull(fields);
-        assert fields.size() == 2;
-    }
-
-    //
-    // Helper classes
-    //
-
     private final static class SameMethodName
     {
 
@@ -93,24 +55,4 @@ public final class ClassUtilsTest
         }
     }
 
-    @SuppressWarnings("unused")
-    private static class A
-    {
-        private Object someField;
-
-        private Object mandatoryField;
-    }
-
-    private static class B extends A
-    {
-
-    }
-
-    @Mandatory(
-        { "mandatoryField", "otherMandatoryField", "notPresentField" })
-    private final static class C extends B
-    {
-        @SuppressWarnings("unused")
-        private Object otherMandatoryField;
-    }
 }
-- 
GitLab