java-decompiler: post-import cleanup (explicit defaults for all preferences)

master
Roman Shevchenko 10 years ago
parent 3854b67daa
commit 3104531729
  1. 51
      src/org/jetbrains/java/decompiler/main/DecompilerContext.java
  2. 2
      src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java
  3. 50
      src/org/jetbrains/java/decompiler/main/extern/IFernflowerPreferences.java
  4. 15
      src/org/jetbrains/java/decompiler/main/rels/MethodProcessorThread.java

@ -24,6 +24,8 @@ import org.jetbrains.java.decompiler.modules.renamer.PoolInterceptor;
import org.jetbrains.java.decompiler.struct.StructContext; import org.jetbrains.java.decompiler.struct.StructContext;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class DecompilerContext { public class DecompilerContext {
@ -38,7 +40,7 @@ public class DecompilerContext {
private static ThreadLocal<DecompilerContext> currentContext = new ThreadLocal<DecompilerContext>(); private static ThreadLocal<DecompilerContext> currentContext = new ThreadLocal<DecompilerContext>();
private HashMap<String, Object> properties = new HashMap<String, Object>(); private final Map<String, Object> properties;
private StructContext structcontext; private StructContext structcontext;
@ -54,49 +56,16 @@ public class DecompilerContext {
private IFernflowerLogger logger; private IFernflowerLogger logger;
private DecompilerContext(Map<String, Object> properties) {
private DecompilerContext(HashMap<String, Object> properties) { this.properties = properties;
this.properties.putAll(properties);
} }
public static void initContext(HashMap<String, Object> propertiesCustom) { public static void initContext(Map<String, Object> propertiesCustom) {
Map<String, Object> properties = new HashMap<String, Object>(IFernflowerPreferences.DEFAULTS);
HashMap<String, Object> mapDefault = new HashMap<String, Object>();
// default settings
mapDefault.put(IFernflowerPreferences.DECOMPILE_INNER, "1");
mapDefault.put(IFernflowerPreferences.DECOMPILE_CLASS_1_4, "1");
mapDefault.put(IFernflowerPreferences.DECOMPILE_ASSERTIONS, "1");
mapDefault.put(IFernflowerPreferences.REMOVE_BRIDGE, "1");
mapDefault.put(IFernflowerPreferences.REMOVE_SYNTHETIC, "0");
mapDefault.put(IFernflowerPreferences.HIDE_EMPTY_SUPER, "1");
mapDefault.put(IFernflowerPreferences.HIDE_DEFAULT_CONSTRUCTOR, "1");
mapDefault.put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "0");
mapDefault.put(IFernflowerPreferences.NO_EXCEPTIONS_RETURN, "1");
mapDefault.put(IFernflowerPreferences.DECOMPILE_ENUM, "1");
mapDefault.put(IFernflowerPreferences.FINALLY_DEINLINE, "1");
mapDefault.put(IFernflowerPreferences.REMOVE_GETCLASS_NEW, "1");
mapDefault.put(IFernflowerPreferences.LITERALS_AS_IS, "0");
mapDefault.put(IFernflowerPreferences.ASCII_STRING_CHARACTERS, "0");
mapDefault.put(IFernflowerPreferences.BOOLEAN_TRUE_ONE, "1");
mapDefault.put(IFernflowerPreferences.SYNTHETIC_NOT_SET, "1");
mapDefault.put(IFernflowerPreferences.UNDEFINED_PARAM_TYPE_OBJECT, "1");
mapDefault.put(IFernflowerPreferences.USE_DEBUG_VARNAMES, "1");
mapDefault.put(IFernflowerPreferences.MAX_PROCESSING_METHOD, "0");
mapDefault.put(IFernflowerPreferences.REMOVE_EMPTY_RANGES, "1");
mapDefault.put(IFernflowerPreferences.NEW_LINE_SEPARATOR, "0");
mapDefault.put(IFernflowerPreferences.INDENT_STRING, " ");
mapDefault.put(IFernflowerPreferences.IDEA_NOT_NULL_ANNOTATION, "1");
if (propertiesCustom != null) { if (propertiesCustom != null) {
mapDefault.putAll(propertiesCustom); properties.putAll(propertiesCustom);
} }
currentContext.set(new DecompilerContext(properties));
currentContext.set(new DecompilerContext(mapDefault));
} }
public static DecompilerContext getCurrentContext() { public static DecompilerContext getCurrentContext() {
@ -182,7 +151,7 @@ public class DecompilerContext {
if (logger != null) { if (logger != null) {
String severity = (String)getProperty(IFernflowerPreferences.LOG_LEVEL); String severity = (String)getProperty(IFernflowerPreferences.LOG_LEVEL);
if (severity != null) { if (severity != null) {
Integer iSeverity = IFernflowerLogger.mapLogLevel.get(severity.toUpperCase()); Integer iSeverity = IFernflowerLogger.mapLogLevel.get(severity.toUpperCase(Locale.US));
if (iSeverity != null) { if (iSeverity != null) {
logger.setSeverity(iSeverity); logger.setSeverity(iSeverity);
} }

@ -72,7 +72,7 @@ public class ConsoleDecompiler implements IBytecodeProvider, IDecompilatSaver {
if (isOption && arg.startsWith("-") && if (isOption && arg.startsWith("-") &&
arg.length() > 5 && arg.charAt(4) == '=') { arg.length() > 5 && arg.charAt(4) == '=') {
String value = arg.substring(5).toUpperCase(); String value = arg.substring(5).toUpperCase(Locale.US);
if ("TRUE".equals(value)) { if ("TRUE".equals(value)) {
value = "1"; value = "1";
} }

@ -15,8 +15,11 @@
*/ */
package org.jetbrains.java.decompiler.main.extern; package org.jetbrains.java.decompiler.main.extern;
public interface IFernflowerPreferences { import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public interface IFernflowerPreferences {
String REMOVE_BRIDGE = "rbr"; String REMOVE_BRIDGE = "rbr";
String REMOVE_SYNTHETIC = "rsy"; String REMOVE_SYNTHETIC = "rsy";
String DECOMPILE_INNER = "din"; String DECOMPILE_INNER = "din";
@ -30,28 +33,51 @@ public interface IFernflowerPreferences {
String REMOVE_GETCLASS_NEW = "rgn"; String REMOVE_GETCLASS_NEW = "rgn";
String LITERALS_AS_IS = "lit"; String LITERALS_AS_IS = "lit";
String BOOLEAN_TRUE_ONE = "bto"; String BOOLEAN_TRUE_ONE = "bto";
String ASCII_STRING_CHARACTERS = "asc";
String SYNTHETIC_NOT_SET = "nns"; String SYNTHETIC_NOT_SET = "nns";
String UNDEFINED_PARAM_TYPE_OBJECT = "uto"; String UNDEFINED_PARAM_TYPE_OBJECT = "uto";
String USE_DEBUG_VARNAMES = "udv"; String USE_DEBUG_VARNAMES = "udv";
String MAX_PROCESSING_METHOD = "mpm";
String REMOVE_EMPTY_RANGES = "rer"; String REMOVE_EMPTY_RANGES = "rer";
String ASCII_STRING_CHARACTERS = "asc";
String FINALLY_DEINLINE = "fdi"; String FINALLY_DEINLINE = "fdi";
String IDEA_NOT_NULL_ANNOTATION = "inn";
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
String FINALLY_CATCHALL = "FINALLY_CATCHALL"; String LOG_LEVEL = "log";
String FINALLY_SEMAPHOR = "FINALLY_SEMAPHOR"; String MAX_PROCESSING_METHOD = "mpm";
String RENAME_ENTITIES = "ren"; String RENAME_ENTITIES = "ren";
String USER_RENAMER_CLASS = "urc"; String USER_RENAMER_CLASS = "urc";
String LOG_LEVEL = "log";
String NEW_LINE_SEPARATOR = "nls"; String NEW_LINE_SEPARATOR = "nls";
String IDEA_NOT_NULL_ANNOTATION = "inn";
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
String INDENT_STRING = "ind"; String INDENT_STRING = "ind";
String LINE_SEPARATOR_WIN = "\r\n"; String LINE_SEPARATOR_WIN = "\r\n";
String LINE_SEPARATOR_LIN = "\n"; String LINE_SEPARATOR_LIN = "\n";
Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>() {{
put(REMOVE_BRIDGE, "1");
put(REMOVE_SYNTHETIC, "0");
put(DECOMPILE_INNER, "1");
put(DECOMPILE_CLASS_1_4, "1");
put(DECOMPILE_ASSERTIONS, "1");
put(HIDE_EMPTY_SUPER, "1");
put(HIDE_DEFAULT_CONSTRUCTOR, "1");
put(DECOMPILE_GENERIC_SIGNATURES, "0");
put(NO_EXCEPTIONS_RETURN, "1");
put(DECOMPILE_ENUM, "1");
put(REMOVE_GETCLASS_NEW, "1");
put(LITERALS_AS_IS, "0");
put(BOOLEAN_TRUE_ONE, "1");
put(ASCII_STRING_CHARACTERS, "0");
put(SYNTHETIC_NOT_SET, "1");
put(UNDEFINED_PARAM_TYPE_OBJECT, "1");
put(USE_DEBUG_VARNAMES, "1");
put(REMOVE_EMPTY_RANGES, "1");
put(FINALLY_DEINLINE, "1");
put(IDEA_NOT_NULL_ANNOTATION, "1");
put(LAMBDA_TO_ANONYMOUS_CLASS, "0");
put(MAX_PROCESSING_METHOD, "0");
put(RENAME_ENTITIES, "0");
put(NEW_LINE_SEPARATOR, "0");
put(INDENT_STRING, " ");
}});
} }

@ -135,17 +135,14 @@ public class MethodProcessorThread implements Runnable {
RootStatement root = DomHelper.parseGraph(graph); RootStatement root = DomHelper.parseGraph(graph);
if (!DecompilerContext.getOption(IFernflowerPreferences.FINALLY_CATCHALL)) { FinallyProcessor fproc = new FinallyProcessor(varproc);
FinallyProcessor fproc = new FinallyProcessor(varproc); while (fproc.iterateGraph(mt, root, graph)) {
while (fproc.iterateGraph(mt, root, graph)) {
//DotExporter.toDotFile(graph, new File("c:\\Temp\\fern2.dot"), true); //DotExporter.toDotFile(graph, new File("c:\\Temp\\fern2.dot"), true);
//System.out.println(graph.toString()); //System.out.println(graph.toString());
//System.out.println("~~~~~~~~~~~~~~~~~~~~~~ \r\n"+root.toJava());
//System.out.println("~~~~~~~~~~~~~~~~~~~~~~ \r\n"+root.toJava());
root = DomHelper.parseGraph(graph); root = DomHelper.parseGraph(graph);
}
} }
// remove synchronized exception handler // remove synchronized exception handler

Loading…
Cancel
Save