* 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
}
/**
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,