java-decompiler: check for non-existent files
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 5 Nov 2014 12:33:13 +0000 (13:33 +0100)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Wed, 5 Nov 2014 12:33:13 +0000 (13:33 +0100)
plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/main/decompiler/ConsoleDecompiler.java

index 08ec6835a878f47d03fd9e28e396e666ce3b36b8..23b04c2d97712681503d2250b65636522104eb10 100644 (file)
@@ -42,8 +42,8 @@ public class ConsoleDecompiler implements IBytecodeProvider, IResultSaver {
     }
 
     Map<String, Object> mapOptions = new HashMap<String, Object>();
-    List<String> lstSources = new ArrayList<String>();
-    List<String> lstLibraries = new ArrayList<String>();
+    List<File> lstSources = new ArrayList<File>();
+    List<File> lstLibraries = new ArrayList<File>();
 
     boolean isOption = true;
     for (int i = 0; i < args.length - 1; ++i) { // last parameter - destination
@@ -65,10 +65,10 @@ public class ConsoleDecompiler implements IBytecodeProvider, IResultSaver {
         isOption = false;
 
         if (arg.startsWith("-e=")) {
-          lstLibraries.add(arg.substring(3));
+          addPath(lstLibraries, arg.substring(3));
         }
         else {
-          lstSources.add(arg);
+          addPath(lstSources, arg);
         }
       }
     }
@@ -87,16 +87,27 @@ public class ConsoleDecompiler implements IBytecodeProvider, IResultSaver {
     PrintStreamLogger logger = new PrintStreamLogger(System.out);
     ConsoleDecompiler decompiler = new ConsoleDecompiler(destination, mapOptions, logger);
 
-    for (String source : lstSources) {
-      decompiler.addSpace(new File(source), true);
+    for (File source : lstSources) {
+      decompiler.addSpace(source, true);
     }
-    for (String library : lstLibraries) {
-      decompiler.addSpace(new File(library), false);
+    for (File library : lstLibraries) {
+      decompiler.addSpace(library, false);
     }
 
     decompiler.decompileContext();
   }
 
+  @SuppressWarnings("UseOfSystemOutOrSystemErr")
+  private static void addPath(List<File> list, String path) {
+    File file = new File(path);
+    if (file.exists()) {
+      list.add(file);
+    }
+    else {
+      System.out.println("warn: missing '" + path + "', ignored");
+    }
+  }
+
   // *******************************************************************
   // Implementation
   // *******************************************************************