Author: tomekr
Date: Thu Feb 16 10:32:43 2017
New Revision: 1783193

URL: http://svn.apache.org/viewvc?rev=1783193&view=rev
Log:
OAK-5666: oak-upgrade should validate the paths

Modified:
    
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java

Modified: 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java?rev=1783193&r1=1783192&r2=1783193&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
 (original)
+++ 
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
 Thu Feb 16 10:32:43 2017
@@ -22,6 +22,7 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -89,7 +90,7 @@ public class MigrationOptions {
 
     private final Boolean srcExternalBlobs;
 
-    public MigrationOptions(MigrationCliArguments args) {
+    public MigrationOptions(MigrationCliArguments args) throws 
CliArgumentException {
         this.disableMmap = args.hasOption(OptionParserFactory.DISABLE_MMAP);
         this.copyBinaries = args.hasOption(OptionParserFactory.COPY_BINARIES);
         if (args.hasOption(OptionParserFactory.CACHE_SIZE)) {
@@ -110,9 +111,9 @@ public class MigrationOptions {
         } else {
             this.copyOrphanedVersions = epoch;
         }
-        this.includePaths = 
args.getOptionList(OptionParserFactory.INCLUDE_PATHS);
-        this.excludePaths = 
args.getOptionList(OptionParserFactory.EXCLUDE_PATHS);
-        this.mergePaths = args.getOptionList(OptionParserFactory.MERGE_PATHS);
+        this.includePaths = 
checkPaths(args.getOptionList(OptionParserFactory.INCLUDE_PATHS));
+        this.excludePaths = 
checkPaths(args.getOptionList(OptionParserFactory.EXCLUDE_PATHS));
+        this.mergePaths = 
checkPaths(args.getOptionList(OptionParserFactory.MERGE_PATHS));
         this.includeIndex = args.hasOption(OptionParserFactory.INCLUDE_INDEX);
         this.failOnError = args.hasOption(OptionParserFactory.FAIL_ON_ERROR);
         this.earlyShutdown = 
args.hasOption(OptionParserFactory.EARLY_SHUTDOWN);
@@ -369,4 +370,16 @@ public class MigrationOptions {
         return srcExternalBlobs;
     }
 
+    private static String[] checkPaths(String[] paths) throws 
CliArgumentException {
+        if (paths == null) {
+            return paths;
+        }
+        for (String p : paths) {
+            if (!PathUtils.isValid(p)) {
+                throw new CliArgumentException("Following path is not valid: " 
+ p, 1);
+            }
+        }
+        return paths;
+    }
+
 }


Reply via email to