diff options
| author | Pierre-Charles David | 2015-12-15 15:54:08 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2016-01-08 09:30:09 +0000 |
| commit | a6fe87cc952ed74af12bd659ea5d675027f7f85b (patch) | |
| tree | 4ec16371f06ccc5cf20b627743995df50117de43 | |
| parent | df49731ea84f7289cb113b1f76ddefba30693d29 (diff) | |
| download | org.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>
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(); } |
