I know the ICU discussion is old news,
but we've been discussing it at the DTP PMC & Team Leads level and
we're still not sure what the suggested course of action is.
We've already done the change throughout
DTP to simply bump up the upper bound of the "Require-Bundle"
statements for ICU everywhere to be 5.0. And things seem to work.
When I posed this on the planning council
list (albeit probably not the best choice, as this conversation originated
on the cross project list), David Williams (WTP) was kind enough to provide
the course of action he suggested to his WTP team (I've included that below),
but I was wondering if someone could explain the benefits of using "Import-Package"
directives instead of "Require-Bundle"...
I'm guessing it's as simple as not having
to pull in the entire bundle and only pulling in those packages you really
need, but I was hoping someone could provide a better explanation.
Thanks in advance.
Eclipse Data Tools Platform PMC Chair
Eclipse Data Tools Platform Connectivity Team Lead
Staff Software Engineer, Sybase, Inc.
----- Forwarded by Brian
Fitzpatrick/SYBASE on 02/04/2009 10:46 AM -----
Brian, here was my advice to WTP team (in short, use
import-package with lower bound only).
And, to clarify, I'd say only half the team followed my advice ... the
rest found it easier to mass search and replace tweaking the
upper bound, to 4.1 or 5.0 ... which works for now. If you've already changed,
I'm not sure it'd be worth
changing just for "future correctness" ... but, if you are going
to change, I'd recommend the same advice, below.
= = = = = =
What to do about ICU?
Thanks to you that have already made adjustments, but there's still 40
Here's what I recommend,
in all your manifest.mf files.
Red Xs appear.
Take a moment to see if you really need ICU where those red-Xs are.
I've seen a few cases where it was not required. Once in a test plugin.
Not required. (If you do, you have some pretty sophisticated tests!). Once
I saw in some code that was using StringTokenizer from ICU to parse a doctype
element, to get the public and system IDs. The normal Java StringTokenizer
would do in this case, Doctypes can not have supplementary characters ...
the only thing that StringTokenizer handles over the Java one.
To fix the red Xs, use the following in your manifest.mf files.
You may need only one of those packages.
Maybe others ... those were the only two I saw
in half a dozen cases.
Bonus Question: why no upper bound?
a. icu doesn't follow the rules we do so hard to know where an appropriate
bound would be, and
b. For %99.9 of what we use from ICU we are just using the ICU version
of a Java API. It will be very very ... no, extremely very ... unlikely
that API would ever be broken, even in ICU version 54.
This is all my advice anyway ... I'm sure there are valid alternatives.