Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2015-12-15 15:54:08 +0000
committerPierre-Charles David2016-01-08 09:30:09 +0000
commita6fe87cc952ed74af12bd659ea5d675027f7f85b (patch)
tree4ec16371f06ccc5cf20b627743995df50117de43
parentdf49731ea84f7289cb113b1f76ddefba30693d29 (diff)
downloadorg.eclipse.sirius-a6fe87cc952ed74af12bd659ea5d675027f7f85b.tar.gz
org.eclipse.sirius-a6fe87cc952ed74af12bd659ea5d675027f7f85b.tar.xz
org.eclipse.sirius-a6fe87cc952ed74af12bd659ea5d675027f7f85b.zip
[482993] Add default implementation of IEvaluationResult
Byg: 482993 Change-Id: I50d3a61dc57bdfc0490edc727fa119da8f7969ec Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/EvaluationResult.java67
-rw-r--r--incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IEvaluationResult.java25
2 files changed, 80 insertions, 12 deletions
diff --git a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/EvaluationResult.java b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/EvaluationResult.java
new file mode 100644
index 0000000000..c368469296
--- /dev/null
+++ b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/EvaluationResult.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.common.interpreter.api;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+
+/**
+ * Default implementaiton of {@link IEvaluationResult}, suitable for most cases.
+ *
+ * @author pcdavid
+ */
+public class EvaluationResult implements IEvaluationResult {
+ /**
+ * The raw value resulting fromt the expression's evaluation, without any
+ * coercion applied. May be <code>null</code> in case of evaluation error.
+ */
+ private final Object rawValue;
+
+ /**
+ * The status of the evaluation.
+ */
+ private final Diagnostic status;
+
+ public static EvaluationResult of(Object o) {
+ return of(o, Diagnostic.OK_INSTANCE);
+ }
+
+ public static EvaluationResult of(Object o, Diagnostic diag) {
+ return new EvaluationResult(o, diag);
+ }
+
+ public static EvaluationResult noEvaluation() {
+ return new EvaluationResult(null, Diagnostic.CANCEL_INSTANCE);
+ }
+
+ public static EvaluationResult withError(Diagnostic diag) {
+ return new EvaluationResult(null, diag);
+ }
+
+ public static EvaluationResult withError(String message) {
+ return new EvaluationResult(null, new BasicDiagnostic(Diagnostic.ERROR, IInterpreter.class.getName(), 0, message, null));
+ }
+
+ private EvaluationResult(Object rawValue, Diagnostic status) {
+ this.rawValue = rawValue;
+ this.status = status;
+ }
+
+ @Override
+ public Object getValue() {
+ return rawValue;
+ }
+
+ @Override
+ public Diagnostic getDiagnostic() {
+ return status;
+ }
+}
diff --git a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IEvaluationResult.java b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IEvaluationResult.java
index e2e0fcffcf..a4fca48a26 100644
--- a/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IEvaluationResult.java
+++ b/incubation/org.eclipse.sirius.common.interpreter/src/org/eclipse/sirius/common/interpreter/api/IEvaluationResult.java
@@ -18,17 +18,18 @@ import org.eclipse.emf.common.util.Diagnostic;
* @author sbegaudeau
*/
public interface IEvaluationResult {
- /**
- * The value returned by the expression.
- *
- * @return The value returned by the expression
- */
- Object getValue();
+ /**
+ * The value returned by the expression.
+ *
+ * @return The value returned by the expression
+ */
+ Object getValue();
+
+ /**
+ * The diagnostic of the evaluation.
+ *
+ * @return The diagnostic
+ */
+ Diagnostic getDiagnostic();
- /**
- * The diagnostic of the evaluation.
- *
- * @return The diagnostic
- */
- Diagnostic getDiagnostic();
}

Back to the top