Skip to content

Managed, hierarchical Locale-based ResourceBundles for Java

Notifications You must be signed in to change notification settings

tralamar/resourceBundleStore

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ResourceBundleStore

Managed, cached, hierarchical Locale-based ResourceBundles for Java.

Whether you load ResourceBundles from your application's property files, their serialized equivalents via JPA, or an alternative data store, use a ResourceBundleStore to select the best-matching bundle for a passed-in Locale, and cache (using Google Guava's CacheBuilder) the loaded data to minimise fetches.

@Test
public void inMemoryTest() {
    final ResourceBundleStore rbs = new ResourceBundleStore( /* Default */ Locale.UK);
    rbs.registerLoader( new ObjectArrayLoader( Locale.UK, new Object[][] {{"name", "Prince Andrew"}} ) );
    rbs.registerLoader( new ObjectArrayLoader( Locale.US, new Object[][] {{"name", "Andrew"}} ) );
    rbs.registerLoader( new ObjectArrayLoader( SWITZ_DE,  new Object[][] {{"name", "Anders"}} ) );

    assertThat( rbs.getString( "name", Locale.UK), is("Prince Andrew"));
    assertThat( rbs.getString( "name", Locale.US), is("Andrew"));
    assertThat( rbs.getString( "name", Locale.GERMANY), is("Prince Andrew"));
    assertThat( rbs.getString( "name", SWITZ_DE), is("Anders"));
    assertThat( rbs.getString( "name", Locale.CHINESE), is("Prince Andrew"));
}

@Inject JpaLoader jpaLoader;

@Test
public void jpaTest() {
    final ResourceBundleStore rbs = new ResourceBundleStore( /* Default */ Locale.UK);
    rbs.registerLoader(jpaLoader);

    assertThat( rbs.getString( "name", Locale.US), is("Andrew"));
    assertThat( rbs.getKeys( Locale.US ), hasItems("name", ...));

    rbs.invalidateCache( Locale.CHINESE );
    rbs.invalidateCache();
    assertThat( rbs.cacheSize(), is(0L));
}

About

Managed, hierarchical Locale-based ResourceBundles for Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published