[Schmitzm-commits] r1086 - trunk/src/schmitzm/lang

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Sat Oct 9 22:00:59 CEST 2010


Author: mojays
Date: 2010-10-09 22:00:58 +0200 (Sat, 09 Oct 2010)
New Revision: 1086

Modified:
   trunk/src/schmitzm/lang/ResourceProvider.java
Log:
Workaround in ResourceProvider replaced by using ResourceBundle.Control.getNoFallbackControl(..).
Hope, this also deals with all ResourceProvider functionalitie, like #resetResourceBundle(..).
Little test in Xulu was successful.

Modified: trunk/src/schmitzm/lang/ResourceProvider.java
===================================================================
--- trunk/src/schmitzm/lang/ResourceProvider.java	2010-10-09 17:46:52 UTC (rev 1085)
+++ trunk/src/schmitzm/lang/ResourceProvider.java	2010-10-09 20:00:58 UTC (rev 1086)
@@ -88,7 +88,10 @@
  * @version 1.0
  */
 public class ResourceProvider {
-	/**
+    /** Default {@link ResourceBundle.Control} with no fallback */
+    private static final ResourceBundle.Control RBC_NOFALLBACK = ResourceBundle.Control.getNoFallbackControl( ResourceBundle.Control.FORMAT_DEFAULT );
+  
+    /**
 	 * Enthaelt automatisch alle erzeugten {@link ResourceProvider}. Wird im
 	 * Konstruktor von {@link ResourceProvider} automatisch befuellt.<br>
 	 */
@@ -451,38 +454,41 @@
 		}
 
 		try {
-		    // PROBLEM: ResourceBundle.getBundle(.) faellt zunaechst auf
-		    //          das Bundle in der DefaultLocale zurueck, bevor
-		    //          auf den FallBack (Root) zurueckgegriffen wird.
-		    // -> wird die Methode fuer eine explizite Locale aufgerufen,
-		    //    die es nicht gibt, liefert sie nicht den FallBack,
-		    //    sondern die DefaultLocale
-		    //
-		    // Workaround: Wenn "requestedLocale" gesetzt und von der
-		    //             DefaultLocale abweicht, wird die DefaultLocale
-		    //             "kurzzeitig" umgestellt, so dass auf den
-		    //             FallBack zurueckgegriffen wird
-		    Locale resetDefaultLocale = null;
-		    if ( requestedLocale != null && !requestedLocale.equals(Locale.getDefault()) ) {
-		      resetDefaultLocale = Locale.getDefault();
-		      Locale.setDefault(requestedLocale);
-		    }
+// Workaround replaced by using: RBC_NOFALLBACK := ResourceBundle.Control.getNoFallbackControl(..)
+// I hope this also deals with all ResourceProvider functionalitie, like #resetResourceBundle(..)
+//
+//		    // PROBLEM: ResourceBundle.getBundle(.) faellt zunaechst auf
+//		    //          das Bundle in der DefaultLocale zurueck, bevor
+//		    //          auf den FallBack (Root) zurueckgegriffen wird.
+//		    // -> wird die Methode fuer eine explizite Locale aufgerufen,
+//		    //    die es nicht gibt, liefert sie nicht den FallBack,
+//		    //    sondern die DefaultLocale
+//		    //
+//		    // Workaround: Wenn "requestedLocale" gesetzt und von der
+//		    //             DefaultLocale abweicht, wird die DefaultLocale
+//		    //             "kurzzeitig" umgestellt, so dass auf den
+//		    //             FallBack zurueckgegriffen wird
+//		    Locale resetDefaultLocale = null;
+//		    if ( requestedLocale != null && !requestedLocale.equals(Locale.getDefault()) ) {
+//		      resetDefaultLocale = Locale.getDefault();
+//		      Locale.setDefault(requestedLocale);
+//		    }
 		  
 		    // Ressource im gesetzten Bundle suchen
 			final ResourceBundle pBundle = ResourceBundle.getBundle(
-					primaryBundle, locale);
+					primaryBundle, locale, RBC_NOFALLBACK);
 			
-			// Ende von Workaroud: Wenn DefaulLocale umgestellt wurde, wieder
-			//                     zurueck-switchen
-			if ( resetDefaultLocale != null )
-			  Locale.setDefault(resetDefaultLocale);
+//			// Ende von Workaroud: Wenn DefaulLocale umgestellt wurde, wieder
+//			//                     zurueck-switchen
+//			if ( resetDefaultLocale != null )
+//			  Locale.setDefault(resetDefaultLocale);
 			
 			return pBundle.getObject(prefix + key);
 		} catch (final MissingResourceException err) {
 			// Ressource im Standard-Bundle suchen
 			try {
 				return ResourceBundle.getBundle(defaultResourceBundle,
-						locale).getObject(key);
+						locale, RBC_NOFALLBACK).getObject(key);
 			} catch (final MissingResourceException err2) {
 				// Wenn Ressource auch im Standard-Bundle nicht vorhanden ist,
 				// Fehler werfen (oder ignorieren)



More information about the Schmitzm-commits mailing list