[159168] [expressions] Expression support for any XML format
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
index f97c312..04abcad 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.core.internal.expressions;
+import org.w3c.dom.Element;
+
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -37,7 +39,13 @@
Expressions.checkAttribute(ATT_VALUE, value);
fExpectedValue= Expressions.convertArgument(value);
}
-
+
+ public EqualsExpression(Element element) throws CoreException {
+ String value= element.getAttribute(ATT_VALUE);
+ Expressions.checkAttribute(ATT_VALUE, value.length() > 0 ? value : null);
+ fExpectedValue= Expressions.convertArgument(value);
+ }
+
public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
Object element= context.getDefaultVariable();
return EvaluationResult.valueOf(element.equals(fExpectedValue));
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
index e982a39..284341d 100644
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
+++ b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
@@ -10,9 +10,13 @@
*******************************************************************************/
package org.eclipse.core.internal.expressions.tests;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
@@ -44,6 +48,10 @@
import org.eclipse.core.internal.expressions.TestExpression;
import org.eclipse.core.internal.expressions.WithExpression;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
public class ExpressionTests extends TestCase {
@@ -652,7 +660,27 @@
Expression exp= ExpressionConverter.getDefault().perform(enable);
ref(exp);
}
-
+
+ public void testReadDOMExpression() throws Exception {
+ IExtensionRegistry registry= Platform.getExtensionRegistry();
+ IConfigurationElement[] ces= registry.getConfigurationElementsFor("org.eclipse.core.expressions.tests", "testParticipants"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ DocumentBuilder builder= DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ URL url= ExpressionTestPlugin.getDefault().getBundle().getEntry("plugin.xml");
+ Document document= builder.parse(url.openStream());
+ NodeList testParticipants= document.getElementsByTagName("testParticipant");
+ for (int i= 0; i < testParticipants.getLength(); i++) {
+ Element elem= (Element)testParticipants.item(i);
+ String id = elem.getAttribute("id");
+ Element enable1= (Element)elem.getElementsByTagName("enablement").item(0);
+ IConfigurationElement enable2= findExtension(ces, id).getChildren("enablement")[0]; //$NON-NLS-1$
+
+ Expression exp1= ExpressionConverter.getDefault().perform(enable1);
+ Expression exp2= ExpressionConverter.getDefault().perform(enable2);
+ assertEquals(exp1, exp2);
+ }
+ }
+
public void testForcePluginActivation() throws Exception {
IExtensionRegistry registry= Platform.getExtensionRegistry();
IConfigurationElement[] ces= registry.getConfigurationElementsFor("org.eclipse.core.expressions.tests", "testParticipants"); //$NON-NLS-1$ //$NON-NLS-2$