Add new Java 8 Logger API.
Change-Id: I5c2ad7cc9f0843063881d3034fb23cf925802b8b
diff --git a/tools/api-checker/config/gwt27_28userApi.conf b/tools/api-checker/config/gwt27_28userApi.conf
index 5af2a09..1ce0f43 100644
--- a/tools/api-checker/config/gwt27_28userApi.conf
+++ b/tools/api-checker/config/gwt27_28userApi.conf
@@ -179,3 +179,14 @@
# Added Objects.requireNonNull(Object, Supplier)
java.util.Objects::requireNonNull(Ljava/lang/Object;Ljava/lang/String;) OVERLOADED_METHOD_CALL
+
+# Added new Logger lazy logging methods
+java.util.logging.Logger::config(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::fine(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::finer(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::finest(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::info(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::log(Ljava/util/logging/Level;Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::severe(Ljava/lang/String;) OVERLOADED_METHOD_CALL
+java.util.logging.Logger::warning(Ljava/lang/String;) OVERLOADED_METHOD_CALL
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 c0c7587..b391248 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
@@ -17,6 +17,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.function.Supplier;
/**
* An emulation of the java.util.logging.Logger class. See
@@ -87,6 +88,13 @@
log(Level.CONFIG, msg);
}
+ public void config(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+ return;
+ }
+ log(Level.CONFIG, msgSupplier);
+ }
+
public void fine(String msg) {
if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
return;
@@ -94,6 +102,13 @@
log(Level.FINE, msg);
}
+ public void fine(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+ return;
+ }
+ log(Level.FINE, msgSupplier);
+ }
+
public void finer(String msg) {
if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
return;
@@ -101,6 +116,13 @@
log(Level.FINER, msg);
}
+ public void finer(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+ return;
+ }
+ log(Level.FINER, msgSupplier);
+ }
+
public void finest(String msg) {
if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
return;
@@ -108,6 +130,13 @@
log(Level.FINEST, msg);
}
+ public void finest(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+ return;
+ }
+ log(Level.FINEST, msgSupplier);
+ }
+
public void info(String msg) {
if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
return;
@@ -115,6 +144,13 @@
log(Level.INFO, msg);
}
+ public void info(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE || LOGGING_WARNING) {
+ return;
+ }
+ log(Level.INFO, msgSupplier);
+ }
+
public void warning(String msg) {
if (LOGGING_FALSE || LOGGING_SEVERE) {
return;
@@ -122,6 +158,13 @@
log(Level.WARNING, msg);
}
+ public void warning(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE || LOGGING_SEVERE) {
+ return;
+ }
+ log(Level.WARNING, msgSupplier);
+ }
+
public void severe(String msg) {
if (LOGGING_FALSE) {
return;
@@ -129,6 +172,13 @@
log(Level.SEVERE, msg);
}
+ public void severe(Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE) {
+ return;
+ }
+ log(Level.SEVERE, msgSupplier);
+ }
+
public Handler[] getHandlers() {
if (LOGGING_FALSE) {
return new Handler[0];
@@ -154,44 +204,48 @@
}
public boolean isLoggable(Level messageLevel) {
- return LOGGING_FALSE
- ? false : getEffectiveLevel().intValue() <= messageLevel.intValue();
+ if (LOGGING_FALSE) {
+ return false;
+ } else if (LOGGING_SEVERE) {
+ return messageLevel.intValue() >= Level.SEVERE.intValue();
+ } else if (LOGGING_WARNING) {
+ return messageLevel.intValue() >= Level.WARNING.intValue();
+ } else {
+ return messageLevel.intValue() >= getEffectiveLevel().intValue();
+ }
}
public void log(Level level, String msg) {
log(level, msg, null);
}
+ public void log(Level level, Supplier<String> msgSupplier) {
+ log(level, null, msgSupplier);
+ }
+
public void log(Level level, String msg, Throwable thrown) {
if (LOGGING_FALSE) {
return;
}
- if (LOGGING_SEVERE) {
- if (level.intValue() >= 1000) {
- actuallyLog(level, msg, thrown);
- }
- } else if (LOGGING_WARNING) {
- if (level.intValue() >= Level.WARNING.intValue()) {
- actuallyLog(level, msg, thrown);
- }
- } else {
+ if (isLoggable(level)) {
actuallyLog(level, msg, thrown);
}
}
+ public void log(Level level, Throwable thrown, Supplier<String> msgSupplier) {
+ if (LOGGING_FALSE) {
+ return;
+ }
+ if (isLoggable(level)) {
+ actuallyLog(level, msgSupplier.get(), thrown);
+ }
+ }
+
public void log(LogRecord record) {
if (LOGGING_FALSE) {
return;
}
- if (LOGGING_SEVERE) {
- if (record.getLevel().intValue() >= 1000) {
- actuallyLog(record);
- }
- } else if (LOGGING_WARNING) {
- if (record.getLevel().intValue() >= Level.WARNING.intValue()) {
- actuallyLog(record);
- }
- } else {
+ if (isLoggable(record.getLevel())) {
actuallyLog(record);
}
}
@@ -243,26 +297,22 @@
}
private void actuallyLog(Level level, String msg, Throwable thrown) {
- if (isLoggable(level)) {
- LogRecord record = new LogRecord(level, msg);
- record.setThrown(thrown);
- record.setLoggerName(getName());
- actuallyLog(record);
- }
+ LogRecord record = new LogRecord(level, msg);
+ record.setThrown(thrown);
+ record.setLoggerName(getName());
+ actuallyLog(record);
}
private void actuallyLog(LogRecord record) {
- if (isLoggable(record.getLevel())) {
- for (Handler handler : getHandlers()) {
+ for (Handler handler : getHandlers()) {
+ handler.publish(record);
+ }
+ Logger logger = getUseParentHandlers() ? getParent() : null;
+ while (logger != null) {
+ for (Handler handler : logger.getHandlers()) {
handler.publish(record);
}
- Logger logger = getUseParentHandlers() ? getParent() : null;
- while (logger != null) {
- for (Handler handler : logger.getHandlers()) {
- handler.publish(record);
- }
- logger = logger.getUseParentHandlers() ? logger.getParent() : null;
- }
+ logger = logger.getUseParentHandlers() ? logger.getParent() : null;
}
}