summaryrefslogtreecommitdiffstats
path: root/src/org/jetbrains/java/decompiler/main/collectors
diff options
context:
space:
mode:
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-08-28 21:34:14 +0400
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>2014-08-28 21:34:19 +0400
commit076e4393f25bf1ad1ff1bd2853153e2b595dd90b (patch)
treef1a17a12ea762525b5efbc0778b0945d906c68c9 /src/org/jetbrains/java/decompiler/main/collectors
parent663631f0456fcc245dd835889f86541d75161c53 (diff)
downloadfernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.gz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.lz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.tar.xz
fernflower-076e4393f25bf1ad1ff1bd2853153e2b595dd90b.zip
java-decompiler: post-import cleanup (formatting and copyright)
Diffstat (limited to 'src/org/jetbrains/java/decompiler/main/collectors')
-rw-r--r--src/org/jetbrains/java/decompiler/main/collectors/CounterContainer.java50
-rw-r--r--src/org/jetbrains/java/decompiler/main/collectors/ImportCollector.java279
-rw-r--r--src/org/jetbrains/java/decompiler/main/collectors/VarNamesCollector.java77
3 files changed, 201 insertions, 205 deletions
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<String, String> mapSimpleNames = new HashMap<String, String>();
-
- private HashSet<String> setNotImportedNames = new HashSet<String>();
-
- 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<String> packImports() {
-
- List<Entry<String, String>> lst = new ArrayList<Entry<String, String>>(mapSimpleNames.entrySet());
-
- Collections.sort(lst, new Comparator<Entry<String, String>>() {
- public int compare(Entry<String, String> par0, Entry<String, String> par1) {
- int res = par0.getValue().compareTo(par1.getValue());
- if(res == 0) {
- res = par0.getKey().compareTo(par1.getKey());
- }
- return res;
- }
- });
-
- List<String> res = new ArrayList<String>();
- for(Entry<String, String> 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<String, String> mapSimpleNames = new HashMap<String, String>();
+
+ private HashSet<String> setNotImportedNames = new HashSet<String>();
+
+ 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<String> packImports() {
+
+ List<Entry<String, String>> lst = new ArrayList<Entry<String, String>>(mapSimpleNames.entrySet());
+
+ Collections.sort(lst, new Comparator<Entry<String, String>>() {
+ public int compare(Entry<String, String> par0, Entry<String, String> par1) {
+ int res = par0.getValue().compareTo(par1.getValue());
+ if (res == 0) {
+ res = par0.getKey().compareTo(par1.getKey());
+ }
+ return res;
+ }
+ });
+
+ List<String> res = new ArrayList<String>();
+ for (Entry<String, String> 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<String> usedNames = new HashSet<String>();
-
- public VarNamesCollector() {}
-
- public VarNamesCollector(HashSet<String> 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<String> getUsedNames() {
- return usedNames;
- }
-
+ private HashSet<String> usedNames = new HashSet<String>();
+
+ public VarNamesCollector() {
+ }
+
+ public VarNamesCollector(HashSet<String> 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<String> getUsedNames() {
+ return usedNames;
+ }
}