diff options
author | Mélanie Bats | 2016-09-21 13:12:54 +0000 |
---|---|---|
committer | Mélanie Bats | 2016-09-29 13:53:23 +0000 |
commit | 31b7718afc6946a342c263a00da91dfb08e0e211 (patch) | |
tree | 8123d9a3623f2d494fb6594be156cb059916b653 /plugins | |
parent | 7d92fcbef77bc035f3fcaf0c3997da81fb293f7a (diff) | |
download | org.eclipse.eef-31b7718afc6946a342c263a00da91dfb08e0e211.tar.gz org.eclipse.eef-31b7718afc6946a342c263a00da91dfb08e0e211.tar.xz org.eclipse.eef-31b7718afc6946a342c263a00da91dfb08e0e211.zip |
[501917] Make EEF able to handle Object input
Bug:501917
Change-Id: I992f9c186965423f930c528e64891ef21060db98
Signed-off-by: Mélanie Bats <melanie.bats@obeo.fr>
Diffstat (limited to 'plugins')
3 files changed, 18 insertions, 15 deletions
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/DomainClassPredicate.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/DomainClassPredicate.java index aa512bbcb..6470c4f2e 100644 --- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/DomainClassPredicate.java +++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/DomainClassPredicate.java @@ -12,6 +12,7 @@ package org.eclipse.eef.core.internal; import com.google.common.base.Predicate; +import org.eclipse.eef.common.api.utils.Util; import org.eclipse.eef.core.api.IEEFDomainClassTester; import org.eclipse.emf.ecore.EObject; @@ -21,7 +22,7 @@ import org.eclipse.emf.ecore.EObject; * @author pcdavid * @author sbegaudeau */ -public class DomainClassPredicate implements Predicate<EObject> { +public class DomainClassPredicate implements Predicate<Object> { /** * The domain class name. */ @@ -46,8 +47,11 @@ public class DomainClassPredicate implements Predicate<EObject> { } @Override - public boolean apply(EObject input) { - return this.domainClassTester.eInstanceOf(input, domainClassName); + public boolean apply(Object input) { + if (input instanceof EObject) { + return this.domainClassTester.eInstanceOf((EObject) input, domainClassName); + } + return Util.isBlank(domainClassName); } } diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java index d4d4f9ec9..140ae901a 100644 --- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java +++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFPageImpl.java @@ -25,7 +25,6 @@ import org.eclipse.eef.core.api.EEFView; import org.eclipse.eef.core.api.IEEFDomainClassTester; import org.eclipse.eef.core.api.controllers.IConsumer; import org.eclipse.eef.core.api.utils.EvalFactory; -import org.eclipse.emf.ecore.EObject; import org.eclipse.sirius.common.interpreter.api.IInterpreter; import org.eclipse.sirius.common.interpreter.api.IVariableManager; @@ -110,11 +109,11 @@ public class EEFPageImpl implements EEFPage { @Override public void apply(Object value) { DomainClassPredicate domainClassPredicate = new DomainClassPredicate(eefGroupDescription.getDomainClass(), domainClassTester); - Iterable<EObject> iterable = Util.asIterable(value, EObject.class); - Iterable<EObject> eObjects = Iterables.filter(iterable, domainClassPredicate); - for (EObject eObject : eObjects) { + Iterable<Object> iterable = Util.asIterable(value, Object.class); + Iterable<Object> objects = Iterables.filter(iterable, domainClassPredicate); + for (Object object : objects) { IVariableManager childVariableManager = EEFPageImpl.this.getVariableManager().createChild(); - childVariableManager.put(EEFExpressionUtils.SELF, eObject); + childVariableManager.put(EEFExpressionUtils.SELF, object); EEFGroupImpl eefGroupImpl = new EEFGroupImpl(EEFPageImpl.this, eefGroupDescription, childVariableManager, interpreter); eefGroups.add(eefGroupImpl); } diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java index b86cda918..66c381dbe 100644 --- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java +++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/EEFViewImpl.java @@ -108,18 +108,18 @@ public class EEFViewImpl implements EEFView { @Override public void apply(Object value) { DomainClassPredicate domainClassPredicate = new DomainClassPredicate(eefPageDescription.getDomainClass(), domainClassTester); - Iterable<EObject> iterable = Util.asIterable(value, EObject.class); - Iterable<EObject> eObjects = Iterables.filter(iterable, domainClassPredicate); + Iterable<Object> iterable = Util.asIterable(value, Object.class); + Iterable<Object> objects = Iterables.filter(iterable, domainClassPredicate); boolean isUnique = true; - Iterator<EObject> iterator = eObjects.iterator(); + Iterator<Object> iterator = objects.iterator(); while (iterator.hasNext()) { - EObject eObject = iterator.next(); + Object object = iterator.next(); if (isUnique && iterator.hasNext()) { isUnique = false; } - EEFPageImpl ePage = createPage(eefPageDescription, eObject, isUnique); + EEFPageImpl ePage = createPage(eefPageDescription, object, isUnique); ePage.initialize(); EEFViewImpl.this.eefPages.add(ePage); } @@ -215,8 +215,8 @@ public class EEFViewImpl implements EEFView { // If the semantic candidate expression is blank, we will use the variable self of the page Object pageSelf = eefPage.getVariableManager().getVariables().get(EEFExpressionUtils.SELF); String groupSemanticCandidateExpression = eefGroup.getDescription().getSemanticCandidateExpression(); - EvalFactory.of(this.interpreter, eefPage.getVariableManager()).defaultValue(pageSelf) - .call(groupSemanticCandidateExpression, groupConsumer); + EvalFactory.of(this.interpreter, eefPage.getVariableManager()).defaultValue(pageSelf).call(groupSemanticCandidateExpression, + groupConsumer); } } } |