slub.team team mailing list archive
-
slub.team team
-
Mailing list archive
-
Message #00047
[Merge] lp:~ralf-claussnitzer/goobi-production/bug-927561 into lp:goobi-production
Ralf Claussnitzer has proposed merging lp:~ralf-claussnitzer/goobi-production/bug-927561 into lp:goobi-production.
Requested reviews:
Ralf Claussnitzer (ralf-claussnitzer)
Related bugs:
Bug #927561 in Goobi.Production: "missing localMessage config crashes application"
https://bugs.launchpad.net/goobi-production/+bug/927561
For more details, see:
https://code.launchpad.net/~ralf-claussnitzer/goobi-production/bug-927561/+merge/93147
--
https://code.launchpad.net/~ralf-claussnitzer/goobi-production/bug-927561/+merge/93147
Your team Saxon State Library Team is subscribed to branch lp:goobi-production.
=== modified file 'src/messages/Messages.java'
--- src/messages/Messages.java 2011-12-20 08:07:09 +0000
+++ src/messages/Messages.java 2012-02-15 07:02:17 +0000
@@ -31,47 +31,66 @@
import de.sub.goobi.config.ConfigMain;
+import org.apache.log4j.Logger;
+
public class Messages {
private static final String BUNDLE_NAME = "messages.intmessages"; //$NON-NLS-1$
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
- static ResourceBundle localBundle;
+ static ResourceBundle localBundle;
+
+ private static final Logger myLogger = Logger.getLogger(Messages.class);
private Messages() {
}
public static String getString(String key) {
- File file = new File(ConfigMain.getParameter("localMessages"));
- if (file.exists()) {
- // Load local message bundle from file system only if file exists; if value not exists in bundle, use default bundle from classpath
-
- try {
- URL resourceURL = file.toURI().toURL();
- URLClassLoader urlLoader = new URLClassLoader(new URL[] { resourceURL });
- localBundle = ResourceBundle.getBundle("messages", FacesContext.getCurrentInstance().getViewRoot().getLocale(), urlLoader);
- } catch (Exception e) {
- }
-
- }
-
- // Load local message bundle from classpath
- try {
- if (localBundle != null) {
- if (localBundle.containsKey(key)) {
- String trans = localBundle.getString(key);
- return trans;
- }
- if (localBundle.containsKey(key.toLowerCase())) {
- return localBundle.getString(key.toLowerCase());
- }
- }
- } catch (RuntimeException e) {
- }
- try {
+ // load local message bundle if not yet loaded
+ if (localBundle == null) {
+ localBundle = loadLocalMessageBundleIfAvailable();
+ }
+
+ // do local translation
+ if (localBundle != null) {
+ if (localBundle.containsKey(key)) {
+ String trans = localBundle.getString(key);
+ return trans;
+ }
+ if (localBundle.containsKey(key.toLowerCase())) {
+ return localBundle.getString(key.toLowerCase());
+ }
+ }
+
+ // fallback to default resource bundle
+ if (RESOURCE_BUNDLE.containsKey(key)) {
String msg = RESOURCE_BUNDLE.getString(key);
return msg;
- } catch (RuntimeException e) {
+ } else {
return key;
}
}
+
+ /**
+ * Load local message bundle from file system only if file exists.
+ *
+ * @return Resource bundle for local messages. Returns NULL if no local message bundle could be found.
+ */
+ private static ResourceBundle loadLocalMessageBundleIfAvailable() {
+ String localMessages = ConfigMain.getParameter("localMessages");
+ if (localMessages != null) {
+ File file = new File(localMessages);
+ if (file.exists()) {
+ myLogger.info("Local message bundle found: " + localMessages);
+ try {
+ URL resourceURL = file.toURI().toURL();
+ URLClassLoader urlLoader = new URLClassLoader(new URL[] { resourceURL });
+ return ResourceBundle.getBundle("messages", FacesContext.getCurrentInstance().getViewRoot().getLocale(), urlLoader);
+ } catch (java.net.MalformedURLException muex) {
+ myLogger.error("Error reading local message bundle", muex);
+ }
+ }
+ }
+ return null;
+ }
+
}
Follow ups