Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cross-project-issues-dev] re: Question about how to handle ICU...


Hey all...

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.

--Fitz

Brian Fitzpatrick
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 more.

Here's what I recommend,

Search for
com.ibm.icu;
bundle-version=
in all your manifest.mf files.
remove it.
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.

Import-Package
: com.ibm.icu.util; version="3.8",
com.ibm.icu.text;
version="3.8"

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?

Inactive hide details for answeranswer
answer
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.

= = = = =


Back to the top