Bug 299207 [CommonNavigator] Refactor NavigatorContentServiceContentProvider
There are a number of things about this code that make it less clear that it needs to be: 1) The internalGetChildren() and getElements() are largely duplicated. 2) The pipelinedChildren() private method returns the localSet which is never modified. 3) A ContributorTrackingSet is used in internalGetChildren() and getElements() when it is not necessary (setContribution() is never called on this, it should be just a LinkedHashSet) 4) The synchronization of methods is inconsistent 5) There are obsolete and unnecessary Javadoc comments 6) The order of the methods makes it hard to understand This refactoring (to be attached) cleans up these issues making the code easier to understand. No functionality change nor bug fix is intended here (except possibly by making the synchronization consistent).
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java
* Uses the supplied content service to acquire the available extensions.
	 * </p>
	 * 
	 * @param aContentService
	 *            The associated NavigatorContentService that should be used to
	 *            acquire information.
	 */
	public NavigatorContentServiceContentProvider(
			NavigatorContentService aContentService) {
		super();
		contentService = aContentService;
		isContentServiceSelfManaged = false;
		INavigatorViewerDescriptor vDesc = contentService.getViewerDescriptor();
		enforceHasChildren = vDesc.getBooleanConfigProperty(NavigatorViewerDescriptor.PROP_ENFORCE_HAS_CHILDREN);
	}
	/**
	 * 
	 * <p>
	 * Return the root objects for the supplied anInputElement. anInputElement
	 * is the root thing that the viewer visualizes.
	 * </p>
	 * <p>
	 * This method will call out to its {@link NavigatorContentService}&nbsp;for
	 * extensions that are enabled on the supplied anInputElement or enabled on
	 * the viewerId supplied when the {@link NavigatorContentService}&nbsp; was
	 * created (either by this class or its client). The extensions will then be
	 * queried for relevant content. The children returned from each extension
	 * will be aggregated and returned as is -- there is no additional sorting
	 * or filtering at this level.
	 * </p>