X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FOverrideContextAware.java;fp=org.argeo.slc.spring%2Fsrc%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FOverrideContextAware.java;h=9afa8468ce5be7ff57a74710f1c27de294f1b265;hb=e14154d2baba78852915304d51cbb56bed1d3d3e;hp=0000000000000000000000000000000000000000;hpb=aba0f1135009d9014c42368ecea338088e6d2be1;p=gpl%2Fargeo-slc.git
diff --git a/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java b/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java
new file mode 100644
index 000000000..9afa8468c
--- /dev/null
+++ b/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/OverrideContextAware.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2007-2012 Argeo GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+ }
+}