OSDN Git Service

Merge branch 'logging_888752' into logging_dalvik
authorJesse Wilson <jessewilson@google.com>
Thu, 10 Dec 2009 00:29:30 +0000 (16:29 -0800)
committerJesse Wilson <jessewilson@google.com>
Mon, 14 Dec 2009 20:52:27 +0000 (12:52 -0800)
Conflicts:
     libcore/logging/META-INF/MANIFEST.MF
     libcore/logging/src/main/java/java/util/logging/LogManager.java
     libcore/logging/src/main/java/java/util/logging/Logger.java
     libcore/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogManagerTest.java

libcore/logging/src/main/java/java/util/logging/LogRecord.java
libcore/logging/src/test/java/org/apache/harmony/logging/tests/java/util/logging/LogManagerTest.java

index 0a8e257..f810e12 100644 (file)
@@ -364,26 +364,25 @@ public class LogRecord implements Serializable {
      *  Init the sourceClass and sourceMethod fields.
      */
     private void initSource() {
-        if (!sourceInited) {
-            StackTraceElement[] elements = (new Throwable()).getStackTrace();
-            int i = 0;
-            String current = null;
-            FINDLOG: for (; i < elements.length; i++) {
-                current = elements[i].getClassName();
-                if (current.equals(Logger.class.getName())) {
-                    break FINDLOG;
-                }
-            }
-            while (++i < elements.length
-                    && elements[i].getClassName().equals(current)) {
-                // do nothing
-            }
-            if (i < elements.length) {
-                this.sourceClassName = elements[i].getClassName();
-                this.sourceMethodName = elements[i].getMethodName();
+        // BEGIN android-changed
+        if (sourceInited) {
+            return;
+        }
+
+        boolean sawLogger = false;
+        for (StackTraceElement element : new Throwable().getStackTrace()) {
+            String current = element.getClassName();
+            if (current.startsWith(Logger.class.getName())) {
+                sawLogger = true;
+            } else if (sawLogger) {
+                this.sourceClassName = element.getClassName();
+                this.sourceMethodName = element.getMethodName();
+                break;
             }
-            sourceInited = true;
         }
+
+        sourceInited = true;
+        // END android-changed
     }
 
     /**
index 3083dc9..4768837 100644 (file)
@@ -995,6 +995,39 @@ public class LogManagerTest extends TestCase {
         manager.reset();
     }
 
+    public void testReadConfigurationUpdatesRootLoggersHandlers()
+            throws IOException {
+        Properties properties = new Properties();
+        LogManager.getLogManager().readConfiguration(
+                EnvironmentHelper.PropertiesToInputStream(properties));
+
+        Logger root = Logger.getLogger("");
+        assertEquals(0, root.getHandlers().length);
+
+        properties.put("handlers", "java.util.logging.ConsoleHandler");
+        LogManager.getLogManager().readConfiguration(
+                EnvironmentHelper.PropertiesToInputStream(properties));
+
+        assertEquals(1, root.getHandlers().length);
+    }
+
+    public void testReadConfigurationDoesNotUpdateOtherLoggers()
+            throws IOException {
+        Properties properties = new Properties();
+        LogManager.getLogManager().readConfiguration(
+                EnvironmentHelper.PropertiesToInputStream(properties));
+
+        Logger logger = Logger.getLogger("testReadConfigurationDoesNotUpdateOtherLoggers");
+        assertEquals(0, logger.getHandlers().length);
+
+        properties.put("testReadConfigurationDoesNotUpdateOtherLoggers.handlers",
+                "java.util.logging.ConsoleHandler");
+        LogManager.getLogManager().readConfiguration(
+                EnvironmentHelper.PropertiesToInputStream(properties));
+
+        assertEquals(0, logger.getHandlers().length);
+    }
+
     @TestTargets({
         @TestTargetNew(
             level = TestLevel.PARTIAL_COMPLETE,