Bug 564266 - Use promoted Expressions API of org.eclipse.core.expression

Change-Id: Ied7ad6d51c04d7caab8f5e4a1c14176b181dc180
Signed-off-by: Rolf Theunissen <rolf.theunissen@gmail.com>
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
index 0df4cc1..fa0e830 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@
  org.eclipse.e4.core.commands;bundle-version="0.9.0",
  org.eclipse.e4.ui.bindings;bundle-version="0.9.0",
  org.eclipse.equinox.common;bundle-version="[3.6.0,4.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.0",
  org.eclipse.e4.ui.css.core;bundle-version="0.9.0",
  org.eclipse.osgi;bundle-version="[3.6.0,4.0.0)",
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
index 11e35cb..ba334a6 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
@@ -24,7 +24,7 @@
 import java.util.List;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.internal.expressions.OrExpression;
+import org.eclipse.core.expressions.OrExpression;
 import org.eclipse.e4.core.commands.ExpressionContext;
 import org.eclipse.e4.core.contexts.EclipseContextFactory;
 import org.eclipse.e4.core.contexts.IContextFunction;
diff --git a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
index 77a817e..1c9f52a 100644
--- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.e4.core.commands;bundle-version="0.11.100",
  org.eclipse.emf.ecore.change;bundle-version="2.5.0",
- org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.e4.ui.di;bundle-version="0.9.0",
  org.eclipse.emf.ecore.xmi;bundle-version="2.7.0",
  org.eclipse.e4.core.di.extensions,
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
index 1c25aa9..e0dc6cf 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java
@@ -27,7 +27,7 @@
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.internal.expressions.ReferenceExpression;
+import org.eclipse.core.expressions.ReferenceExpression;
 import org.eclipse.e4.core.commands.ExpressionContext;
 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
 import org.eclipse.e4.core.contexts.EclipseContextFactory;
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
index 506ddb8..de6caf1 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/contexts/SlaveContextService.java
@@ -22,12 +22,12 @@
 import java.util.Set;
 import org.eclipse.core.commands.contexts.Context;
 import org.eclipse.core.commands.contexts.IContextManagerListener;
+import org.eclipse.core.expressions.AndExpression;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.ISourceProvider;
 import org.eclipse.ui.contexts.IContextActivation;
 import org.eclipse.ui.contexts.IContextService;
-import org.eclipse.ui.internal.expressions.AndExpression;
 
 /**
  * A context service which delegates almost all responsibility to the parent
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java
deleted file mode 100644
index 7c8c1c6..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/AndExpression.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Copied from org.eclipse.core.internal.expressions.
- */
-public final class AndExpression extends CompositeExpression {
-
-	/**
-	 * The seed for the hash code for all schemes.
-	 */
-	private static final int HASH_INITIAL = AndExpression.class.getName().hashCode();
-
-	@Override
-	protected int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(fExpressions);
-	}
-
-	@Override
-	public boolean equals(final Object object) {
-		if (object instanceof AndExpression) {
-			final AndExpression that = (AndExpression) object;
-			return equals(this.fExpressions, that.fExpressions);
-		}
-
-		return false;
-	}
-
-	@Override
-	public EvaluationResult evaluate(final IEvaluationContext context) throws CoreException {
-		return evaluateAnd(context);
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java
deleted file mode 100644
index 9a3e62a..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/expressions/CompositeExpression.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Copied from org.eclipse.core.internal.expressions.
- */
-public abstract class CompositeExpression extends Expression {
-
-	private static final Expression[] EMPTY_ARRAY = new Expression[0];
-
-	protected List<Expression> fExpressions;
-
-	public void add(Expression expression) {
-		if (fExpressions == null) {
-			fExpressions = new ArrayList<>(2);
-		}
-		fExpressions.add(expression);
-	}
-
-	public Expression[] getChildren() {
-		if (fExpressions == null) {
-			return EMPTY_ARRAY;
-		}
-		return fExpressions.toArray(new Expression[fExpressions.size()]);
-	}
-
-	protected EvaluationResult evaluateAnd(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null) {
-			return EvaluationResult.TRUE;
-		}
-		EvaluationResult result = EvaluationResult.TRUE;
-		for (Expression expression : fExpressions) {
-			result = result.and(expression.evaluate(scope));
-			// keep iterating even if we have a not loaded found. It can be
-			// that we find a false which will result in a better result.
-			if (result == EvaluationResult.FALSE) {
-				return result;
-			}
-		}
-		return result;
-	}
-
-	protected EvaluationResult evaluateOr(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null) {
-			return EvaluationResult.TRUE;
-		}
-		EvaluationResult result = EvaluationResult.FALSE;
-		for (Expression expression : fExpressions) {
-			result = result.or(expression.evaluate(scope));
-			if (result == EvaluationResult.TRUE) {
-				return result;
-			}
-		}
-		return result;
-	}
-
-	@Override
-	public void collectExpressionInfo(ExpressionInfo info) {
-		if (fExpressions == null) {
-			return;
-		}
-		for (Expression expression : fExpressions) {
-			expression.collectExpressionInfo(info);
-		}
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder builder = new StringBuilder(getClass().getSimpleName());
-		Expression[] children = getChildren();
-		if (children.length > 0) {
-			builder.append(" [children="); //$NON-NLS-1$
-			builder.append(Arrays.toString(children));
-			builder.append("]"); //$NON-NLS-1$
-		}
-		return builder.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
index 450a355..bd5e01d 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/handlers/LegacyHandlerService.java
@@ -34,6 +34,7 @@
 import org.eclipse.core.commands.NotHandledException;
 import org.eclipse.core.commands.ParameterizedCommand;
 import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.core.expressions.AndExpression;
 import org.eclipse.core.expressions.ElementHandler;
 import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.core.expressions.Expression;
@@ -64,7 +65,6 @@
 import org.eclipse.ui.handlers.IHandlerActivation;
 import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.internal.WorkbenchPlugin;
-import org.eclipse.ui.internal.expressions.AndExpression;
 import org.eclipse.ui.internal.expressions.WorkbenchWindowExpression;
 import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
 import org.eclipse.ui.internal.services.EvaluationService;
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
index 9ab0855..e760847 100644
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
@@ -101,6 +101,7 @@
  org.eclipse.jface.databinding;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.databinding.property;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.core.databinding.observable;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.e4.core.services;bundle-version="2.2.0",
  org.eclipse.e4.core.contexts;bundle-version="1.0.0",
  org.eclipse.e4.core.di;bundle-version="1.1.0",
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/UtilTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/UtilTest.java
index 3a39ed2..2ba15ce 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/UtilTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/activities/UtilTest.java
@@ -26,7 +26,7 @@
 
 import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.internal.expressions.TestExpression;
+import org.eclipse.core.expressions.TestExpression;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.ui.AbstractSourceProvider;
 import org.eclipse.ui.IPluginContribution;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
index c23234c..bec88b5 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/commands/CommandEnablementTest.java
@@ -32,10 +32,10 @@
 import org.eclipse.core.commands.ICommandListener;
 import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.commands.IHandlerListener;
+import org.eclipse.core.expressions.CountExpression;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionConverter;
 import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.internal.expressions.CountExpression;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IExtensionPoint;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/WorkbenchWindowSubordinateSourcesTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/WorkbenchWindowSubordinateSourcesTests.java
index 7e706b7..b189d3d 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/WorkbenchWindowSubordinateSourcesTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/internal/WorkbenchWindowSubordinateSourcesTests.java
@@ -14,10 +14,10 @@
 
 package org.eclipse.ui.tests.internal;
 
+import org.eclipse.core.expressions.EqualsExpression;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.internal.expressions.EqualsExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
+import org.eclipse.core.expressions.WithExpression;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
index a83b3bc..fe8ffd3 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/markers/MarkerTesterTest.java
@@ -19,7 +19,7 @@
 
 import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.internal.expressions.TestExpression;
+import org.eclipse.core.expressions.TestExpression;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IProject;
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/services/EvaluationServiceTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/services/EvaluationServiceTest.java
index 3417183..1655344 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/services/EvaluationServiceTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/services/EvaluationServiceTest.java
@@ -27,8 +27,8 @@
 import org.eclipse.core.expressions.ExpressionConverter;
 import org.eclipse.core.expressions.ExpressionInfo;
 import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.internal.expressions.TestExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
+import org.eclipse.core.expressions.TestExpression;
+import org.eclipse.core.expressions.WithExpression;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionRegistry;
 import org.eclipse.core.runtime.Platform;
diff --git a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
index 2a53ecf..e618e17 100644
--- a/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@
 Bundle-Activator: org.eclipse.ui.tests.TestPlugin
 Bundle-Vendor: Eclipse.org
 Require-Bundle: org.eclipse.core.resources,
- org.eclipse.core.expressions,
+ org.eclipse.core.expressions;bundle-version="3.7.0",
  org.eclipse.ui,
  org.junit,
  org.eclipse.ui.ide,