Fix for  Bug 288428 -  [DataBinding] Test failures in M20090902-0900
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/ThreadRealm.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/ThreadRealm.java
index 877d87b..1226b74 100755
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/ThreadRealm.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/ThreadRealm.java
@@ -118,6 +118,11 @@
         
         try {
             block = true;
+
+            synchronized (queue) {
+                queue.notifyAll(); // so waitUntilBlocking can return
+            }
+
             while (block) {
                 Runnable runnable = null;
                 synchronized (queue) {
@@ -157,4 +162,24 @@
             queue.notifyAll();
         }
     }
+
+    /**
+     * Blocks until the ThreadRealm is blocking on its own thread.
+     */
+    public void waitUntilBlocking() {
+        if (Thread.currentThread() == thread) {
+            throw new IllegalStateException(
+                    "Cannot execute this method in the realm's own thread");
+        }
+
+        while (!block) {
+            synchronized (queue) {
+                try {
+                    queue.wait();
+                } catch (InterruptedException e) {
+                    Thread.currentThread().interrupt();
+                }
+            }
+        }
+    }
 }
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/swt/WidgetObservableThreadTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/swt/WidgetObservableThreadTest.java
index ec60abf..804748f 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/swt/WidgetObservableThreadTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/swt/WidgetObservableThreadTest.java
@@ -41,6 +41,7 @@
 				threadRealm.block();
 			}
 		}.start();
+		threadRealm.waitUntilBlocking();
 	}
 
 	protected void tearDown() throws Exception {