Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-03-12 14:38:10 +0000
committerMaxime Porhel2015-03-31 13:10:38 +0000
commitcd9877b378fb7b96d9f6a13ca88fa2c7083c16ed (patch)
tree3ec07adba17662887b357bbfd36057b9ca45a50c
parent95c14db0004a14ac0b3d8d637fd35ab887433af3 (diff)
downloadorg.eclipse.sirius-cd9877b378fb7b96d9f6a13ca88fa2c7083c16ed.tar.gz
org.eclipse.sirius-cd9877b378fb7b96d9f6a13ca88fa2c7083c16ed.tar.xz
org.eclipse.sirius-cd9877b378fb7b96d9f6a13ca88fa2c7083c16ed.zip
[463226] Re-use type coercing from AbstractInterpreter in AQL
Bug: 463226 Change-Id: I55cb50251025974b07f4cb89b2b6906b2f79b2af Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java93
-rw-r--r--plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AcceleoAbstractInterpreter.java3
2 files changed, 2 insertions, 94 deletions
diff --git a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java
index 05e3bc78c2..0d7dbaafd1 100644
--- a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java
+++ b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java
@@ -13,7 +13,6 @@ package org.eclipse.sirius.common.acceleo.aql.business.internal;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
-import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -42,9 +41,7 @@ import org.eclipse.acceleo.query.runtime.impl.QueryBuilderEngine;
import org.eclipse.acceleo.query.runtime.impl.QueryEnvironment;
import org.eclipse.acceleo.query.runtime.impl.QueryValidationEngine;
import org.eclipse.acceleo.query.validation.type.IType;
-import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
@@ -194,63 +191,6 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter {
}
@Override
- public boolean evaluateBoolean(EObject context, String expression) throws EvaluationException {
- Object result = evaluate(context, expression);
- final Boolean coerced;
- if (result instanceof Boolean) {
- coerced = (Boolean) result;
- } else {
- coerced = coerceValue(result, Boolean.class);
- }
-
- if (coerced != null) {
- return coerced.booleanValue();
- }
- return false;
- }
-
- @Override
- public Collection<EObject> evaluateCollection(EObject context, String expression) throws EvaluationException {
- Object result = evaluate(context, expression);
- Collection<EObject> coercedResult = Lists.newArrayList();
- if (result instanceof Collection<?>) {
- Iterables.addAll(coercedResult, Iterables.filter((Collection<?>) result, EObject.class));
- } else if (result != null && result.getClass().isArray()) {
- Iterables.addAll(coercedResult, Iterables.filter(Lists.newArrayList((Object[]) result), EObject.class));
- } else {
- EObject coerced = coerceValue(result, EObject.class);
- if (coerced != null) {
- coercedResult.add(coerced);
- }
- }
-
- return coercedResult;
- }
-
- @Override
- public EObject evaluateEObject(EObject context, String expression) throws EvaluationException {
- Object result = evaluate(context, expression);
- EObject coerced = coerceValue(result, EObject.class);
- return coerced;
- }
-
- @Override
- public Integer evaluateInteger(EObject context, String expression) throws EvaluationException {
- Object result = evaluate(context, expression);
- Integer coerced = coerceValue(result, Integer.class);
- return coerced;
- }
-
- @Override
- public String evaluateString(EObject context, String expression) throws EvaluationException {
- Object result = evaluate(context, expression);
- if (result != null) {
- return result.toString();
- }
- return null;
- }
-
- @Override
public String getVariablePrefix() {
/*
* no variable prefix for this interpreter.
@@ -330,39 +270,6 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter {
}
/**
- * Tries and coerce the given <em>object</em> to an instance of the given
- * class.
- *
- * @param <T>
- * Type to which we need to coerce <em>object</em>.
- * @param object
- * The object we need to coerce to a given {@link Class}.
- * @param clazz
- * Class to which we are to cast <em>object</em>.
- * @return <em>object</em> cast to type <em>T</em> if possible,
- * <code>null</code> if not.
- */
- @SuppressWarnings("unchecked")
- protected static <T> T coerceValue(Object object, Class<T> clazz) {
- if (object == null) {
- return null;
- }
-
- T result = null;
- if (clazz.isInstance(object)) {
- result = (T) object;
- } else if (object instanceof IAdaptable) {
- result = (T) ((IAdaptable) object).getAdapter(clazz);
- }
-
- if (result == null) {
- result = (T) Platform.getAdapterManager().getAdapter(object, clazz);
- }
-
- return result;
- }
-
- /**
* The query environment currently used by this interpreter.
*
* @return The query environment currently used by this interpreter.
diff --git a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AcceleoAbstractInterpreter.java b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AcceleoAbstractInterpreter.java
index 44d5e8f540..8cf8e36b97 100644
--- a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AcceleoAbstractInterpreter.java
+++ b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AcceleoAbstractInterpreter.java
@@ -24,13 +24,14 @@ import java.util.Set;
import org.eclipse.sirius.common.tools.api.interpreter.IInterpreter;
import org.eclipse.sirius.common.tools.api.interpreter.IVariableStatusListener;
import org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager;
+import org.eclipse.sirius.common.tools.internal.interpreter.AbstractInterpreter;
/**
* An abstract class which handles the variables and classloading status.
*
* @author cedric
*/
-public abstract class AcceleoAbstractInterpreter implements IInterpreter {
+public abstract class AcceleoAbstractInterpreter extends AbstractInterpreter {
/**
* Instance responsible for managing the imports, dependencies and Java
* Services.

Back to the top