General polish on ArgHandlerLogLevel to use strong types; also computing valid options from the enum instead of hard coding. Review by: jat (desk check) git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1723 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java index a009e2c..be9390d 100644 --- a/dev/core/src/com/google/gwt/dev/GWTShell.java +++ b/dev/core/src/com/google/gwt/dev/GWTShell.java
@@ -292,7 +292,7 @@ /** * Load a module. - * + * * @param moduleName name of the module to load * @param logger TreeLogger to use * @return the loaded module @@ -420,8 +420,8 @@ registerHandler(new ArgHandlerLogLevel() { @Override - public String[] getDefaultArgs() { - return new String[] {getTag(), doGetDefaultLogLevel()}; + protected Type getDefaultLogLevel() { + return doGetDefaultLogLevel(); } @Override @@ -670,8 +670,8 @@ * Can be override to change the default log level in subclasses. JUnit does * this for example. */ - protected String doGetDefaultLogLevel() { - return "INFO"; + protected Type doGetDefaultLogLevel() { + return Type.INFO; } /**
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerLogLevel.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerLogLevel.java index b79675f..ee08e85 100644 --- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerLogLevel.java +++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerLogLevel.java
@@ -20,16 +20,33 @@ import com.google.gwt.util.tools.ArgHandler; /** - * Arugment handler for processing the log level flag. + * Argument handler for processing the log level flag. */ public abstract class ArgHandlerLogLevel extends ArgHandler { - public String[] getDefaultArgs() { - return new String[]{getTag(), "INFO"}; + private static final String OPTIONS_STRING = computeOptionsString(); + + private static String computeOptionsString() { + StringBuffer sb = new StringBuffer(); + Type[] values = Type.values(); + for (int i = 0, c = values.length; i < c; ++i) { + if (i > 0) { + sb.append(", "); + } + if (i + 1 == c) { + sb.append("or "); + } + sb.append(values[i].name()); + } + return sb.toString(); + } + + public final String[] getDefaultArgs() { + return new String[] {getTag(), getDefaultLogLevel().name()}; } public String getPurpose() { - return "The level of logging detail: ERROR, WARN, INFO, TRACE, DEBUG, SPAM, or ALL"; + return "The level of logging detail: " + OPTIONS_STRING; } public String getTag() { @@ -37,23 +54,29 @@ } public String[] getTagArgs() { - return new String[]{"level"}; + return new String[] {"level"}; } public int handle(String[] args, int startIndex) { if (startIndex + 1 < args.length) { - TreeLogger.Type level = TreeLogger.Type.valueOf(args[startIndex + 1]); - if (level != null) { + try { + Type level = Type.valueOf(args[startIndex + 1]); setLogLevel(level); return 1; + } catch (IllegalArgumentException e) { + // Argument did not match any enum value; fall through to error case. } } System.err.println(getTag() + " should be followed by one of"); - System.err.println(" ERROR, WARN, INFO, TRACE, DEBUG, SPAM, or ALL"); + System.err.println(" " + OPTIONS_STRING); return -1; } public abstract void setLogLevel(Type level); + protected Type getDefaultLogLevel() { + return Type.INFO; + } + }
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java index 2237ccd..9249024 100644 --- a/user/src/com/google/gwt/junit/JUnitShell.java +++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -17,6 +17,7 @@ import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.core.ext.TreeLogger.Type; import com.google.gwt.dev.BootStrapPlatform; import com.google.gwt.dev.GWTShell; import com.google.gwt.dev.cfg.ModuleDef; @@ -352,8 +353,8 @@ } @Override - protected String doGetDefaultLogLevel() { - return "WARN"; + protected Type doGetDefaultLogLevel() { + return Type.WARN; } /**