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;
+ }
+
}