From 076e4393f25bf1ad1ff1bd2853153e2b595dd90b Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 28 Aug 2014 21:34:14 +0400 Subject: java-decompiler: post-import cleanup (formatting and copyright) --- .../main/collectors/CounterContainer.java | 50 ++-- .../main/collectors/ImportCollector.java | 279 ++++++++++----------- .../main/collectors/VarNamesCollector.java | 77 +++--- 3 files changed, 201 insertions(+), 205 deletions(-) (limited to 'src/org/jetbrains/java/decompiler/main/collectors') diff --git a/src/org/jetbrains/java/decompiler/main/collectors/CounterContainer.java b/src/org/jetbrains/java/decompiler/main/collectors/CounterContainer.java index dcc1968..04d50a7 100644 --- a/src/org/jetbrains/java/decompiler/main/collectors/CounterContainer.java +++ b/src/org/jetbrains/java/decompiler/main/collectors/CounterContainer.java @@ -1,37 +1,37 @@ /* - * Fernflower - The Analytical Java Decompiler - * http://www.reversed-java.com + * Copyright 2000-2014 JetBrains s.r.o. * - * (C) 2008 - 2010, Stiver + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * This software is NEITHER public domain NOR free software - * as per GNU License. See license.txt for more details. + * http://www.apache.org/licenses/LICENSE-2.0 * - * This software is distributed WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - package org.jetbrains.java.decompiler.main.collectors; public class CounterContainer { - public static final int STATEMENT_COUNTER = 0; - public static final int EXPRENT_COUNTER = 1; - public static final int VAR_COUNTER = 2; - - private int[] values = new int[]{1, 1, 1}; - - public void setCounter(int counter, int value) { - values[counter] = value; - } + public static final int STATEMENT_COUNTER = 0; + public static final int EXPRENT_COUNTER = 1; + public static final int VAR_COUNTER = 2; + + private int[] values = new int[]{1, 1, 1}; + + public void setCounter(int counter, int value) { + values[counter] = value; + } - public int getCounter(int counter) { - return values[counter]; - } + public int getCounter(int counter) { + return values[counter]; + } - public int getCounterAndIncrement(int counter) { - return values[counter]++; - } - + public int getCounterAndIncrement(int counter) { + return values[counter]++; + } } diff --git a/src/org/jetbrains/java/decompiler/main/collectors/ImportCollector.java b/src/org/jetbrains/java/decompiler/main/collectors/ImportCollector.java index cdc6529..f45bf27 100644 --- a/src/org/jetbrains/java/decompiler/main/collectors/ImportCollector.java +++ b/src/org/jetbrains/java/decompiler/main/collectors/ImportCollector.java @@ -1,157 +1,152 @@ /* - * Fernflower - The Analytical Java Decompiler - * http://www.reversed-java.com + * Copyright 2000-2014 JetBrains s.r.o. * - * (C) 2008 - 2010, Stiver + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * This software is NEITHER public domain NOR free software - * as per GNU License. See license.txt for more details. + * http://www.apache.org/licenses/LICENSE-2.0 * - * This software is distributed WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - package org.jetbrains.java.decompiler.main.collectors; -import java.io.BufferedWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map.Entry; - import org.jetbrains.java.decompiler.main.ClassesProcessor; -import org.jetbrains.java.decompiler.main.DecompilerContext; import org.jetbrains.java.decompiler.main.ClassesProcessor.ClassNode; +import org.jetbrains.java.decompiler.main.DecompilerContext; import org.jetbrains.java.decompiler.struct.StructContext; +import java.io.BufferedWriter; +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; + public class ImportCollector { - private static final String JAVA_LANG_PACKAGE = "java.lang"; - - private HashMap mapSimpleNames = new HashMap(); - - private HashSet setNotImportedNames = new HashSet(); - - private String currentPackageSlash = ""; - - private String currentPackagePoint = ""; - - public ImportCollector(ClassNode root) { - - String clname = root.classStruct.qualifiedName; - int index = clname.lastIndexOf("/"); - if(index >= 0) { - currentPackageSlash = clname.substring(0, index); - currentPackagePoint = currentPackageSlash.replace('/', '.'); - currentPackageSlash += "/"; - } - } - - public String getShortName(String fullname) { - return getShortName(fullname, true); - } - - public String getShortName(String fullname, boolean imported) { - - ClassesProcessor clproc = DecompilerContext.getClassprocessor(); - ClassNode node = clproc.getMapRootClasses().get(fullname.replace('.', '/')); - - String retname = null; - - if(node != null && node.classStruct.isOwn()) { - - retname = node.simpleName; - - while(node.parent != null && node.type == ClassNode.CLASS_MEMBER) { - retname = node.parent.simpleName+"."+retname; - node = node.parent; - } - - if(node.type == ClassNode.CLASS_ROOT) { - fullname = node.classStruct.qualifiedName; - fullname = fullname.replace('/', '.'); - } else { - return retname; - } - - } else if(node == null || !node.classStruct.isOwn()) { - fullname = fullname.replace('$', '.'); - } - - String nshort = fullname; - String npackage = ""; - - int lastpoint = fullname.lastIndexOf("."); - - if(lastpoint >= 0) { - nshort = fullname.substring(lastpoint+1); - npackage = fullname.substring(0, lastpoint); - } - - StructContext context = DecompilerContext.getStructcontext(); - - boolean existsDefaultClass = (context.getClass(currentPackageSlash+nshort) != null - && !npackage.equals(currentPackagePoint)) // current package - || (context.getClass(nshort) != null); // default package - - if(existsDefaultClass || - (mapSimpleNames.containsKey(nshort) && !npackage.equals(mapSimpleNames.get(nshort)))) { - return fullname; - } else if(!mapSimpleNames.containsKey(nshort)) { - mapSimpleNames.put(nshort, npackage); - - if(!imported) { - setNotImportedNames.add(nshort); - } - } - - return retname==null?nshort:retname; - } - - public void writeImports(BufferedWriter writer) throws IOException { - - for(String s: packImports()) { - writer.write("import "); - writer.write(s); - writer.write(";"); - writer.write(DecompilerContext.getNewLineSeparator()); - } - - } - - private List packImports() { - - List> lst = new ArrayList>(mapSimpleNames.entrySet()); - - Collections.sort(lst, new Comparator>() { - public int compare(Entry par0, Entry par1) { - int res = par0.getValue().compareTo(par1.getValue()); - if(res == 0) { - res = par0.getKey().compareTo(par1.getKey()); - } - return res; - } - }); - - List res = new ArrayList(); - for(Entry ent: lst) { - if(!setNotImportedNames.contains(ent.getKey()) // not the current class or one of the nested ones. Also not the empty package. - && !JAVA_LANG_PACKAGE.equals(ent.getValue()) - && ent.getValue().length() > 0) { - - String imp = ent.getValue()+"."+ent.getKey(); - res.add(imp); - } - } - - return res; - } - - + private static final String JAVA_LANG_PACKAGE = "java.lang"; + + private HashMap mapSimpleNames = new HashMap(); + + private HashSet setNotImportedNames = new HashSet(); + + private String currentPackageSlash = ""; + + private String currentPackagePoint = ""; + + public ImportCollector(ClassNode root) { + + String clname = root.classStruct.qualifiedName; + int index = clname.lastIndexOf("/"); + if (index >= 0) { + currentPackageSlash = clname.substring(0, index); + currentPackagePoint = currentPackageSlash.replace('/', '.'); + currentPackageSlash += "/"; + } + } + + public String getShortName(String fullname) { + return getShortName(fullname, true); + } + + public String getShortName(String fullname, boolean imported) { + + ClassesProcessor clproc = DecompilerContext.getClassprocessor(); + ClassNode node = clproc.getMapRootClasses().get(fullname.replace('.', '/')); + + String retname = null; + + if (node != null && node.classStruct.isOwn()) { + + retname = node.simpleName; + + while (node.parent != null && node.type == ClassNode.CLASS_MEMBER) { + retname = node.parent.simpleName + "." + retname; + node = node.parent; + } + + if (node.type == ClassNode.CLASS_ROOT) { + fullname = node.classStruct.qualifiedName; + fullname = fullname.replace('/', '.'); + } + else { + return retname; + } + } + else if (node == null || !node.classStruct.isOwn()) { + fullname = fullname.replace('$', '.'); + } + + String nshort = fullname; + String npackage = ""; + + int lastpoint = fullname.lastIndexOf("."); + + if (lastpoint >= 0) { + nshort = fullname.substring(lastpoint + 1); + npackage = fullname.substring(0, lastpoint); + } + + StructContext context = DecompilerContext.getStructcontext(); + + boolean existsDefaultClass = (context.getClass(currentPackageSlash + nshort) != null + && !npackage.equals(currentPackagePoint)) // current package + || (context.getClass(nshort) != null); // default package + + if (existsDefaultClass || + (mapSimpleNames.containsKey(nshort) && !npackage.equals(mapSimpleNames.get(nshort)))) { + return fullname; + } + else if (!mapSimpleNames.containsKey(nshort)) { + mapSimpleNames.put(nshort, npackage); + + if (!imported) { + setNotImportedNames.add(nshort); + } + } + + return retname == null ? nshort : retname; + } + + public void writeImports(BufferedWriter writer) throws IOException { + + for (String s : packImports()) { + writer.write("import "); + writer.write(s); + writer.write(";"); + writer.write(DecompilerContext.getNewLineSeparator()); + } + } + + private List packImports() { + + List> lst = new ArrayList>(mapSimpleNames.entrySet()); + + Collections.sort(lst, new Comparator>() { + public int compare(Entry par0, Entry par1) { + int res = par0.getValue().compareTo(par1.getValue()); + if (res == 0) { + res = par0.getKey().compareTo(par1.getKey()); + } + return res; + } + }); + + List res = new ArrayList(); + for (Entry ent : lst) { + if (!setNotImportedNames.contains(ent.getKey()) // not the current class or one of the nested ones. Also not the empty package. + && !JAVA_LANG_PACKAGE.equals(ent.getValue()) + && ent.getValue().length() > 0) { + + String imp = ent.getValue() + "." + ent.getKey(); + res.add(imp); + } + } + + return res; + } } diff --git a/src/org/jetbrains/java/decompiler/main/collectors/VarNamesCollector.java b/src/org/jetbrains/java/decompiler/main/collectors/VarNamesCollector.java index 5fd33c0..dfde971 100644 --- a/src/org/jetbrains/java/decompiler/main/collectors/VarNamesCollector.java +++ b/src/org/jetbrains/java/decompiler/main/collectors/VarNamesCollector.java @@ -1,50 +1,51 @@ /* - * Fernflower - The Analytical Java Decompiler - * http://www.reversed-java.com + * Copyright 2000-2014 JetBrains s.r.o. * - * (C) 2008 - 2010, Stiver + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * This software is NEITHER public domain NOR free software - * as per GNU License. See license.txt for more details. + * http://www.apache.org/licenses/LICENSE-2.0 * - * This software is distributed WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ - package org.jetbrains.java.decompiler.main.collectors; import java.util.HashSet; public class VarNamesCollector { - private HashSet usedNames = new HashSet(); - - public VarNamesCollector() {} - - public VarNamesCollector(HashSet setNames) { - usedNames.addAll(setNames); - } - - public void addName(String value) { - usedNames.add(value); - } - - public String getFreeName(int index) { - return getFreeName("var"+index); - } - - public String getFreeName(String proposition) { - - while(usedNames.contains(proposition)) { - proposition+="x"; - } - usedNames.add(proposition); - return proposition; - } - - public HashSet getUsedNames() { - return usedNames; - } - + private HashSet usedNames = new HashSet(); + + public VarNamesCollector() { + } + + public VarNamesCollector(HashSet setNames) { + usedNames.addAll(setNames); + } + + public void addName(String value) { + usedNames.add(value); + } + + public String getFreeName(int index) { + return getFreeName("var" + index); + } + + public String getFreeName(String proposition) { + + while (usedNames.contains(proposition)) { + proposition += "x"; + } + usedNames.add(proposition); + return proposition; + } + + public HashSet getUsedNames() { + return usedNames; + } } -- cgit v1.2.3