X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=cms%2Forg.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FOverrideContextAware.java;fp=cms%2Forg.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FOverrideContextAware.java;h=6162ecbb29873cb689504d49f9d8dc7e1fb7899e;hb=ecc22e604e47533c79de9cecdcdeacbc752cbff1;hp=0000000000000000000000000000000000000000;hpb=e07ded4632e53f8b8869763bc1f1f4091361e76e;p=gpl%2Fargeo-slc.git
diff --git a/cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java b/cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java
new file mode 100644
index 000000000..6162ecbb2
--- /dev/null
+++ b/cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java
@@ -0,0 +1,57 @@
+package org.argeo.slc.core.execution.tasks;
+
+import org.argeo.slc.SlcException;
+import org.argeo.slc.core.test.context.SimpleContextAware;
+import org.argeo.slc.test.context.ContextAware;
+
+/**
+ * Overrides Values and Expected values of a target
+ * SimpleContextAware
with the corresponding
+ * values and expected values of a source ContextAware
+ *
+ */
+public class OverrideContextAware implements Runnable {
+
+ private ContextAware source;
+
+ private SimpleContextAware target;
+
+ /**
+ * Whether an exception shall be thrown if a value
+ * or expected value of the source is not defined
+ * in the target
+ */
+ private Boolean failIfUndefinedInSource = true;
+
+ public void run() {
+ // override values
+ if(source.getValues() != null)
+ for(String key : source.getValues().keySet()) {
+ if(failIfUndefinedInSource && !target.getValues().containsKey(key)) {
+ throw new SlcException("No entry in target values for key '" + key + "'");
+ }
+ target.getValues().put(key, source.getValues().get(key));
+ }
+
+ // override expected values
+ if(source.getExpectedValues() != null)
+ for(String key : source.getExpectedValues().keySet()) {
+ if(failIfUndefinedInSource && !target.getExpectedValues().containsKey(key)) {
+ throw new SlcException("No entry in target expected values for key '" + key + "'");
+ }
+ target.getExpectedValues().put(key, source.getExpectedValues().get(key));
+ }
+ }
+
+ public void setSource(ContextAware source) {
+ this.source = source;
+ }
+
+ public void setTarget(SimpleContextAware target) {
+ this.target = target;
+ }
+
+ public void setFailIfUndefinedInSource(Boolean failIfUndefinedInSource) {
+ this.failIfUndefinedInSource = failIfUndefinedInSource;
+ }
+}