Author: tomekr
Date: Fri Sep 23 10:15:21 2016
New Revision: 1762044
URL: http://svn.apache.org/viewvc?rev=1762044&view=rev
Log:
OAK-4849: Refactor the MigrationCliArguments from implicit to explicit
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/CliUtils.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/OakUpgrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/DatastoreArguments.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationCliArguments.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArgumentsTest.java
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/CliUtils.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/CliUtils.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/CliUtils.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/CliUtils.java
Fri Sep 23 10:15:21 2016
@@ -20,35 +20,15 @@ import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.oak.upgrade.cli.parser.CliArgumentException;
-import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationCliArguments;
-import org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.io.Closer;
-import joptsimple.OptionParser;
-import joptsimple.OptionSet;
-
public class CliUtils {
private static final Logger log =
LoggerFactory.getLogger(OakUpgrade.class);
- public static MigrationCliArguments parseOrExit(OptionParser op, String...
args) {
- try {
- OptionSet options = op.parse(args);
- if (options.has(OptionParserFactory.HELP) ||
options.nonOptionArguments().isEmpty()) {
- displayUsage();
- return null;
- }
- return new MigrationCliArguments(options);
- } catch (Exception e) {
- System.exit(getReturnCode(e));
- return null;
- }
- }
-
public static void displayUsage() throws IOException {
System.out.println(getUsage().replace("${command}", "java -jar
oak-run-*-jr2.jar upgrade"));
}
@@ -62,18 +42,6 @@ public class CliUtils {
}
}
- public static int getReturnCode(Exception e) {
- if (e.getMessage() != null) {
- System.err.println(e.getMessage());
- }
- if (e instanceof CliArgumentException) {
- return ((CliArgumentException) e).getExitCode();
- } else {
- e.printStackTrace(System.err);
- return 1;
- }
- }
-
public static void handleSigInt(final Closer closer) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
Fri Sep 23 10:15:21 2016
@@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.spi.com
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.upgrade.RepositorySidegrade;
import org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade;
+import org.apache.jackrabbit.oak.upgrade.cli.parser.CliArgumentException;
import org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments;
import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions;
import org.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments;
@@ -42,37 +43,40 @@ public class MigrationFactory {
protected final StoreArguments stores;
+ protected final DatastoreArguments datastores;
+
protected final Closer closer;
- public MigrationFactory(MigrationOptions options, StoreArguments stores,
Closer closer) {
+ public MigrationFactory(MigrationOptions options, StoreArguments stores,
DatastoreArguments datastores, Closer closer) {
this.options = options;
this.stores = stores;
+ this.datastores = datastores;
this.closer = closer;
}
- public RepositoryUpgrade createUpgrade() throws IOException,
RepositoryException {
+ public RepositoryUpgrade createUpgrade() throws IOException,
RepositoryException, CliArgumentException {
RepositoryContext src = stores.getSrcStore().create(closer);
BlobStore srcBlobStore = new DataStoreBlobStore(src.getDataStore());
NodeStore dstStore = createTarget(closer, srcBlobStore);
return createUpgrade(src, dstStore);
}
- public RepositorySidegrade createSidegrade() throws IOException {
- BlobStore srcBlobStore =
stores.getDatastores().getSrcBlobStore().create(closer);
+ public RepositorySidegrade createSidegrade() throws IOException,
CliArgumentException {
+ BlobStore srcBlobStore = datastores.getSrcBlobStore().create(closer);
NodeStore srcStore = stores.getSrcStore().create(srcBlobStore, closer);
NodeStore dstStore = createTarget(closer, srcBlobStore);
return createSidegrade(srcStore, dstStore);
}
protected NodeStore createTarget(Closer closer, BlobStore srcBlobStore)
throws IOException {
- BlobStore dstBlobStore =
stores.getDatastores().getDstBlobStore(srcBlobStore).create(closer);
+ BlobStore dstBlobStore =
datastores.getDstBlobStore(srcBlobStore).create(closer);
NodeStore dstStore = stores.getDstStore().create(dstBlobStore, closer);
return dstStore;
}
protected RepositoryUpgrade createUpgrade(RepositoryContext source,
NodeStore dstStore) {
RepositoryUpgrade upgrade = new RepositoryUpgrade(source, dstStore);
-
upgrade.setCopyBinariesByReference(stores.getDatastores().getBlobMigrationCase()
== DatastoreArguments.BlobMigrationCase.COPY_REFERENCES);
+ upgrade.setCopyBinariesByReference(datastores.getBlobMigrationCase()
== DatastoreArguments.BlobMigrationCase.COPY_REFERENCES);
upgrade.setCopyVersions(options.getCopyVersions());
upgrade.setCopyOrphanedVersions(options.getCopyOrphanedVersions());
if (options.getIncludePaths() != null) {
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/OakUpgrade.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/OakUpgrade.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/OakUpgrade.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/OakUpgrade.java
Fri Sep 23 10:15:21 2016
@@ -25,8 +25,11 @@ import javax.jcr.RepositoryException;
import com.google.common.collect.Lists;
import com.google.common.io.Closer;
+import joptsimple.OptionSet;
import org.apache.jackrabbit.oak.spi.lifecycle.CompositeInitializer;
import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
+import org.apache.jackrabbit.oak.upgrade.cli.parser.CliArgumentException;
+import org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments;
import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationCliArguments;
import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions;
import org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory;
@@ -35,19 +38,39 @@ import org.apache.jackrabbit.oak.upgrade
public class OakUpgrade {
public static void main(String... args) throws IOException {
- MigrationCliArguments cliArguments =
CliUtils.parseOrExit(OptionParserFactory.create(), args);
- if (cliArguments == null) {
- return;
+ OptionSet options = OptionParserFactory.create().parse(args);
+ try {
+ MigrationCliArguments cliArguments = new
MigrationCliArguments(options);
+ if (cliArguments.hasOption(OptionParserFactory.HELP) ||
cliArguments.getArguments().isEmpty()) {
+ CliUtils.displayUsage();
+ return;
+ }
+ migrate(cliArguments);
+ } catch(CliArgumentException e) {
+ if (e.getMessage() != null) {
+ System.err.println(e.getMessage());
+ }
+ System.exit(e.getExitCode());
}
- migrate(cliArguments);
}
- public static void migrate(MigrationCliArguments argumentParser) throws
IOException {
- MigrationOptions options = argumentParser.getOptions();
- StoreArguments stores = argumentParser.getStoreArguments();
+ public static void migrate(MigrationCliArguments argumentParser) throws
IOException, CliArgumentException {
+ MigrationOptions options = new MigrationOptions(argumentParser);
+ options.logOptions();
+
+ StoreArguments stores = new StoreArguments(options,
argumentParser.getArguments());
+ stores.logOptions();
+
+ boolean srcEmbedded = stores.srcUsesEmbeddedDatastore();
+ DatastoreArguments datastores = new DatastoreArguments(options,
stores, srcEmbedded);
+
+ migrate(options, stores, datastores);
+ }
+
+ public static void migrate(MigrationOptions options, StoreArguments
stores, DatastoreArguments datastores) throws IOException, CliArgumentException
{
Closer closer = Closer.create();
CliUtils.handleSigInt(closer);
- MigrationFactory factory = new MigrationFactory(options, stores,
closer);
+ MigrationFactory factory = new MigrationFactory(options, stores,
datastores, closer);
try {
if (stores.getSrcStore().isJcr2()) {
upgrade(factory);
@@ -61,11 +84,11 @@ public class OakUpgrade {
}
}
- private static void upgrade(MigrationFactory migrationFactory) throws
IOException, RepositoryException {
+ private static void upgrade(MigrationFactory migrationFactory) throws
IOException, RepositoryException, CliArgumentException {
migrationFactory.createUpgrade().copy(createCompositeInitializer());
}
- private static void sidegrade(MigrationFactory migrationFactory) throws
IOException, RepositoryException {
+ private static void sidegrade(MigrationFactory migrationFactory) throws
IOException, RepositoryException, CliArgumentException {
migrationFactory.createSidegrade().copy();
}
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/DatastoreArguments.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/DatastoreArguments.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/DatastoreArguments.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/DatastoreArguments.java
Fri Sep 23 10:15:21 2016
@@ -32,16 +32,6 @@ import java.io.IOException;
import java.util.Map;
import static com.google.common.collect.Maps.newHashMap;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.COPY_BINARIES;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.DST_FBS;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.DST_FDS;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.DST_S3;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.DST_S3_CONFIG;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.IGNORE_MISSING_BINARIES;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.SRC_FBS;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.SRC_FDS;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.SRC_S3;
-import static
org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory.SRC_S3_CONFIG;
import static
org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.JCR2_DIR_XML;
/**
@@ -84,11 +74,14 @@ public class DatastoreArguments {
private final BlobMigrationCase blobMigrationCase;
- private final MigrationCliArguments parser;
+ private final MigrationOptions options;
- public DatastoreArguments(MigrationCliArguments parser, StoreArguments
storeArguments) throws CliArgumentException {
+ private final boolean srcEmbedded;
+
+ public DatastoreArguments(MigrationOptions options, StoreArguments
storeArguments, boolean srcEmbedded) throws CliArgumentException {
this.storeArguments = storeArguments;
- this.parser = parser;
+ this.options = options;
+ this.srcEmbedded = srcEmbedded;
try {
blobMigrationCase = discoverBlobMigrationCase();
@@ -102,8 +95,8 @@ public class DatastoreArguments {
}
try {
- definedSrcBlob = isSrcBlobStoreDefined() ?
getDefinedSrcBlobStore() : null;
- definedDstBlob = isDstBlobStoreDefined() ?
getDefinedDstBlobStore() : null;
+ definedSrcBlob = options.isSrcBlobStoreDefined() ?
getDefinedSrcBlobStore() : null;
+ definedDstBlob = options.isDstBlobStoreDefined() ?
getDefinedDstBlobStore() : null;
} catch(IOException e) {
log.error("Can't read the blob configuration", e);
throw new CliArgumentException(1);
@@ -114,7 +107,7 @@ public class DatastoreArguments {
public BlobStoreFactory getSrcBlobStore() throws IOException {
BlobStoreFactory result;
- if (isSrcBlobStoreDefined()) {
+ if (options.isSrcBlobStoreDefined()) {
result = definedSrcBlob;
} else if (blobMigrationCase == BlobMigrationCase.COPY_REFERENCES) {
result = new MissingBlobStoreFactory();
@@ -127,9 +120,9 @@ public class DatastoreArguments {
public BlobStoreFactory getDstBlobStore(BlobStore srcBlobStore) throws
IOException {
BlobStoreFactory result;
- if (isDstBlobStoreDefined()) {
+ if (options.isDstBlobStoreDefined()) {
result = definedDstBlob;
- } else if (blobMigrationCase == BlobMigrationCase.COPY_REFERENCES &&
(isSrcBlobStoreDefined() || storeArguments.getSrcType() == JCR2_DIR_XML)) {
+ } else if (blobMigrationCase == BlobMigrationCase.COPY_REFERENCES &&
(options.isSrcBlobStoreDefined() || storeArguments.getSrcType() ==
JCR2_DIR_XML)) {
result = new ConstantBlobStoreFactory(srcBlobStore);
} else if (blobMigrationCase == BlobMigrationCase.COPY_REFERENCES) {
result = new MissingBlobStoreFactory();
@@ -141,34 +134,26 @@ public class DatastoreArguments {
return result;
}
- public boolean isSrcBlobStoreDefined() {
- return parser.hasOption(SRC_FBS) || (parser.hasOption(SRC_S3_CONFIG)
&& parser.hasOption(SRC_S3)) || (parser.hasOption(SRC_FDS));
- }
-
- public boolean isDstBlobStoreDefined() {
- return parser.hasOption(DST_FBS) || (parser.hasOption(DST_S3_CONFIG)
&& parser.hasOption(DST_S3)) || parser.hasOption(DST_FDS);
- }
-
private BlobStoreFactory getDefinedSrcBlobStore() throws IOException {
- boolean ignoreMissingBinaries =
parser.hasOption(IGNORE_MISSING_BINARIES);
- if (parser.hasOption(SRC_FBS)) {
- return new FileBlobStoreFactory(parser.getOption(SRC_FBS));
- } else if (parser.hasOption(SRC_S3_CONFIG) &&
parser.hasOption(SRC_S3)) {
- return new S3DataStoreFactory(parser.getOption(SRC_S3_CONFIG),
parser.getOption(SRC_S3), ignoreMissingBinaries);
- } else if (parser.hasOption(SRC_FDS)) {
- return new FileDataStoreFactory(parser.getOption(SRC_FDS),
ignoreMissingBinaries);
+ boolean ignoreMissingBinaries = options.isIgnoreMissingBinaries();
+ if (options.isSrcFbs()) {
+ return new FileBlobStoreFactory(options.getSrcFbs());
+ } else if (options.isSrcS3()) {
+ return new S3DataStoreFactory(options.getSrcS3Config(),
options.getSrcS3(), ignoreMissingBinaries);
+ } else if (options.isSrcFds()) {
+ return new FileDataStoreFactory(options.getSrcFds(),
ignoreMissingBinaries);
} else {
return null;
}
}
private BlobStoreFactory getDefinedDstBlobStore() throws IOException {
- if (parser.hasOption(DST_FBS)) {
- return new FileBlobStoreFactory(parser.getOption(DST_FBS));
- } else if (parser.hasOption(DST_S3_CONFIG) &&
parser.hasOption(DST_S3)) {
- return new S3DataStoreFactory(parser.getOption(DST_S3_CONFIG),
parser.getOption(DST_S3), false);
- } else if (parser.hasOption(DST_FDS)) {
- return new FileDataStoreFactory(parser.getOption(DST_FDS), false);
+ if (options.isDstFbs()) {
+ return new FileBlobStoreFactory(options.getDstFbs());
+ } else if (options.isDstS3()) {
+ return new S3DataStoreFactory(options.getDstS3Config(),
options.getDstS3(), false);
+ } else if (options.isDstFds()) {
+ return new FileDataStoreFactory(options.getDstFds(), false);
} else {
return null;
}
@@ -211,10 +196,9 @@ public class DatastoreArguments {
}
private BlobMigrationCase discoverBlobMigrationCase() throws IOException {
- boolean srcDefined = isSrcBlobStoreDefined() ||
storeArguments.getSrcType() == JCR2_DIR_XML;
- boolean dstDefined = isDstBlobStoreDefined();
- boolean srcEmbedded = !storeArguments.srcHasExternalBlobReferences();
- boolean copyBinaries = parser.hasOption(COPY_BINARIES);
+ boolean srcDefined = options.isSrcBlobStoreDefined() ||
storeArguments.getSrcType() == JCR2_DIR_XML;
+ boolean dstDefined = options.isDstBlobStoreDefined();
+ boolean copyBinaries = options.isCopyBinaries();
boolean srcSegment = storeArguments.getSrcType().isSegment();
boolean dstSegment = storeArguments.getDstType().isSegment();
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationCliArguments.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationCliArguments.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationCliArguments.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationCliArguments.java
Fri Sep 23 10:15:21 2016
@@ -27,15 +27,9 @@ public final class MigrationCliArguments
private final List<String> arguments;
- private final MigrationOptions migrationOptions;
-
- private final StoreArguments storeArguments;
-
public MigrationCliArguments(OptionSet options) throws
CliArgumentException {
this.options = options;
- arguments = getNonOptionArguments();
- migrationOptions = new MigrationOptions(this);
- storeArguments = new StoreArguments(this);
+ this.arguments = getNonOptionArguments();
}
private List<String> getNonOptionArguments() {
@@ -67,15 +61,7 @@ public final class MigrationCliArguments
}
}
- public MigrationOptions getOptions() {
- return migrationOptions;
- }
-
- public StoreArguments getStoreArguments() {
- return storeArguments;
- }
-
- List<String> getArguments() {
+ public List<String> getArguments() {
return arguments;
}
}
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
Fri Sep 23 10:15:21 2016
@@ -21,6 +21,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
+import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,6 +59,30 @@ public class MigrationOptions {
private final boolean ignoreMissingBinaries;
+ private final String srcUser;
+
+ private final String srcPassword;
+
+ private final String dstUser;
+
+ private final String dstPassword;
+
+ private final String srcFbs;
+
+ private final String srcFds;
+
+ private final String srcS3Config;
+
+ private final String srcS3;
+
+ private final String dstFbs;
+
+ private final String dstFds;
+
+ private final String dstS3Config;
+
+ private final String dstS3;
+
public MigrationOptions(MigrationCliArguments args) {
this.disableMmap = args.hasOption(OptionParserFactory.DISABLE_MMAP);
this.copyBinaries = args.hasOption(OptionParserFactory.COPY_BINARIES);
@@ -79,16 +104,30 @@ public class MigrationOptions {
} else {
this.copyOrphanedVersions = epoch;
}
- this.includePaths =
split(args.getOption(OptionParserFactory.INCLUDE_PATHS));
- this.excludePaths =
split(args.getOption(OptionParserFactory.EXCLUDE_PATHS));
- this.mergePaths =
split(args.getOption(OptionParserFactory.MERGE_PATHS));
+ this.includePaths =
args.getOptionList(OptionParserFactory.INCLUDE_PATHS);
+ this.excludePaths =
args.getOptionList(OptionParserFactory.EXCLUDE_PATHS);
+ this.mergePaths = 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);
this.skipInitialization =
args.hasOption(OptionParserFactory.SKIP_INIT);
this.skipNameCheck =
args.hasOption(OptionParserFactory.SKIP_NAME_CHECK);
this.ignoreMissingBinaries =
args.hasOption(OptionParserFactory.IGNORE_MISSING_BINARIES);
- logOptions();
+
+ this.srcUser = args.getOption(OptionParserFactory.SRC_USER);
+ this.srcPassword = args.getOption(OptionParserFactory.SRC_USER);
+ this.dstUser = args.getOption(OptionParserFactory.DST_USER);
+ this.dstPassword = args.getOption(OptionParserFactory.DST_PASSWORD);
+
+ this.srcFbs = args.getOption(OptionParserFactory.SRC_FBS);
+ this.srcFds = args.getOption(OptionParserFactory.SRC_FDS);
+ this.srcS3 = args.getOption(OptionParserFactory.SRC_S3);
+ this.srcS3Config = args.getOption(OptionParserFactory.SRC_S3_CONFIG);
+
+ this.dstFbs = args.getOption(OptionParserFactory.DST_FBS);
+ this.dstFds = args.getOption(OptionParserFactory.DST_FDS);
+ this.dstS3 = args.getOption(OptionParserFactory.DST_S3);
+ this.dstS3Config = args.getOption(OptionParserFactory.DST_S3_CONFIG);
}
public boolean isCopyBinaries() {
@@ -147,7 +186,87 @@ public class MigrationOptions {
return ignoreMissingBinaries;
}
- private void logOptions() {
+ public String getSrcUser() {
+ return srcUser;
+ }
+
+ public String getSrcPassword() {
+ return srcPassword;
+ }
+
+ public String getDstUser() {
+ return dstUser;
+ }
+
+ public String getDstPassword() {
+ return dstPassword;
+ }
+
+ public String getSrcFbs() {
+ return srcFbs;
+ }
+
+ public String getSrcFds() {
+ return srcFds;
+ }
+
+ public String getSrcS3Config() {
+ return srcS3Config;
+ }
+
+ public String getSrcS3() {
+ return srcS3;
+ }
+
+ public String getDstFbs() {
+ return dstFbs;
+ }
+
+ public String getDstFds() {
+ return dstFds;
+ }
+
+ public String getDstS3Config() {
+ return dstS3Config;
+ }
+
+ public String getDstS3() {
+ return dstS3;
+ }
+
+ public boolean isSrcFds() {
+ return StringUtils.isNotBlank(srcFds);
+ }
+
+ public boolean isSrcFbs() {
+ return StringUtils.isNotBlank(srcFbs);
+ }
+
+ public boolean isSrcS3() {
+ return StringUtils.isNotBlank(srcS3) &&
StringUtils.isNotBlank(srcS3Config);
+ }
+
+ public boolean isDstFds() {
+ return StringUtils.isNotBlank(dstFds);
+ }
+
+ public boolean isDstFbs() {
+ return StringUtils.isNotBlank(dstFbs);
+ }
+
+ public boolean isDstS3() {
+ return StringUtils.isNotBlank(dstS3) &&
StringUtils.isNotBlank(dstS3Config);
+ }
+
+ public boolean isSrcBlobStoreDefined() {
+ return isSrcFbs() || isSrcFds() || isSrcS3();
+ }
+
+ public boolean isDstBlobStoreDefined() {
+ return isDstFbs() || isDstFds() || isDstS3();
+ }
+
+ public void logOptions() {
if (disableMmap) {
log.info("Disabling memory mapped file access for Segment Store");
}
@@ -200,14 +319,6 @@ public class MigrationOptions {
}
- private static String[] split(String list) {
- if (list == null) {
- return null;
- } else {
- return list.split(",");
- }
- }
-
private static Calendar parseVersionCopyArgument(String string) {
final Calendar calendar;
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
Fri Sep 23 10:15:21 2016
@@ -44,44 +44,37 @@ public class StoreArguments {
private static final Logger log =
LoggerFactory.getLogger(StoreArguments.class);
- private final MigrationCliArguments parser;
+ private final MigrationOptions options;
private final StoreDescriptor src;
private final StoreDescriptor dst;
- private final DatastoreArguments datastores;
-
private Boolean srcHasExternalBlobRefs;
- public StoreArguments(MigrationCliArguments parser) throws
CliArgumentException {
- this.parser = parser;
-
- List<StoreDescriptor> descriptors =
createStoreDescriptors(parser.getArguments());
+ public StoreArguments(MigrationOptions options, List<String> arguments)
throws CliArgumentException {
+ this.options = options;
+ List<StoreDescriptor> descriptors = createStoreDescriptors(arguments);
src = descriptors.get(0);
dst = descriptors.get(1);
+ }
+ public void logOptions() {
log.info("Source: {}", src);
log.info("Destination: {}", dst);
if (dst.getType() == SEGMENT) {
logSegmentVersion();
}
-
- datastores = new DatastoreArguments(parser, this);
}
public StoreFactory getSrcStore() {
- return src.getFactory(MigrationDirection.SRC, parser);
+ return src.getFactory(MigrationDirection.SRC, options);
}
public StoreFactory getDstStore() {
- return dst.getFactory(MigrationDirection.DST, parser);
- }
-
- public DatastoreArguments getDatastores() {
- return datastores;
+ return dst.getFactory(MigrationDirection.DST, options);
}
public StoreType getSrcType() {
@@ -111,11 +104,11 @@ public class StoreArguments {
return src.getPaths();
}
- boolean srcHasExternalBlobReferences() throws IOException {
+ public boolean srcUsesEmbeddedDatastore() throws IOException {
if (srcHasExternalBlobRefs == null) {
- srcHasExternalBlobRefs =
src.getFactory(StoreArguments.MigrationDirection.SRC,
parser).hasExternalBlobReferences();
+ srcHasExternalBlobRefs =
src.getFactory(StoreArguments.MigrationDirection.SRC,
options).hasExternalBlobReferences();
}
- return srcHasExternalBlobRefs;
+ return !srcHasExternalBlobRefs;
}
private static List<StoreDescriptor> createStoreDescriptors(List<String>
arguments) throws CliArgumentException {
@@ -250,8 +243,8 @@ public class StoreArguments {
return type;
}
- public StoreFactory getFactory(MigrationDirection direction,
MigrationCliArguments arguments) {
- return type.createFactory(paths, direction, arguments);
+ public StoreFactory getFactory(MigrationDirection direction,
MigrationOptions options) {
+ return type.createFactory(paths, direction, options);
}
@Override
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
Fri Sep 23 10:15:21 2016
@@ -37,7 +37,7 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
throw new UnsupportedOperationException();
}
@@ -53,7 +53,7 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
throw new UnsupportedOperationException();
}
@@ -69,7 +69,7 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
return new StoreFactory(new Jackrabbit2Factory(paths[0],
paths[1]));
}
@@ -85,17 +85,17 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
String username, password;
if (direction == MigrationDirection.SRC) {
- username = arguments.getOption(OptionParserFactory.SRC_USER);
- password =
arguments.getOption(OptionParserFactory.SRC_PASSWORD);
+ username = migrationOptions.getSrcUser();
+ password = migrationOptions.getSrcPassword();
} else {
- username = arguments.getOption(OptionParserFactory.DST_USER);
- password =
arguments.getOption(OptionParserFactory.DST_PASSWORD);
+ username = migrationOptions.getDstUser();
+ password = migrationOptions.getDstPassword();
}
return new StoreFactory(
- new JdbcFactory(paths[0],
arguments.getOptions().getCacheSizeInMB(), username, password));
+ new JdbcFactory(paths[0],
migrationOptions.getCacheSizeInMB(), username, password));
}
@Override
@@ -110,8 +110,8 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
- return new StoreFactory(new MongoFactory(paths[0],
arguments.getOptions().getCacheSizeInMB()));
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
+ return new StoreFactory(new MongoFactory(paths[0],
migrationOptions.getCacheSizeInMB()));
}
@Override
@@ -126,9 +126,9 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
String path = removeStart(paths[0], SEGMENT_OLD_PREFIX);
- return new StoreFactory(new SegmentFactory(path,
arguments.getOptions().isDisableMmap()));
+ return new StoreFactory(new SegmentFactory(path,
migrationOptions.isDisableMmap()));
}
@Override
@@ -143,8 +143,8 @@ public enum StoreType {
}
@Override
- public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationCliArguments arguments) {
- return new StoreFactory(new SegmentTarFactory(paths[0],
arguments.getOptions().isDisableMmap()));
+ public StoreFactory createFactory(String[] paths, MigrationDirection
direction, MigrationOptions migrationOptions) {
+ return new StoreFactory(new SegmentTarFactory(paths[0],
migrationOptions.isDisableMmap()));
}
@Override
@@ -164,7 +164,7 @@ public enum StoreType {
public abstract boolean matches(String argument);
- public abstract StoreFactory createFactory(String[] paths,
MigrationDirection direction, MigrationCliArguments arguments);
+ public abstract StoreFactory createFactory(String[] paths,
MigrationDirection direction, MigrationOptions migrationOptions);
public abstract boolean isSupportLongNames();
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
Fri Sep 23 10:15:21 2016
@@ -25,7 +25,6 @@ import java.util.Collection;
import java.util.List;
import com.google.common.base.Joiner;
-import joptsimple.OptionSet;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.upgrade.cli.AbstractOak2OakTest;
import org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade;
@@ -38,7 +37,9 @@ import org.apache.jackrabbit.oak.upgrade
import org.apache.jackrabbit.oak.upgrade.cli.parser.CliArgumentException;
import org.apache.jackrabbit.oak.upgrade.cli.parser.DatastoreArguments;
import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationCliArguments;
+import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions;
import org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory;
+import org.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -180,10 +181,12 @@ public class CopyBinariesTest extends Ab
String[] args = getArgs();
log.info("oak2oak {}", Joiner.on(' ').join(args));
try {
- OptionSet options = OptionParserFactory.create().parse(args);
- MigrationCliArguments cliArgs = new MigrationCliArguments(options);
- OakUpgrade.migrate(cliArgs);
- assertEquals(blobMigrationCase,
cliArgs.getStoreArguments().getDatastores().getBlobMigrationCase());
+ MigrationCliArguments cliArgs = new
MigrationCliArguments(OptionParserFactory.create().parse(args));
+ MigrationOptions options = new MigrationOptions(cliArgs);
+ StoreArguments stores = new StoreArguments(options,
cliArgs.getArguments());
+ DatastoreArguments datastores = new DatastoreArguments(options,
stores, stores.srcUsesEmbeddedDatastore());
+ OakUpgrade.migrate(options, stores, datastores);
+ assertEquals(blobMigrationCase, datastores.getBlobMigrationCase());
} catch(CliArgumentException e) {
if (blobMigrationCase ==
DatastoreArguments.BlobMigrationCase.UNSUPPORTED) {
return;
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArgumentsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArgumentsTest.java?rev=1762044&r1=1762043&r2=1762044&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArgumentsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArgumentsTest.java
Fri Sep 23 10:15:21 2016
@@ -16,14 +16,14 @@
*/
package org.apache.jackrabbit.oak.upgrade.cli.parser;
-import joptsimple.OptionSet;
import org.junit.Test;
public class StoreArgumentsTest {
@Test(expected = CliArgumentException.class)
public void testSameRepositoryFails() throws CliArgumentException {
- OptionSet options = OptionParserFactory.create().parse( "my/repo",
"my/repo");
- new MigrationCliArguments(options);
+ MigrationCliArguments parsed = new
MigrationCliArguments(OptionParserFactory.create().parse("my/repo", "my/repo"));
+ MigrationOptions options = new MigrationOptions(parsed);
+ new StoreArguments(options, parsed.getArguments());
}
}