Adding WebappVerifierCLI to run verifier via command line interface

git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/sandbox/trunk@1518 7e9141cc-0065-0410-87d8-b60c137991c4
diff --git a/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifier.java b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifier.java
index 25044c1..bf6557d 100644
--- a/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifier.java
+++ b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifier.java
@@ -273,7 +273,8 @@
         File destDir = new File(_workdir,destname);
         URI warURI = new URI("jar",path.toURI() + "!/",null);
         JarResource warResource = (JarResource)Resource.newResource(warURI);
-        warResource.extract(destDir,false);
+        // Extract the WAR (if needed)
+        warResource.copyTo(destDir);
         return destDir;
     }
 
diff --git a/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifierCLI.java b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifierCLI.java
new file mode 100644
index 0000000..7f3ee3b
--- /dev/null
+++ b/jetty-webapp-verifier/src/main/java/org/eclipse/jetty/webapp/verifier/WebappVerifierCLI.java
@@ -0,0 +1,87 @@
+package org.eclipse.jetty.webapp.verifier;
+
+import java.io.File;
+
+public class WebappVerifierCLI
+{
+    private static final String ARG_WEBARCHIVE = "webarchive";
+    private static final String ARG_RULESET = "ruleset";
+
+    public static void main(String[] args)
+    {
+        File webarchiveFile = null;
+        File rulesetFile = null;
+
+        for (String arg : args)
+        {
+            if (arg.startsWith("--" + ARG_WEBARCHIVE + "="))
+            {
+                webarchiveFile = new File(arg.substring(3 + ARG_WEBARCHIVE.length()));
+                continue;
+            }
+            if (arg.startsWith("--" + ARG_RULESET + "="))
+            {
+                rulesetFile = new File(arg.substring(3 + ARG_RULESET.length()));
+                continue;
+            }
+        }
+
+        boolean argsValid = true;
+
+        if (webarchiveFile == null)
+        {
+            argsValid = false;
+            System.err.println("ERROR: no " + ARG_WEBARCHIVE + " provided.");
+        }
+        else if (!webarchiveFile.exists())
+        {
+            argsValid = false;
+            System.err.println("ERROR: File [" + ARG_WEBARCHIVE + "] Not Found: " + webarchiveFile.getAbsolutePath());
+        }
+
+        if (rulesetFile == null)
+        {
+            argsValid = false;
+            System.err.println("ERROR: no " + ARG_RULESET + " provided.");
+        }
+        else if (!rulesetFile.exists())
+        {
+            argsValid = false;
+            System.err.println("ERROR: File [" + ARG_RULESET + "] Not Found: " + rulesetFile.getAbsolutePath());
+        }
+
+        if (!argsValid)
+        {
+            System.out.println("Usage: java -jar jetty-webapp-verifier.jar --" + ARG_WEBARCHIVE + "=<path_to_archive> " + "--" + ARG_RULESET
+                    + "=<path_to_ruleset>");
+            System.exit(-1);
+        }
+
+        try
+        {
+            // load ruleset
+            System.out.println("Loading Ruleset: " + rulesetFile);
+            RuleSet ruleset = RuleSet.load(rulesetFile);
+
+            // load webarchive
+            System.out.println("Loading Web Archive: " + webarchiveFile);
+            WebappVerifier verifier = ruleset.createWebappVerifier(webarchiveFile.toURI());
+            // verifier.setWorkDir(tempDir);
+
+            // submit for verification
+            System.out.println("Analyzing ...");
+            verifier.visitAll();
+
+            // show report
+            for (Violation violation : verifier.getViolations())
+            {
+                System.out.println(violation);
+            }
+            System.out.println("Done.");
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace(System.err);
+        }
+    }
+}