<i18n dev> Trouble adding a JavaTimeDateTimePatternProvider implementation

Naoto Sato naoto.sato at oracle.com
Tue Sep 12 16:56:48 UTC 2023


Hi,

Unfortunately, the `SPI` provider is designed to provide SPI 
implementations, not the locale providers (set of SPI implementations) 
such as COMPAT, CLDR, or HOST. I believe the interface you referred to 
is the internal implementation class to supplement COMPAT with some 
lacking functionalities for java.time APIs, which is not public.

I think what I can recommend here is to migrate customer's environment 
to CLDR. In fact, choosing COMPAT is now deprecated as of JDK21 (emits a 
warning message on startup).

Naoto


On 9/11/23 11:40 AM, Tyler Kindy wrote:
> Hello all,
> 
> I'm working on a migration in one of my company's services from the 
> JRE's locale dataset to the Unicode CLDR. We're upgrading individual 
> customers at a time, so we need to be able to dynamically switch between 
> the two datasets at runtime depending on which customer we're processing 
> a request for.
> 
> The approach I've been prototyping uses the LocaleProviderAdapter SPI. 
> I'm implementing service providers for the various subclasses of 
> LocaleServiceProvider which select the dataset to use in the current 
> context and delegate to either the JRE or CLDR implementations 
> accordingly. I've made good strides with NumberFormatProvider and 
> DateFormatProvider, however I tried to implement 
> JavaTimeDateTimePatternProvider and ran into an exception:
> 
> ClassNotFoundException: 
> sun/util/locale/provider/SPILocaleProviderAdapter$JavaTimeDateTimePatternProviderDelegate
> 
> It seems most service provider interfaces have some kind of delegate 
> class defined in SPILocaleProviderAdapter, but 
> JavaTimeDateTimePatternProvider doesn't have one. Is that intentional? 
> Is there another way I can implement a service provider for this 
> particular interface?
> 
> I'd also appreciate general feedback on my approach. If there's a better 
> way to achieve this dynamic switching between JRE and CLDR data using 
> the standard platform APIs, I'd love to hear about it.
> 
> Thank you,
> Tyler Kindy


More information about the i18n-dev mailing list