Bug 168153 [DataBinding] Simplify the management of the default Realm
In the bug where Realms where born there was talk of making the setting of the Realm a little more foolproof. Currently when setting the Realm the developer needs to remember to retrieve the current Realm and to set it back in a finally block to be a good citizen. I think Boris spoke of something like the following to remedy this... Realm.setDefault(myRealm, new Runnable() { public void run() { //do stuff with myRealm as default } }); I've been finding myself writing a method that does just this in my own code. I think this should be added to Realm to ensure that the default realm is being set and reset correctly.
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Realm.java
private static ThreadLocal defaultRealm = new ThreadLocal();
	/**
	 * Returns the default realm for the calling thread, or <code>null</code>
	 * if no default realm has been set.
	 * 
	 * @return the default realm, or <code>null</code>
	 */
	public static Realm getDefault() {
		return (Realm) defaultRealm.get();
	}
	/**
	 * Sets the default realm for the calling thread. Each thread can have its
	 * own default realm.
	 * 
	 * @param realm
	 *            the realm, or <code>null</code> to clear the current default
	 *            realm
	 */
	public static void setDefault(Realm realm) {
		defaultRealm.set(realm);