Start adding enhancement toward v0.8.1
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 15 Jan 2008 12:55:25 +0000 (12:55 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 15 Jan 2008 12:55:25 +0000 (12:55 +0000)
Introduce Context

git-svn-id: https://svn.argeo.org/slc/trunk@918 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/pom.xml
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/StructureAware.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java [new file with mode: 0644]

index 600512dec615d273d8df8f4ef86072dcfbc0f763..72fc35e8d7d960be8d3b130531b276bb7b6ea331 100644 (file)
@@ -6,7 +6,7 @@
        <parent>\r
                <groupId>org.argeo.slc</groupId>\r
                <artifactId>argeo-slc</artifactId>\r
-               <version>0.8.0</version>\r
+               <version>0.8-SNAPSHOT</version>\r
                <relativePath>../org.argeo.slc</relativePath>\r
        </parent>\r
        <artifactId>argeo-slc-core</artifactId>\r
index 68fd13b8b0602cd01b6b8251913697f8cfd9282e..643af73afe1f27408c4244363c3cd36ecb46a235 100644 (file)
@@ -4,7 +4,7 @@ package org.argeo.slc.core.structure;
  * Wrapper for an element, which is able to propagate registration to\r
  * sub-elements.\r
  */\r
-public interface StructureAware {\r
+public interface StructureAware<T extends StructurePath> {\r
        /** Called <b>after</b> registration. */\r
-       public void notifyCurrentPath(StructureRegistry registry, StructurePath path);\r
+       public void notifyCurrentPath(StructureRegistry<T> registry, T path);\r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSRelated.java
new file mode 100644 (file)
index 0000000..8bf57ef
--- /dev/null
@@ -0,0 +1,10 @@
+package org.argeo.slc.core.structure.tree;\r
+\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+\r
+public interface TreeSRelated {\r
+       public TreeSPath getBasePath();\r
+       public StructureRegistry<TreeSPath> getRegistry();\r
+       public StructureElement getStructureElement(String key);\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextAware.java
new file mode 100644 (file)
index 0000000..8c55338
--- /dev/null
@@ -0,0 +1,12 @@
+package org.argeo.slc.core.test.context;\r
+\r
+import java.util.Map;\r
+\r
+public interface ContextAware {\r
+       public Map<String, Object> getValues();\r
+\r
+       public void setValues(Map<String, Object> values);\r
+\r
+       public Map<String, Object> getExpectedValues();\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/context/ContextHelper.java
new file mode 100644 (file)
index 0000000..d14e67b
--- /dev/null
@@ -0,0 +1,75 @@
+package org.argeo.slc.core.test.context;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.structure.StructureAware;\r
+import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructureRegistry;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.structure.tree.TreeSRelated;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestStatus;\r
+\r
+public class ContextHelper {\r
+       private final static Log log = LogFactory.getLog(ContextHelper.class);\r
+\r
+       public static void compareReachedExpected(ContextAware contextAware,\r
+                       TestResult testResult, TreeSRelated treeSRelated) {\r
+               for (String key : contextAware.getExpectedValues().keySet()) {\r
+\r
+                       // Register in structure\r
+                       if (treeSRelated != null) {\r
+                               if (treeSRelated.getBasePath() != null) {\r
+                                       TreeSPath path = treeSRelated.getBasePath()\r
+                                                       .createChild(key);\r
+                                       StructureRegistry<TreeSPath> registry = treeSRelated\r
+                                                       .getRegistry();\r
+                                       final StructureElement element = treeSRelated\r
+                                                       .getStructureElement(key);\r
+                                       registry.register(path, element);\r
+                                       if (testResult instanceof StructureAware)\r
+                                               ((StructureAware<TreeSPath>) testResult)\r
+                                                               .notifyCurrentPath(registry, path);\r
+\r
+                                       if (log.isDebugEnabled())\r
+                                               log.debug("Checking key " + key + " for path " + path);\r
+                               }\r
+                       }\r
+\r
+                       // Compare expected values with reached ones\r
+                       Object expectedValue = contextAware.getExpectedValues().get(key);\r
+\r
+                       if (contextAware.getValues().containsKey(key)) {\r
+                               Object reachedValue = contextAware.getValues().get(key);\r
+\r
+                               if (expectedValue.equals(reachedValue)) {\r
+                                       testResult.addResultPart(new SimpleResultPart(\r
+                                                       TestStatus.PASSED, "Values matched for key '" + key\r
+                                                                       + "'"));\r
+                               } else {\r
+                                       testResult.addResultPart(new SimpleResultPart(\r
+                                                       TestStatus.FAILED, "Mismatch for key '" + key\r
+                                                                       + "': expected '" + expectedValue\r
+                                                                       + "' but reached '" + reachedValue + "'"));\r
+                               }\r
+                       } else {\r
+                               testResult.addResultPart(new SimpleResultPart(\r
+                                               TestStatus.FAILED, "No value reached for key '" + key\r
+                                                               + "'"));\r
+                       }\r
+\r
+                       if (treeSRelated != null) {\r
+                               if (treeSRelated.getBasePath() != null) {\r
+                                       if (testResult instanceof StructureAware) {\r
+                                               ((StructureAware<TreeSPath>) testResult)\r
+                                                               .notifyCurrentPath(treeSRelated.getRegistry(),\r
+                                                                               treeSRelated.getBasePath());\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+}\r