diff --git a/user/super/com/google/gwt/emul/java/util/logging/Level.java b/user/super/com/google/gwt/emul/java/util/logging/Level.java
index d6a416c..72c5305 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/Level.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/Level.java
@@ -88,27 +88,38 @@
       return null;
     }
 
-    name = name.toUpperCase(Locale.ROOT);
-    if (name.equals("ALL")) {
-      return ALL;
-    } else if (name.equals("CONFIG")) {
-      return CONFIG;
-    } else if (name.equals("FINE")) {
-      return FINE;
-    } else if (name.equals("FINER")) {
-      return FINER;
-    } else if (name.equals("FINEST")) {
-      return FINEST;
-    } else if (name.equals("INFO")) {
-      return INFO;
-    } else if (name.equals("OFF")) {
-      return OFF;
-    } else if (name.equals("SEVERE")) {
-      return SEVERE;
-    } else if (name.equals("WARNING")) {
-      return WARNING;
+    String value = name.toUpperCase(Locale.ROOT);
+    switch (value) {
+      case "ALL":
+        return Level.ALL;
+
+      case "CONFIG":
+        return Level.CONFIG;
+
+      case "FINE":
+        return Level.FINE;
+
+      case "FINER":
+        return Level.FINER;
+
+      case "FINEST":
+        return Level.FINEST;
+
+      case "INFO":
+        return Level.INFO;
+
+      case "OFF":
+        return Level.OFF;
+
+      case "SEVERE":
+        return Level.SEVERE;
+
+      case "WARNING":
+        return Level.WARNING;
+
+      default:
+        throw new IllegalArgumentException("Invalid level \"" + name + "\"");
     }
-    throw new IllegalArgumentException("Invalid level \"" + name + "\"");
   }
 
   protected Level() { }
diff --git a/user/super/com/google/gwt/emul/java/util/logging/LogManager.java b/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
index e5c3b68..b5374c2 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/LogManager.java
@@ -70,7 +70,7 @@
   private void addLoggerAndEnsureParents(Logger logger) {
     String name = logger.getName();
     String parentName = name.substring(0, Math.max(0, name.lastIndexOf('.')));
-    logger.setParent(ensureLogger(parentName));
+    logger.setParent(ensureLogger(parentName, logger.getResourceBundleName()));
     addLoggerImpl(logger);
   }
 
@@ -88,10 +88,10 @@
    *  APIs for getLogger and addLogger make it difficult to use those functions
    *  for this.
    */
-  Logger ensureLogger(String name) {
+  Logger ensureLogger(String name, String resourceName) {
     Logger logger = getLogger(name);
     if (logger == null) {
-      Logger newLogger = new Logger(name, null);
+      Logger newLogger = new Logger(name, resourceName);
       addLoggerAndEnsureParents(newLogger);
       return newLogger;
     }
diff --git a/user/super/com/google/gwt/emul/java/util/logging/Logger.java b/user/super/com/google/gwt/emul/java/util/logging/Logger.java
index 8be53bb..dba7351 100644
--- a/user/super/com/google/gwt/emul/java/util/logging/Logger.java
+++ b/user/super/com/google/gwt/emul/java/util/logging/Logger.java
@@ -46,11 +46,15 @@
   }
 
   public static Logger getLogger(String name) {
+    return getLogger(name, null);
+  }
+
+  public static Logger getLogger(String name, String resourceName) {
     // Use shortcut if logging is disabled to avoid parent logger creations in LogManager
     if (LOGGING_FALSE) {
-      return new Logger(name, "");
+      return new Logger(name, resourceName);
     }
-    return LogManager.getLogManager().ensureLogger(name);
+    return LogManager.getLogManager().ensureLogger(name, resourceName);
   }
 
   static void assertLoggingValues() {
@@ -155,8 +159,12 @@
     return LOGGING_FALSE ? null : parent;
   }
 
+  public String getResourceBundleName() {
+    return null;
+  }
+
   public boolean getUseParentHandlers() {
-    return LOGGING_FALSE ? null : useParentHandlers;
+    return LOGGING_FALSE ? false : useParentHandlers;
   }
 
   public boolean isLoggable(Level messageLevel) {
@@ -276,9 +284,7 @@
   // public static Logger getAnonymousLogger() {
   // public static Logger getAnonymousLogger(String resourceBundleName) {}
   // public Filter getFilter() {}
-  // public static Logger getLogger(String name, String resourceBundleName) {}
   // public ResourceBundle getResourceBundle() {}
-  // public String getResourceBundleName() {}
   // public void setFilter(Filter newFilter) {}
   // public void entering(String sourceClass, String sourceMethod) {}
   // public void entering(String sourceClass, String sourceMethod, Object param1) {}
