Community
Participate
Working Groups
In the class DeferredTreeContentManager (public API), there are some protected methods, which in turn are also API (it doesn't say anywhere not to override these), however, some of these methods, like startFetchingDeferredChildren, take non-API classes as parameters. Namely, PendingUpdateAdapter. I don't think it's correct to have an API method that takes non-API parameters. You could change the class name of that internal class and break anyone who overrides this method. I suggest deprecating the current methods that take this internal parameter and adding a new method for each of them that takes a more general, API parameter such as IAdaptable or IWorkbenchAdapter. That way you can hide the implementation of the actual item behind that interface, without breaking anyone currently using the one with internal parameters.
*** Bug 111028 has been marked as a duplicate of this bug. ***
Jim, what is the policy for cases like this? The original suggestion makes sense to me, or is there something else I could do? I guess just removing the method is not an option, but what about widening the parameter type?
The simple solution would be to move PendingUpdateAdapter out of internal. AFAICT, there is no need for it to stay. Personally all I want is to change the name displayed while the children are being fetched. A simple method on the ContentManager would work better for me. Or I suppose I could write my own. so I think as stated its on the architecture to send a clear message.
Made PendingUpdateAdapter API. This is a potential breaking change for subclasses of DeferredTreeContentManager. However, since there was no way for subclasses to override these methods, or to call them with anything other than null (which is not permitted), I believe this is still an OK change. Released >20060213.
Introduced a factory method in DeferredTreeContentProvider, made the constructor of PendingUpdateAdapter public, and added @since 3.2 tags. Released for I20060214-1600.
[I20060214-0800] Verfied on Windows XP.