Bug 130338 Eclipse Core Expressions Property Testers not loaded on demand
The Eclipse Core Expressions framework provides a nice way to declare an enablement clause for arbitrary extension points. However, the property testers used by this framework are not loaded when referenced in an expression. Instead, clients that take advantage of the core expressions mechanism must either (1) wait for the property tester plugin to load by chance or (2) insert a hack to force the plugin that declares a necessary property tester to load, or worse yet (3) make the plugin that declares the property tester an early start up plugin (I hope you shuddered when you read that like I did when I typed it). So, I submit that the framwork, while trying to be performance-friendly has sacrificed the usability and consumeability of this highly useful framework by not declaring some quality, efficient mechanism to force the property tester to be available when needed. I'm open to suggestions on how this issue should be fixed, but I would suggest at a minimum that the propertyTester extension point declare a "forceLoad" attribute (which I'm happy to let default to false) so that property testers can decide when they are really important or optional. Granted, many people will probably want to set this flag to true; but better they do it this way rather than make their property tester plugins early startup plugins because they could find no other solution.
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/extensions/NavigatorContentDescriptor.java
INavigatorContentDescriptor, INavigatorContentExtPtConstants {
	private String id;
	private String name;
	private IConfigurationElement configElement;
	private int priority = Priority.NORMAL_PRIORITY_VALUE;
	private Expression enablement;
	private Expression possibleChildren;
	private String icon;
	private boolean activeByDefault;
	private IPluginContribution contribution;
	private Set overridingExtensions;
	private OverridePolicy overridePolicy;
	private String suppressedExtensionId;
	private INavigatorContentDescriptor overriddenDescriptor;
	private int hashCode;
	/**
	 * Creates a new content descriptor from a configuration element.
	 *