private static BreakIterator createBreakInstance(LocaleProviderAdapter adapter, Locale locale, int type) { BreakIteratorProvider breakIteratorProvider = adapter.getBreakIteratorProvider(); BreakIterator iterator = null; switch (type) { case CHARACTER_INDEX: iterator = breakIteratorProvider.getCharacterInstance(locale); break; case WORD_INDEX: iterator = breakIteratorProvider.getWordInstance(locale); break; case LINE_INDEX: iterator = breakIteratorProvider.getLineInstance(locale); break; case SENTENCE_INDEX: iterator = breakIteratorProvider.getSentenceInstance(locale); break; } return iterator; }
@Override public BreakIteratorProvider getBreakIteratorProvider() { if (breakIteratorProvider == null) { BreakIteratorProvider provider = AccessController.doPrivileged( (PrivilegedAction<BreakIteratorProvider>) () -> new BreakIteratorProviderImpl( getAdapterType(), getLanguageTagSet("FormatData"))); synchronized (this) { if (breakIteratorProvider == null) { breakIteratorProvider = provider; } } } return breakIteratorProvider; }
/** * This method returns an instance of <code>BreakIterator</code> that will * iterate over characters as defined in the specified locale. * * @param locale The desired locale. * * @return A <code>BreakIterator</code> instance for the specified locale. */ public static BreakIterator getCharacterInstance (Locale locale) { BreakIterator r = getInstance("CharacterIterator", locale); if (r != null) return r; for (BreakIteratorProvider p : ServiceLoader.load(BreakIteratorProvider.class)) { for (Locale loc : p.getAvailableLocales()) { if (loc.equals(locale)) { BreakIterator bi = p.getCharacterInstance(locale); if (bi != null) return bi; break; } } } if (locale.equals(Locale.ROOT)) return new CharacterBreakIterator(); return getCharacterInstance(LocaleHelper.getFallbackLocale(locale)); }
/** * This method returns an instance of <code>BreakIterator</code> that will * iterate over line breaks as defined in the specified locale. * * @param locale The desired locale. * * @return A <code>BreakIterator</code> instance for the default locale. */ public static BreakIterator getLineInstance (Locale locale) { BreakIterator r = getInstance ("LineIterator", locale); if (r != null) return r; for (BreakIteratorProvider p : ServiceLoader.load(BreakIteratorProvider.class)) { for (Locale loc : p.getAvailableLocales()) { if (loc.equals(locale)) { BreakIterator bi = p.getLineInstance(locale); if (bi != null) return bi; break; } } } if (locale.equals(Locale.ROOT)) return new LineBreakIterator(); return getLineInstance(LocaleHelper.getFallbackLocale(locale)); }
/** * This method returns an instance of <code>BreakIterator</code> that will * iterate over sentences as defined in the specified locale. * * @param locale The desired locale. * * @return A <code>BreakIterator</code> instance for the default locale. */ public static BreakIterator getSentenceInstance (Locale locale) { BreakIterator r = getInstance ("SentenceIterator", locale); if (r != null) return r; for (BreakIteratorProvider p : ServiceLoader.load(BreakIteratorProvider.class)) { for (Locale loc : p.getAvailableLocales()) { if (loc.equals(locale)) { BreakIterator bi = p.getSentenceInstance(locale); if (bi != null) return bi; break; } } } if (locale.equals(Locale.ROOT)) return new SentenceBreakIterator(); return getSentenceInstance(LocaleHelper.getFallbackLocale(locale)); }
/** * This method returns an instance of <code>BreakIterator</code> that will * iterate over words as defined in the specified locale. * * @param locale The desired locale. * * @return A <code>BreakIterator</code> instance for the default locale. */ public static BreakIterator getWordInstance (Locale locale) { BreakIterator r = getInstance ("WordIterator", locale); if (r != null) return r; for (BreakIteratorProvider p : ServiceLoader.load(BreakIteratorProvider.class)) { for (Locale loc : p.getAvailableLocales()) { if (loc.equals(locale)) { BreakIterator bi = p.getWordInstance(locale); if (bi != null) return bi; break; } } } if (locale.equals(Locale.ROOT)) return new WordBreakIterator(); return getWordInstance(LocaleHelper.getFallbackLocale(locale)); }
public BreakIterator getObject(BreakIteratorProvider breakIteratorProvider, Locale locale, String key, Object... params) { assert params.length == 1; switch ((Integer)params[0]) { case CHARACTER_INDEX: return breakIteratorProvider.getCharacterInstance(locale); case WORD_INDEX: return breakIteratorProvider.getWordInstance(locale); case LINE_INDEX: return breakIteratorProvider.getLineInstance(locale); case SENTENCE_INDEX: return breakIteratorProvider.getSentenceInstance(locale); default: assert false : "should not happen"; } return null; }
private static BreakIterator createBreakInstance(Locale locale, int type) { LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(BreakIteratorProvider.class, locale); BreakIterator iterator = createBreakInstance(adapter, locale, type); if (iterator == null) { iterator = createBreakInstance(LocaleProviderAdapter.forJRE(), locale, type); } return iterator; }
@Override public BreakIteratorProvider getBreakIteratorProvider() { if (breakIteratorProvider == null) { BreakIteratorProvider provider = new BreakIteratorProviderImpl(getAdapterType(), getLanguageTagSet("FormatData")); synchronized (this) { if (breakIteratorProvider == null) { breakIteratorProvider = provider; } } } return breakIteratorProvider; }