Bug 545270 - Property.test should catch runtime exceptions

Runtime exceptions thrown by contributed code can cause unexpected
issues in the code far away on the call stack. Let catch them and throw
CoreException's with appropriate message, so that framework can properly
handle those exceptions.

Change-Id: I618e4ca780e9daaa8162ae6eea11808c5dc22ade
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
index 5c4961e..465bbac 100644
--- a/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.expressions/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.core.expressions; singleton:=true
-Bundle-Version: 3.6.300.qualifier
+Bundle-Version: 3.6.400.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.core.internal.expressions.ExpressionPlugin
 Bundle-Vendor: %providerName
diff --git a/bundles/org.eclipse.core.expressions/pom.xml b/bundles/org.eclipse.core.expressions/pom.xml
index 904d0b8..3bc4679 100644
--- a/bundles/org.eclipse.core.expressions/pom.xml
+++ b/bundles/org.eclipse.core.expressions/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.core</groupId>
   <artifactId>org.eclipse.core.expressions</artifactId>
-  <version>3.6.300-SNAPSHOT</version>
+  <version>3.6.400-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
index 2a67faf..ec8d40c 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/Property.java
@@ -16,6 +16,9 @@
 import org.eclipse.core.expressions.IPropertyTester;
 
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 
 public class Property {
 
@@ -57,8 +60,13 @@
 		}
 	}
 
-	public boolean test(Object receiver, Object[] args, Object expectedValue) {
-		return fTester.test(receiver, fName, args, expectedValue);
+	public boolean test(Object receiver, Object[] args, Object expectedValue) throws CoreException {
+		try {
+			return fTester.test(receiver, fName, args, expectedValue);
+		} catch (Exception e) {
+			String message = "Error evaluating " + this; //$NON-NLS-1$
+			throw new CoreException(new Status(IStatus.ERROR, ExpressionPlugin.getPluginId(), message, e));
+		}
 	}
 
 	@Override