On 11.06.14 08:07, David M Williams wrote: > My main question is ... is this required for Luna? (I assume not, that > it shows up in "e4 incubator"? so could wait to SR1 if we find a safe, > non-breaking change? Or Mars if breaking?)
No I don't think we can fix the problem in Luna at all. > > Second, I've only barely read the details (they make my head spin) but > wondering if it is reasonable for "resolver.problem" to require Java 8 > AND javax.annotaion 1.0.0? That seems quite a mix of "old and new"? I > assume this is an attempt to "be compatible" with older bundles that > require javax.annotation 1.0? The problem is that "resolver.problem" e.g. makes use of it like this: class MyPart { @PostConstruct public void initUI(Composite comp) { } } and because "resolver.problem" requires JavaSE-8 it could live without any javax.annotation import itself and wire to the JRE but the problem is that this annotation is read by the e4 DI-Container (org.eclipse.e4.core.di) who himself requires javax.annotation 1.0.0 so if my bundle gets wired against the JRE and core.di against 1.0.0 it will of course *not* find my @PostConstruct resulting in the method not called at all. My current thinking is that we at e4/platform made the bad choice of not requireing JavaSE-1.6 2 years ago when we made Eclipse 4 generally available and so remove the need for javax.annotation bundle. > > If it helps, and if you haven't already, you might want to read > https://bugs.eclipse.org/bugs/show_bug.cgi?id=424909#c0and what it > points to, https://bugs.eclipse.org/bugs/show_bug.cgi?id=422981#c5 > > Now for some "wild ideas" to show my ignorance ... which helps > occasionally :) ... > > I notice in Orbit, all our "javax.annotation" bundles follow the import > what you export pattern .... that's good, such as > > *Export-Package*: javax.annotation;/version/="1.2.0", > javax.annotation.security;/version/="1.2.0", > javax.annotation.sql;/version/="1.2.0" > *Import-Package*: javax.annotation;/version/="1.2.0", > javax.annotation.security;/version/="1.2.0", > javax.annotation.sql;/version/="1.2.0" > > BUT, in this case, I wonder if we should be so "restrictive" about what > we import? Would the following be better? > > *Export-Package*: javax.annotation;/version/="1.2.0", > javax.annotation.security;/version/="1.2.0", > javax.annotation.sql;/version/="1.2.0" > *Import-Package*: javax.annotation, > javax.annotation.security, > javax.annotation.sql > > I suppose that's about the same as "requiring system.bundle"? Just "mix > in" with what ever in in running JRE? (Which, from > https://bugs.eclipse.org/bugs/show_bug.cgi?id=422981#c5sounds like it > would work, in this case ... that is, high degree of similarity, except > for "new" things? > I'm just throwing this out as an idea ... only the experts could say if > it makes sense. > > As for your suggestion > b) guava does import javax.annotation;1.0.0 instead > > I'm assuming our Orbit guava version is what they (the "third party") > provides (which is what we always strive for) so you might work with > them, to find out if there's a reason they did it the way they did, if > they'd be willing to change, etc. > I don't think so because from their point of view they are requireing JavaSE-1.6 and so they can wire to javax.annotation without packages. They could remove the javax.annotation import completely because they anyways require JavaSE-1.6 Tom _______________________________________________ e4-dev mailing list e4-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/e4-dev