I should also add that I'm the primary mentor of Hendrik so definitely the
missing communication is completely my fault.

Best regards Lars
Am 29.08.2013 09:52 schrieb "Ed Merks" <ed.me...@gmail.com>:

>  Hi,
>
> It's difficult to avoid an emotional outburst at this type of thing.  I'm
> completely shocked that sweeping changes of this nature go unannounced on
> this mailing list. Sorry, a blog doesn't cut it...
>
> It's clear the current state is woefully incomplete.  I.e.,  we have
> IStructuredContentProvider<E, I> but ITreeContentProvider is still raw.
> Of course it's clear that a tree rarely has uniformly typed children, so
> what is the plan for the completion of JFace's APIs?  I question all this
> being committed to master in incremental stages like this...
>
> EMF is a sea of warnings with these changes, and eliminating those is
> weeks of work; work I can't begin because the changes are incomplete.   And
> of course this affects all users of JFace, not just EMF, so the overall
> impact to the community is hard to calculate.  The most disturbing part of
> all this is that I question whether it has even been well thought out.  For
> example, the following change is highly disturbing:
>
> public interface IStructuredContentProvider<E,I> extends
> IContentProvider<I> {
>     public E[] getElements(I inputElement);
> }
>
> Suppose I used it like this:
>
> public  class GenericContentProvider<E, I extends List<E>> implements
> IStructuredContentProvider<E, I> {
>
>     @Override
>     public void dispose() {
>     }
>
>     @Override
>     public void inputChanged(Viewer<I> viewer, I oldInput, I newInput) {
>     }
>
>     @Override
>     public E[] getElements(I inputElement) {
>         return (E[])inputElement.toArray();
>     }
> }
>
> I.e., I have a generic content provider implementation class that for a
> List<E> input returns the elements of that list.  But there is a warning in
> the code for "E[])inputElement.toArray();" and it's not something one can
> blithely ignore.  It will *never *be possible to create a generic
> subclass of IContentProvider that leaves E unsubstituted by a concrete
> implementation class, because it will never be possible to create an E[]
> array.   If you question this assertion, stop and ask yourself why
> java.util.Collection.toArray() if of type Object[] and not of type E[]?
> It's because it would not be possible to implement generic Collection
> implementation classes.
>
> I can't emphasize enough how disturbing I find the approach being taken
> here.  We're all familiar with using generics, but implementing generic
> classes properly remains complex and tricky and what's being done in JFace
> doesn't just impact the use of generics, it forces us all to revisit our
> implementation classes.   For example, perhaps someone can explain how
> org.eclipse.jface.viewers.ArrayContentProvider will be updated?   Probably
> just to "class ArrayContentProvider implements
> IStructuredContentProvider<Object, Object>" I would imagine, but that's not
> terribly useful is it?  I imagine the overall impact on the community is to
> make sweeping pointless changes of precisely this nature.   But suppose I
> even have a nice implementation class where I wanted
> IStructuredContentProvider<Foo, Bar>, my current implementation of
> getElements is probably wrong and would need to change to return Foo[].
> But of what value is that?  ContentProviders are generally just passed to a
> generic viewer, which uses it in a context where the types don't matter.
> So what's the benefit?
>
> Sorry to be so extreme in my opinion, but I would go further and argue
> that it's hard to imagine a significant set of scenarios where the new APIs
> are helpful even if this generic array issue wasn't just plain wrong or a
> horribly bad idea... I could go on and on, but as I said, it's hard to
> remain unemotional about this...
>
> Regards,
> Ed
>
>
> On 29/08/2013 7:46 AM, Lars Vogel wrote:
>
> Hi Eike,
>
>  this is a GSoC done by Hendrik (cc) and was announced on PlanetEclipse.
> See http://blog.vogella.com/2013/06/17/google-summer-of-code-at-eclipse-2/.
> John Arthone and I are the mentors for this project
>
>  The work is still ongoing so far the ComboViewer and the TableViewer
> have been converted as well several basic classes. We currently don't know
> if we can generify IStructuredSelection.
>
>  Input is very welcome, the umbrella bug is
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=402445 and every code
> change is pushed to Gerrit. Look in
> https://git.eclipse.org/r/#/q/platform/eclipse.platform.ui,n,z for
> Hendrik (so don't know how to narrow the query down to Hendrik only).
>
>  Best regards, Lars
>
>
> 2013/8/29 Eike Stepper <step...@esc-net.de>
>
>> Hi,
>>
>> After updating my target platform to Luna I noticed that my workspace is
>> full of raw type warnings caused by changes in JFace to generify its APIs,
>> for example Viewer. But the changes look incomplete, e.g.,
>> ViewerDropAdapter.getViewer() is still a raw type. Can we expect more such
>> changes, e.g., IStructuredSelection?
>>
>> Has there been an announcement for these changes? Is there any advice on
>> how to adjust our code?
>>
>> What about other Eclipse APIs, such as IAdaptable.getAdapter(Class), will
>> it be changed to <T> T getAdapter(Class<T>)?
>>
>> Cheers
>> /Eike
>>
>> ----
>> http://www.esc-net.de
>> http://thegordian.blogspot.com
>> http://twitter.com/eikestepper
>>
>>
>> _______________________________________________
>> cross-project-issues-dev mailing list
>> cross-project-issues-dev@eclipse.org
>> https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
>>
>
>
>
> _______________________________________________
> cross-project-issues-dev mailing 
> listcross-project-issues-dev@eclipse.orghttps://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
>
>
>
> _______________________________________________
> cross-project-issues-dev mailing list
> cross-project-issues-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev
>
>
_______________________________________________
cross-project-issues-dev mailing list
cross-project-issues-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev

Reply via email to