Introduce TestDataProvider
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 17 Jan 2008 11:01:44 +0000 (11:01 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 17 Jan 2008 11:01:44 +0000 (11:01 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@922 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/core/UnsupportedException.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataProvider.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataUtils.java [new file with mode: 0644]

index 5c786566fb1c358afc1d6664aa7e822e140dd5aa..4b46b35de3c47ed8eecb6e9b1541cb7bb9468097 100644 (file)
@@ -27,6 +27,18 @@ public class UnsupportedException extends SlcException {
                                + (obj != null ? obj.getClass() : "[object is null]"));\r
        }\r
 \r
+       /**\r
+        * Constructor generating a message.\r
+        * \r
+        * @param nature\r
+        *            the nature of the unsupported object\r
+        * @param clss\r
+        *            the class itself (will be used in message)\r
+        */\r
+       public UnsupportedException(String nature, Class<?> clss) {\r
+               super("Unsupported " + nature + ": " + clss);\r
+       }\r
+\r
        /**\r
         * Constructor generating a message.\r
         * \r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataProvider.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataProvider.java
new file mode 100644 (file)
index 0000000..e0e02c3
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.test;\r
+\r
+public interface TestDataProvider {\r
+       public <T extends TestData> T getTestData(Class<T> clss, String key);\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestDataUtils.java
new file mode 100644 (file)
index 0000000..66cae87
--- /dev/null
@@ -0,0 +1,45 @@
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.UnsupportedException;\r
+\r
+/** Utilities for dealing with test datas. */\r
+public class TestDataUtils {\r
+       /** Extracts the test data from the given provider. */\r
+       public static <T extends TestData> T getFromProvider(Object obj,\r
+                       Class<T> clss, String key) {\r
+               if (obj instanceof TestDataProvider) {\r
+                       TestDataProvider testDataProvider = (TestDataProvider) obj;\r
+                       return testDataProvider.getTestData(clss, key);\r
+               } else {\r
+                       throw new UnsupportedException("test data provider", obj);\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Extracts the test data from the given provider using <code>null</code>\r
+        * as key.\r
+        */\r
+       public static <T extends TestData> T getFromProvider(Object obj,\r
+                       Class<T> clss) {\r
+               return getFromProvider(obj, clss, null);\r
+       }\r
+\r
+       /**\r
+        * Returns it self after making the proper checks. Used for test data being\r
+        * their own data providers.\r
+        */\r
+       public static <T extends TestData> T getItSelf(Class<T> clss,\r
+                       TestData testDataObject) {\r
+               if (clss.isAssignableFrom(testDataObject.getClass())) {\r
+                       return (T) testDataObject;\r
+               } else {\r
+                       throw new UnsupportedException("test data", testDataObject);\r
+               }\r
+\r
+       }\r
+\r
+       /** Makes sure this is an utility class. */\r
+       private TestDataUtils() {\r
+\r
+       }\r
+}\r