You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2015/08/25 13:53:08 UTC
svn commit: r1697655 - in /jackrabbit/oak/trunk/oak-upgrade/src:
main/java/org/apache/jackrabbit/oak/upgrade/
main/java/org/apache/jackrabbit/oak/upgrade/version/
test/java/org/apache/jackrabbit/oak/upgrade/
test/java/org/apache/jackrabbit/oak/upgrade/...
Author: mreutegg
Date: Tue Aug 25 11:53:08 2015
New Revision: 1697655
URL: http://svn.apache.org/r1697655
Log:
OAK-3239: Port RepositoryUpgrade features to the RepositorySidegrade
Apply patch provided by Tomek Rękawek
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyNodeTypesUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryGroupMemberUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/UpgradeFromTwoSourcesTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/util/VersionCopyTestUtils.java
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Tue Aug 25 11:53:08 2015
@@ -16,38 +16,102 @@
*/
package org.apache.jackrabbit.oak.upgrade;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
import javax.jcr.RepositoryException;
-import com.google.common.base.Charsets;
+import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder;
+import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
-import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.LoggingCompositeHook;
+import org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier;
+import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
+import org.apache.jackrabbit.oak.upgrade.version.VersionableEditor;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.ImmutableSet.copyOf;
+import static com.google.common.collect.ImmutableSet.of;
+import static com.google.common.collect.Sets.union;
+import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_EXCLUDE_PATHS;
+import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_INCLUDE_PATHS;
+import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_MERGE_PATHS;
+import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.calculateEffectiveIncludePaths;
+import static org.apache.jackrabbit.oak.upgrade.version.VersionCopier.copyVersionStorage;
public class RepositorySidegrade {
/**
- * Logger instance
- */
- private static final Logger logger =
- LoggerFactory.getLogger(RepositorySidegrade.class);
-
- /**
* Target node store.
*/
private final NodeStore target;
private final NodeStore source;
- private boolean copyBinariesByReference = false;
+ /**
+ * Paths to include during the copy process. Defaults to the root path "/".
+ */
+ private Set<String> includePaths = DEFAULT_INCLUDE_PATHS;
+
+ /**
+ * Paths to exclude during the copy process. Empty by default.
+ */
+ private Set<String> excludePaths = DEFAULT_EXCLUDE_PATHS;
+
+ /**
+ * Paths to merge during the copy process. Empty by default.
+ */
+ private Set<String> mergePaths = DEFAULT_MERGE_PATHS;
+
+ private List<CommitHook> customCommitHooks = null;
+
+ VersionCopyConfiguration versionCopyConfiguration = new VersionCopyConfiguration();
+
+ /**
+ * Configures the version storage copy. Be default all versions are copied.
+ * One may disable it completely by setting {@code null} here or limit it to
+ * a selected date range: {@code <minDate, now()>}.
+ *
+ * @param minDate
+ * minimum date of the versions to copy or {@code null} to
+ * disable the storage version copying completely. Default value:
+ * {@code 1970-01-01 00:00:00}.
+ */
+ public void setCopyVersions(Calendar minDate) {
+ versionCopyConfiguration.setCopyVersions(minDate);
+ }
+
+ /**
+ * Configures copying of the orphaned version histories (eg. ones that are
+ * not referenced by the existing nodes). By default all orphaned version
+ * histories are copied. One may disable it completely by setting
+ * {@code null} here or limit it to a selected date range:
+ * {@code <minDate, now()>}. <br/>
+ * <br/>
+ * Please notice, that this option is overriden by the
+ * {@link #setCopyVersions(Calendar)}. You can't copy orphaned versions
+ * older than set in {@link #setCopyVersions(Calendar)} and if you set
+ * {@code null} there, this option will be ignored.
+ *
+ * @param minDate
+ * minimum date of the orphaned versions to copy or {@code null}
+ * to not copy them at all. Default value:
+ * {@code 1970-01-01 00:00:00}.
+ */
+ public void setCopyOrphanedVersions(Calendar minDate) {
+ versionCopyConfiguration.setCopyOrphanedVersions(minDate);
+ }
/**
* Creates a tool for copying the full contents of the source repository
@@ -62,12 +126,62 @@ public class RepositorySidegrade {
this.target = target;
}
- public boolean isCopyBinariesByReference() {
- return copyBinariesByReference;
+ /**
+ * Returns the list of custom CommitHooks to be applied before the final
+ * type validation, reference and indexing hooks.
+ *
+ * @return the list of custom CommitHooks
+ */
+ public List<CommitHook> getCustomCommitHooks() {
+ return customCommitHooks;
+ }
+
+ /**
+ * Sets the list of custom CommitHooks to be applied before the final
+ * type validation, reference and indexing hooks.
+ *
+ * @param customCommitHooks the list of custom CommitHooks
+ */
+ public void setCustomCommitHooks(List<CommitHook> customCommitHooks) {
+ this.customCommitHooks = customCommitHooks;
+ }
+
+ /**
+ * Sets the paths that should be included when the source repository
+ * is copied to the target repository.
+ *
+ * @param includes Paths to be included in the copy.
+ */
+ public void setIncludes(@Nonnull String... includes) {
+ this.includePaths = copyOf(checkNotNull(includes));
+ }
+
+ /**
+ * Sets the paths that should be excluded when the source repository
+ * is copied to the target repository.
+ *
+ * @param excludes Paths to be excluded from the copy.
+ */
+ public void setExcludes(@Nonnull String... excludes) {
+ this.excludePaths = copyOf(checkNotNull(excludes));
}
- public void setCopyBinariesByReference(boolean copyBinariesByReference) {
- this.copyBinariesByReference = copyBinariesByReference;
+
+ /**
+ * Sets the paths that should be merged when the source repository
+ * is copied to the target repository.
+ *
+ * @param merges Paths to be merged during copy.
+ */
+ public void setMerges(@Nonnull String... merges) {
+ this.mergePaths = copyOf(checkNotNull(merges));
+ }
+
+ /**
+ * Same as {@link #copy(RepositoryInitializer)}, but with no custom initializer.
+ */
+ public void copy() throws RepositoryException {
+ copy(null);
}
/**
@@ -79,60 +193,60 @@ public class RepositorySidegrade {
* Note that both the source and the target repository must be closed
* during the copy operation as this method requires exclusive access
* to the repositories.
+ *
+ * @param initializer optional extra repository initializer to use
*
* @throws RepositoryException if the copy operation fails
*/
- public void copy() throws RepositoryException {
+ public void copy(RepositoryInitializer initializer) throws RepositoryException {
try {
NodeState root = source.getRoot();
NodeBuilder builder = target.getRoot().builder();
new InitialContent().initialize(builder);
-
+ if (initializer != null) {
+ initializer.initialize(builder);
+ }
copyState(builder, root);
- // removing references to the checkpoints,
- // which don't exist in the new repository
- builder.setChildNode(":async");
-
- target.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ cleanCheckpoints(builder);
} catch (Exception e) {
throw new RepositoryException("Failed to copy content", e);
}
}
+ private void cleanCheckpoints(NodeBuilder builder) throws CommitFailedException {
+ // removing references to the checkpoints,
+ // which don't exist in the new repository
+ builder.setChildNode(":async");
+ target.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ }
+
private void copyState(NodeBuilder parent, NodeState state) throws CommitFailedException {
- boolean isSegmentNodeBuilder = parent instanceof SegmentNodeBuilder;
- for (PropertyState property : state.getProperties()) {
- parent.setProperty(property);
+ copyWorkspace(state, parent);
+ if (!versionCopyConfiguration.skipOrphanedVersionsCopy()) {
+ copyVersionStorage(state, parent, versionCopyConfiguration);
}
- for (ChildNodeEntry entry : state.getChildNodeEntries()) {
- if (isSegmentNodeBuilder) {
- parent.setChildNode(entry.getName(), entry.getNodeState());
- } else {
- setChildNode(parent, entry.getName(), entry.getNodeState());
- }
+
+ final List<CommitHook> hooks = new ArrayList<CommitHook>();
+ hooks.add(new EditorHook(
+ new VersionableEditor.Provider(state, Oak.DEFAULT_WORKSPACE_NAME, versionCopyConfiguration)));
+
+ if (customCommitHooks != null) {
+ hooks.addAll(customCommitHooks);
}
- target.merge(parent, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+ target.merge(parent, new LoggingCompositeHook(hooks, null, false), CommitInfo.EMPTY);
}
- /**
- * NodeState are copied by value by recursing down the complete tree
- * This is a temporary approach for OAK-1760 for 1.0 branch.
- */
- private void setChildNode(NodeBuilder parent, String name, NodeState state) {
- // OAK-1589: maximum supported length of name for DocumentNodeStore
- // is 150 bytes. Skip the sub tree if the the name is too long
- if (name.length() > 37 && name.getBytes(Charsets.UTF_8).length > 150) {
- logger.warn("Node name too long. Skipping {}", state);
- return;
- }
- NodeBuilder builder = parent.setChildNode(name);
- for (PropertyState property : state.getProperties()) {
- builder.setProperty(property);
- }
- for (ChildNodeEntry child : state.getChildNodeEntries()) {
- setChildNode(builder, child.getName(), child.getNodeState());
- }
+ private void copyWorkspace(NodeState state, NodeBuilder parent) {
+ final Set<String> includes = calculateEffectiveIncludePaths(includePaths, state);
+ final Set<String> excludes = union(copyOf(this.excludePaths), of("/jcr:system/jcr:versionStorage"));
+ final Set<String> merges = union(copyOf(this.mergePaths), of("/jcr:system"));
+
+ NodeStateCopier.builder()
+ .include(includes)
+ .exclude(excludes)
+ .merge(merges)
+ .copy(state, parent);
}
-}
+}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Tue Aug 25 11:53:08 2015
@@ -26,7 +26,6 @@ import static com.google.common.collect.
import static com.google.common.collect.Sets.newHashSet;
import static com.google.common.collect.Sets.union;
import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
-import static org.apache.jackrabbit.JcrConstants.JCR_VERSIONSTORAGE;
import static org.apache.jackrabbit.oak.plugins.name.Namespaces.addCustomMapping;
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.NODE_TYPES_PATH;
import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ALL;
@@ -112,7 +111,6 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier;
import org.apache.jackrabbit.oak.upgrade.security.GroupEditorProvider;
import org.apache.jackrabbit.oak.upgrade.security.RestrictionEditorProvider;
-import org.apache.jackrabbit.oak.upgrade.version.VersionCopier;
import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
import org.apache.jackrabbit.oak.upgrade.version.VersionableEditor;
import org.apache.jackrabbit.spi.Name;
@@ -127,6 +125,8 @@ import org.apache.jackrabbit.spi.commons
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.jackrabbit.oak.upgrade.version.VersionCopier.copyVersionStorage;
+
public class RepositoryUpgrade {
private static final Logger logger = LoggerFactory.getLogger(RepositoryUpgrade.class);
@@ -173,7 +173,7 @@ public class RepositoryUpgrade {
private List<CommitHook> customCommitHooks = null;
- private VersionCopyConfiguration versionCopyConfiguration = new VersionCopyConfiguration();
+ VersionCopyConfiguration versionCopyConfiguration = new VersionCopyConfiguration();
/**
* Copies the contents of the repository in the given source directory
@@ -421,7 +421,7 @@ public class RepositoryUpgrade {
if (!versionCopyConfiguration.skipOrphanedVersionsCopy()) {
logger.info("Copying version storage");
watch.reset().start();
- copyVersionStorage(sourceState, builder);
+ copyVersionStorage(sourceState, builder, versionCopyConfiguration);
builder.getNodeState(); // on TarMK this does call triggers the actual copy
logger.info("Version storage copied in {}s ({})", watch.elapsed(TimeUnit.SECONDS), watch);
} else {
@@ -818,7 +818,7 @@ public class RepositoryUpgrade {
private String copyWorkspace(NodeState sourceState, NodeBuilder builder, String workspaceName)
throws RepositoryException {
- final Set<String> includes = calculateEffectiveIncludePaths(sourceState);
+ final Set<String> includes = calculateEffectiveIncludePaths(includePaths, sourceState);
final Set<String> excludes = union(copyOf(this.excludePaths), of("/jcr:system/jcr:versionStorage"));
final Set<String> merges = union(copyOf(this.mergePaths), of("/jcr:system"));
@@ -833,23 +833,9 @@ public class RepositoryUpgrade {
return workspaceName;
}
- private void copyVersionStorage(NodeState sourceState, NodeBuilder builder)
- throws RepositoryException {
- final NodeState versionStorage = sourceState.getChildNode(JCR_SYSTEM).getChildNode(JCR_VERSIONSTORAGE);
- final Iterator<NodeState> versionStorageIterator = new DescendantsIterator(versionStorage, 3);
- final VersionCopier versionCopier = new VersionCopier(sourceState, builder);
-
- while (versionStorageIterator.hasNext()) {
- final NodeState versionHistoryBucket = versionStorageIterator.next();
- for (String versionHistory : versionHistoryBucket.getChildNodeNames()) {
- versionCopier.copyVersionHistory(versionHistory, versionCopyConfiguration.getOrphanedMinDate());
- }
- }
- }
-
- private Set<String> calculateEffectiveIncludePaths(NodeState state) {
- if (!this.includePaths.contains("/")) {
- return copyOf(this.includePaths);
+ static Set<String> calculateEffectiveIncludePaths(Set<String> includePaths, NodeState state) {
+ if (!includePaths.contains("/")) {
+ return copyOf(includePaths);
}
// include child nodes from source individually to avoid deleting other initialized content
@@ -860,12 +846,16 @@ public class RepositoryUpgrade {
return includes;
}
- private static class LoggingCompositeHook implements CommitHook {
+ static class LoggingCompositeHook implements CommitHook {
private final Collection<CommitHook> hooks;
private boolean started = false;
private final boolean earlyShutdown;
private final RepositoryContext source;
+ public LoggingCompositeHook(Collection<CommitHook> hooks) {
+ this(hooks, null, false);
+ }
+
public LoggingCompositeHook(Collection<CommitHook> hooks,
RepositoryContext source, boolean earlyShutdown) {
this.hooks = hooks;
@@ -878,7 +868,7 @@ public class RepositoryUpgrade {
public NodeState processCommit(NodeState before, NodeState after, CommitInfo info) throws CommitFailedException {
NodeState newState = after;
Stopwatch watch = Stopwatch.createStarted();
- if (earlyShutdown && !started) {
+ if (earlyShutdown && source != null && !started) {
logger.info("Shutting down source repository.");
source.getRepository().shutdown();
started = true;
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java Tue Aug 25 11:53:08 2015
@@ -17,15 +17,19 @@
package org.apache.jackrabbit.oak.upgrade.version;
import static org.apache.jackrabbit.JcrConstants.JCR_CREATED;
+import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
+import static org.apache.jackrabbit.JcrConstants.JCR_VERSIONSTORAGE;
import static org.apache.jackrabbit.JcrConstants.NT_VERSION;
import java.util.Calendar;
+import java.util.Iterator;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.upgrade.DescendantsIterator;
import org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier;
import org.apache.jackrabbit.util.ISO8601;
@@ -52,6 +56,19 @@ public class VersionCopier {
this.rootBuilder = rootBuilder;
}
+ public static void copyVersionStorage(NodeState sourceState, NodeBuilder builder, VersionCopyConfiguration config) {
+ final NodeState versionStorage = sourceState.getChildNode(JCR_SYSTEM).getChildNode(JCR_VERSIONSTORAGE);
+ final Iterator<NodeState> versionStorageIterator = new DescendantsIterator(versionStorage, 3);
+ final VersionCopier versionCopier = new VersionCopier(sourceState, builder);
+
+ while (versionStorageIterator.hasNext()) {
+ final NodeState versionHistoryBucket = versionStorageIterator.next();
+ for (String versionHistory : versionHistoryBucket.getChildNodeNames()) {
+ versionCopier.copyVersionHistory(versionHistory, config.getOrphanedMinDate());
+ }
+ }
+ }
+
/**
* Copy history filtering versions using passed date and returns @{code
* true} if at least one version has been copied.
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -49,7 +49,7 @@ public abstract class AbstractRepository
public static final Credentials CREDENTIALS = new SimpleCredentials("admin", "admin".toCharArray());
- private static NodeStore targetNodeStore;
+ protected static NodeStore targetNodeStore;
private static File testDirectory;
@@ -77,9 +77,12 @@ public abstract class AbstractRepository
File source = new File(directory, "source");
source.mkdirs();
RepositoryImpl repository = createSourceRepository(source);
+ Session session = repository.login(CREDENTIALS);
try {
- createSourceContent(repository);
+ createSourceContent(session);
} finally {
+ session.save();
+ session.logout();
repository.shutdown();
}
final NodeStore target = getTargetNodeStore();
@@ -115,7 +118,7 @@ public abstract class AbstractRepository
}
- protected void doUpgradeRepository(File source, NodeStore target)throws RepositoryException{
+ protected void doUpgradeRepository(File source, NodeStore target)throws RepositoryException, IOException{
RepositoryUpgrade.copy(source, target);
}
@@ -131,7 +134,7 @@ public abstract class AbstractRepository
return(JackrabbitSession)getTargetRepository().login(CREDENTIALS);
}
- protected abstract void createSourceContent(Repository repository) throws Exception;
+ protected abstract void createSourceContent(Session session) throws Exception;
protected void assertExisting(final String... paths) throws RepositoryException {
final Session session = createAdminSession();
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyNodeTypesUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyNodeTypesUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyNodeTypesUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyNodeTypesUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -18,12 +18,8 @@ package org.apache.jackrabbit.oak.upgrad
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.commons.cnd.CndImporter;
-import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeDefinition;
@@ -32,15 +28,13 @@ import javax.jcr.nodetype.NodeTypeManage
import javax.jcr.nodetype.PropertyDefinition;
import java.io.InputStreamReader;
import java.io.Reader;
-import java.io.StringReader;
import static org.junit.Assert.assertEquals;
public class CopyNodeTypesUpgradeTest extends AbstractRepositoryUpgradeTest {
@Override
- protected void createSourceContent(Repository repository) throws Exception {
- final Session session = repository.login(CREDENTIALS);
+ protected void createSourceContent(Session session) throws Exception {
final Reader cnd = new InputStreamReader(getClass().getResourceAsStream("/test-nodetypes.cnd"));
CndImporter.registerNodeTypes(cnd, session);
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java Tue Aug 25 11:53:08 2015
@@ -20,21 +20,24 @@ import org.apache.jackrabbit.core.Reposi
import org.apache.jackrabbit.core.config.RepositoryConfig;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl;
import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.apache.jackrabbit.oak.upgrade.util.VersionCopyTestUtils.RepositoryUpgradeSetup;
+import org.apache.jackrabbit.oak.upgrade.util.VersionCopyTestUtils.VersionCopySetup;
+import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.Test;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.PropertyType;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.version.VersionManager;
import java.io.File;
+import java.io.IOException;
import java.util.Calendar;
import static org.junit.Assert.assertEquals;
@@ -54,6 +57,8 @@ public class CopyVersionHistoryTest exte
private static final String VERSIONABLES_YOUNG_ORPHANED = "/versionables/youngOrphaned";
+ protected RepositoryImpl repository;
+
private static Calendar betweenHistories;
/**
@@ -67,9 +72,7 @@ public class CopyVersionHistoryTest exte
private static String youngHistory;
@Override
- protected void createSourceContent(Repository repository) throws Exception {
- final Session session = repository.login(CREDENTIALS);
-
+ protected void createSourceContent(Session session) throws Exception {
oldHistory = createVersionableNode(session, VERSIONABLES_OLD);
oldOrphanedHistory = createVersionableNode(session, VERSIONABLES_OLD_ORPHANED);
Thread.sleep(10);
@@ -95,12 +98,10 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void copyAllVersions() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void copyAllVersions() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
+ public void setup(VersionCopyConfiguration config) {
// copying all versions is enabled by default
}
});
@@ -111,13 +112,11 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void referencedSinceDate() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void referencedSinceDate() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyVersions(betweenHistories);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(betweenHistories);
}
});
@@ -129,13 +128,11 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void referencedOlderThanOrphaned() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void referencedOlderThanOrphaned() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyOrphanedVersions(betweenHistories);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyOrphanedVersions(betweenHistories);
}
});
@@ -147,13 +144,11 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void onlyReferenced() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void onlyReferenced() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyOrphanedVersions(null);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyOrphanedVersions(null);
}
});
assertTrue(isVersionable(session, VERSIONABLES_OLD));
@@ -164,14 +159,12 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void onlyReferencedAfterDate() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void onlyReferencedAfterDate() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyVersions(betweenHistories);
- upgrade.setCopyOrphanedVersions(null);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(betweenHistories);
+ config.setCopyOrphanedVersions(null);
}
});
assertFalse(isVersionable(session, VERSIONABLES_OLD));
@@ -182,13 +175,11 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void onlyOrphaned() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void onlyOrphaned() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyVersions(null);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(null);
}
});
@@ -198,14 +189,12 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void onlyOrphanedAfterDate() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void onlyOrphanedAfterDate() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyVersions(null);
- upgrade.setCopyOrphanedVersions(betweenHistories);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(null);
+ config.setCopyOrphanedVersions(betweenHistories);
}
});
@@ -215,14 +204,12 @@ public class CopyVersionHistoryTest exte
}
@Test
- public void dontCopyVersionHistory() throws RepositoryException {
- assert source != null;
-
- Session session = performCopy(source, new RepositoryUpgradeSetup() {
+ public void dontCopyVersionHistory() throws RepositoryException, IOException {
+ Session session = performCopy(new VersionCopySetup() {
@Override
- public void setup(RepositoryUpgrade upgrade) {
- upgrade.setCopyVersions(null);
- upgrade.setCopyOrphanedVersions(null);
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(null);
+ config.setCopyOrphanedVersions(null);
}
});
@@ -231,22 +218,27 @@ public class CopyVersionHistoryTest exte
assertMissing(session, oldHistory, youngHistory, oldOrphanedHistory, youngOrphanedHistory);
}
- public Session performCopy(File source, RepositoryUpgradeSetup setup) throws RepositoryException {
+ protected Session performCopy(VersionCopySetup setup) throws RepositoryException, IOException {
final RepositoryConfig sourceConfig = RepositoryConfig.create(source);
final RepositoryContext sourceContext = RepositoryContext.create(sourceConfig);
final NodeStore targetNodeStore = new MemoryNodeStore();
try {
final RepositoryUpgrade upgrade = new RepositoryUpgrade(sourceContext, targetNodeStore);
- setup.setup(upgrade);
+ setup.setup(upgrade.versionCopyConfiguration);
upgrade.copy(null);
} finally {
sourceContext.getRepository().shutdown();
}
- final Repository repository = new Jcr(new Oak(targetNodeStore)).createRepository();
+ repository = (RepositoryImpl) new Jcr(new Oak(targetNodeStore)).createRepository();
return repository.login(AbstractRepositoryUpgradeTest.CREDENTIALS);
}
+ @After
+ public void closeRepository() {
+ repository.shutdown();
+ }
+
private static void assertExisting(final Session session, final String... paths) throws RepositoryException {
for (final String path : paths) {
final String relPath = path.substring(1);
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -26,12 +26,12 @@ import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import java.io.File;
+import java.io.IOException;
public class IncludeExcludeUpgradeTest extends AbstractRepositoryUpgradeTest {
@Override
- protected void createSourceContent(Repository repository) throws Exception {
- final Session session = repository.login(CREDENTIALS);
+ protected void createSourceContent(Session session) throws Exception {
JcrUtils.getOrCreateByPath("/content/foo/de", "nt:folder", session);
JcrUtils.getOrCreateByPath("/content/foo/en", "nt:folder", session);
JcrUtils.getOrCreateByPath("/content/foo/fr", "nt:folder", session);
@@ -51,7 +51,7 @@ public class IncludeExcludeUpgradeTest e
}
@Override
- protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException {
+ protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException, IOException {
final RepositoryConfig config = RepositoryConfig.create(source);
final RepositoryContext context = RepositoryContext.create(config);
try {
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -24,7 +24,6 @@ import java.util.Map;
import java.util.Set;
import javax.jcr.NamespaceRegistry;
import javax.jcr.Node;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.security.Privilege;
@@ -76,26 +75,18 @@ import static org.apache.jackrabbit.oak.
public class PrivilegeUpgradeTest extends AbstractRepositoryUpgradeTest {
@Override
- @SuppressWarnings("unchecked")
- protected void createSourceContent(Repository repository) throws Exception {
- Session session = repository.login(CREDENTIALS);
- try {
- JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
-
- NamespaceRegistry registry = workspace.getNamespaceRegistry();
- registry.registerNamespace("test", "http://www.example.org/");
-
- PrivilegeManager privilegeManager = workspace.getPrivilegeManager();
- privilegeManager.registerPrivilege("test:privilege", false, null);
- privilegeManager.registerPrivilege(
- "test:aggregate", false, new String[] { "jcr:read", "test:privilege" });
- privilegeManager.registerPrivilege("test:privilege2", true, null);
- privilegeManager.registerPrivilege(
- "test:aggregate2", true, new String[] { "test:aggregate", "test:privilege2" });
-
- } finally {
- session.logout();
- }
+ protected void createSourceContent(Session session) throws Exception {
+ JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
+
+ NamespaceRegistry registry = workspace.getNamespaceRegistry();
+ registry.registerNamespace("test", "http://www.example.org/");
+
+ PrivilegeManager privilegeManager = workspace.getPrivilegeManager();
+ privilegeManager.registerPrivilege("test:privilege", false, null);
+ privilegeManager.registerPrivilege("test:aggregate", false, new String[] { "jcr:read", "test:privilege" });
+ privilegeManager.registerPrivilege("test:privilege2", true, null);
+ privilegeManager.registerPrivilege("test:aggregate2", true,
+ new String[] { "test:aggregate", "test:privilege2" });
}
@Test
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -54,7 +54,7 @@ import java.io.IOException;
*/
public class RepeatedRepositoryUpgradeTest extends AbstractRepositoryUpgradeTest {
- private static boolean upgradeComplete;
+ protected static boolean upgradeComplete;
private static FileStore fileStore;
@Override
@@ -88,10 +88,12 @@ public class RepeatedRepositoryUpgradeTe
sourceDir.mkdirs();
RepositoryImpl source = createSourceRepository(sourceDir);
-
+ Session session = source.login(CREDENTIALS);
try {
- createSourceContent(source);
+ createSourceContent(session);
} finally {
+ session.save();
+ session.logout();
source.shutdown();
}
@@ -101,9 +103,12 @@ public class RepeatedRepositoryUpgradeTe
// re-create source repo
source = createSourceRepository(sourceDir);
+ session = source.login(CREDENTIALS);
try {
- modifySourceContent(source);
+ modifySourceContent(session);
} finally {
+ session.save();
+ session.logout();
source.shutdown();
}
@@ -115,7 +120,7 @@ public class RepeatedRepositoryUpgradeTe
}
@Override
- protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException {
+ protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException, IOException {
final RepositoryConfig config = RepositoryConfig.create(source);
final RepositoryContext context = RepositoryContext.create(config);
try {
@@ -132,44 +137,26 @@ public class RepeatedRepositoryUpgradeTe
}
@Override
- protected void createSourceContent(Repository repository) throws RepositoryException {
- Session session = null;
- try {
- session = repository.login(CREDENTIALS);
+ protected void createSourceContent(Session session) throws RepositoryException {
+ registerCustomPrivileges(session);
- registerCustomPrivileges(session);
+ JcrUtils.getOrCreateByPath("/content/child1/grandchild1", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/content/child1/grandchild2", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/content/child1/grandchild3", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/content/child2/grandchild1", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/content/child2/grandchild2", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child1/grandchild1", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child1/grandchild2", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child1/grandchild3", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child2/grandchild1", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child2/grandchild2", "nt:unstructured", session);
-
- session.save();
- } finally {
- if (session != null && session.isLive()) {
- session.logout();
- }
- }
+ session.save();
}
- private void modifySourceContent(Repository repository) throws RepositoryException {
- Session session = null;
- try {
- session = repository.login(CREDENTIALS);
-
- JcrUtils.getOrCreateByPath("/content/child2/grandchild3", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/content/child3", "nt:unstructured", session);
+ protected void modifySourceContent(Session session) throws RepositoryException {
+ JcrUtils.getOrCreateByPath("/content/child2/grandchild3", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/content/child3", "nt:unstructured", session);
- final Node child1 = JcrUtils.getOrCreateByPath("/content/child1", "nt:unstructured", session);
- child1.remove();
+ final Node child1 = JcrUtils.getOrCreateByPath("/content/child1", "nt:unstructured", session);
+ child1.remove();
- session.save();
- } finally {
- if (session != null && session.isLive()) {
- session.logout();
- }
- }
+ session.save();
}
private void registerCustomPrivileges(Session session) throws RepositoryException {
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryGroupMemberUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryGroupMemberUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryGroupMemberUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryGroupMemberUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -24,7 +24,7 @@ import java.util.Iterator;
import java.util.Set;
import javax.jcr.Node;
-import javax.jcr.Repository;
+import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
import org.apache.jackrabbit.api.JackrabbitSession;
@@ -59,27 +59,23 @@ public class RepositoryGroupMemberUpgrad
return 2;
}
- protected void createSourceContent(Repository repository) throws Exception {
- JackrabbitSession session = (JackrabbitSession) repository.login(CREDENTIALS);
- try {
- UserManager userMgr = session.getUserManager();
- userMgr.autoSave(false);
- User users[] = new User[getNumUsers()];
- for (int i = 0; i < users.length; i++) {
- String userId = TEST_USER_PREFIX + i;
- users[i] = userMgr.createUser(userId, userId);
- }
+ @Override
+ protected void createSourceContent(Session session) throws Exception {
+ UserManager userMgr = ((JackrabbitSession) session).getUserManager();
+ userMgr.autoSave(false);
+ User users[] = new User[getNumUsers()];
+ for (int i = 0; i < users.length; i++) {
+ String userId = TEST_USER_PREFIX + i;
+ users[i] = userMgr.createUser(userId, userId);
+ }
- for (int i = 0; i < getNumGroups(); i++) {
- Group g = userMgr.createGroup(TEST_GROUP_PREFIX + i);
- for (User user : users) {
- g.addMember(user);
- }
+ for (int i = 0; i < getNumGroups(); i++) {
+ Group g = userMgr.createGroup(TEST_GROUP_PREFIX + i);
+ for (User user : users) {
+ g.addMember(user);
}
- session.save();
- } finally {
- session.logout();
}
+ session.save();
}
@Test
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java Tue Aug 25 11:53:08 2015
@@ -31,7 +31,6 @@ import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.PropertyType;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Value;
@@ -73,97 +72,89 @@ public class RepositoryUpgradeTest exten
@Override
@SuppressWarnings("unchecked")
- protected void createSourceContent(Repository repository) throws Exception {
- Session session = repository.login(CREDENTIALS);
- try {
- JackrabbitWorkspace workspace =
- (JackrabbitWorkspace) session.getWorkspace();
+ protected void createSourceContent(Session session) throws Exception {
+ JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
- NamespaceRegistry registry = workspace.getNamespaceRegistry();
- registry.registerNamespace("test", "http://www.example.org/");
+ NamespaceRegistry registry = workspace.getNamespaceRegistry();
+ registry.registerNamespace("test", "http://www.example.org/");
- NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
- NodeTypeTemplate template = nodeTypeManager.createNodeTypeTemplate();
- template.setName("test:unstructured");
- template.setDeclaredSuperTypeNames(
- new String[] {"nt:unstructured"});
- PropertyDefinitionTemplate pDef1 = nodeTypeManager.createPropertyDefinitionTemplate();
- pDef1.setName("defaultString");
- pDef1.setRequiredType(PropertyType.STRING);
- Value stringValue = session.getValueFactory().createValue("stringValue");
- pDef1.setDefaultValues(new Value[] {stringValue});
- template.getPropertyDefinitionTemplates().add(pDef1);
-
- PropertyDefinitionTemplate pDef2 = nodeTypeManager.createPropertyDefinitionTemplate();
- pDef2.setName("defaultPath");
- pDef2.setRequiredType(PropertyType.PATH);
- Value pathValue = session.getValueFactory().createValue("/jcr:path/nt:value", PropertyType.PATH);
- pDef2.setDefaultValues(new Value[] {pathValue});
- template.getPropertyDefinitionTemplates().add(pDef2);
-
- nodeTypeManager.registerNodeType(template, false);
-
- template = nodeTypeManager.createNodeTypeTemplate();
- template.setName("test:referenceable");
- template.setDeclaredSuperTypeNames(
- new String[] {"nt:unstructured", "mix:referenceable"});
- nodeTypeManager.registerNodeType(template, false);
-
- Node root = session.getRootNode();
-
- Node referenceable =
- root.addNode("referenceable", "test:unstructured");
- referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
- Node versionable = root.addNode("versionable", NT_UNSTRUCTURED);
- versionable.addMixin(MIX_VERSIONABLE);
- Node child = versionable.addNode("child", "test:referenceable");
- child.addNode("child2", NT_UNSTRUCTURED);
- session.save();
-
- Node sns = root.addNode("sns");
- sns.addNode("sibling");
- sns.addNode("sibling");
- sns.addNode("sibling");
-
- session.getWorkspace().getVersionManager().checkin("/versionable");
-
- Node properties = root.addNode("properties", "test:unstructured");
- properties.setProperty("boolean", true);
- Binary binary = session.getValueFactory().createBinary(
- new ByteArrayInputStream(BINARY));
- try {
- properties.setProperty("binary", binary);
- } finally {
- binary.dispose();
- }
- properties.setProperty("date", DATE);
- properties.setProperty("decimal", new BigDecimal(123));
- properties.setProperty("double", Math.PI);
- properties.setProperty("long", 9876543210L);
- properties.setProperty("reference", referenceable);
- properties.setProperty("weak_reference", session.getValueFactory().createValue(referenceable, true));
- properties.setProperty("mv_reference", new Value[]{session.getValueFactory().createValue(versionable, false)});
- properties.setProperty("mv_weak_reference", new Value[]{session.getValueFactory().createValue(versionable, true)});
- properties.setProperty("string", "test");
- properties.setProperty("multiple", "a,b,c".split(","));
- session.save();
+ NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
+ NodeTypeTemplate template = nodeTypeManager.createNodeTypeTemplate();
+ template.setName("test:unstructured");
+ template.setDeclaredSuperTypeNames(new String[] { "nt:unstructured" });
+ PropertyDefinitionTemplate pDef1 = nodeTypeManager.createPropertyDefinitionTemplate();
+ pDef1.setName("defaultString");
+ pDef1.setRequiredType(PropertyType.STRING);
+ Value stringValue = session.getValueFactory().createValue("stringValue");
+ pDef1.setDefaultValues(new Value[] { stringValue });
+ template.getPropertyDefinitionTemplates().add(pDef1);
+
+ PropertyDefinitionTemplate pDef2 = nodeTypeManager.createPropertyDefinitionTemplate();
+ pDef2.setName("defaultPath");
+ pDef2.setRequiredType(PropertyType.PATH);
+ Value pathValue = session.getValueFactory().createValue("/jcr:path/nt:value", PropertyType.PATH);
+ pDef2.setDefaultValues(new Value[] { pathValue });
+ template.getPropertyDefinitionTemplates().add(pDef2);
+
+ nodeTypeManager.registerNodeType(template, false);
+
+ template = nodeTypeManager.createNodeTypeTemplate();
+ template.setName("test:referenceable");
+ template.setDeclaredSuperTypeNames(new String[] { "nt:unstructured", "mix:referenceable" });
+ nodeTypeManager.registerNodeType(template, false);
+
+ Node root = session.getRootNode();
+
+ Node referenceable = root.addNode("referenceable", "test:unstructured");
+ referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
+ Node versionable = root.addNode("versionable", NT_UNSTRUCTURED);
+ versionable.addMixin(MIX_VERSIONABLE);
+ Node child = versionable.addNode("child", "test:referenceable");
+ child.addNode("child2", NT_UNSTRUCTURED);
+ session.save();
+
+ Node sns = root.addNode("sns");
+ sns.addNode("sibling");
+ sns.addNode("sibling");
+ sns.addNode("sibling");
+
+ session.getWorkspace().getVersionManager().checkin("/versionable");
+
+ Node properties = root.addNode("properties", "test:unstructured");
+ properties.setProperty("boolean", true);
+ Binary binary = session.getValueFactory().createBinary(new ByteArrayInputStream(BINARY));
+ try {
+ properties.setProperty("binary", binary);
+ } finally {
+ binary.dispose();
+ }
+ properties.setProperty("date", DATE);
+ properties.setProperty("decimal", new BigDecimal(123));
+ properties.setProperty("double", Math.PI);
+ properties.setProperty("long", 9876543210L);
+ properties.setProperty("reference", referenceable);
+ properties.setProperty("weak_reference", session.getValueFactory().createValue(referenceable, true));
+ properties.setProperty("mv_reference",
+ new Value[] { session.getValueFactory().createValue(versionable, false) });
+ properties.setProperty("mv_weak_reference",
+ new Value[] { session.getValueFactory().createValue(versionable, true) });
+ properties.setProperty("string", "test");
+ properties.setProperty("multiple", "a,b,c".split(","));
+ session.save();
- binary = properties.getProperty("binary").getBinary();
+ binary = properties.getProperty("binary").getBinary();
+ try {
+ InputStream stream = binary.getStream();
try {
- InputStream stream = binary.getStream();
- try {
- for (byte aBINARY : BINARY) {
- assertEquals(aBINARY, (byte) stream.read());
- }
- assertEquals(-1, stream.read());
- } finally {
- stream.close();
+ for (byte aBINARY : BINARY) {
+ assertEquals(aBINARY, (byte) stream.read());
}
+ assertEquals(-1, stream.read());
} finally {
- binary.dispose();
+ stream.close();
}
} finally {
- session.logout();
+ binary.dispose();
}
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/UpgradeFromTwoSourcesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/UpgradeFromTwoSourcesTest.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/UpgradeFromTwoSourcesTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/UpgradeFromTwoSourcesTest.java Tue Aug 25 11:53:08 2015
@@ -28,7 +28,6 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import java.io.File;
@@ -77,11 +76,16 @@ public class UpgradeFromTwoSourcesTest e
final RepositoryImpl source1 = createSourceRepository(sourceDir1);
final RepositoryImpl source2 = createSourceRepository(sourceDir2);
-
+ final Session session1 = source1.login(CREDENTIALS);
+ final Session session2 = source2.login(CREDENTIALS);
try {
- createSourceContent(source1);
- createSourceContent2(source2);
+ createSourceContent(session1);
+ createSourceContent2(session2);
} finally {
+ session1.save();
+ session2.save();
+ session1.logout();
+ session2.logout();
source1.shutdown();
source2.shutdown();
}
@@ -107,42 +111,24 @@ public class UpgradeFromTwoSourcesTest e
}
@Override
- protected void createSourceContent(Repository repository) throws RepositoryException {
- Session session = null;
- try {
- session = repository.login(CREDENTIALS);
-
- JcrUtils.getOrCreateByPath("/left/child1/grandchild1", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child1/grandchild2", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child1/grandchild3", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child2/grandchild1", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child2/grandchild2", "nt:unstructured", session);
-
- session.save();
- } finally {
- if (session != null && session.isLive()) {
- session.logout();
- }
- }
- }
-
- protected void createSourceContent2(Repository repository) throws RepositoryException {
- Session session = null;
- try {
- session = repository.login(CREDENTIALS);
-
- JcrUtils.getOrCreateByPath("/left/child2/grandchild3", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child2/grandchild2", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/left/child3", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/right/child1/grandchild1", "nt:unstructured", session);
- JcrUtils.getOrCreateByPath("/right/child1/grandchild2", "nt:unstructured", session);
+ protected void createSourceContent(Session session) throws RepositoryException {
+ JcrUtils.getOrCreateByPath("/left/child1/grandchild1", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child1/grandchild2", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child1/grandchild3", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child2/grandchild1", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child2/grandchild2", "nt:unstructured", session);
+
+ session.save();
+ }
+
+ protected void createSourceContent2(Session session) throws RepositoryException {
+ JcrUtils.getOrCreateByPath("/left/child2/grandchild3", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child2/grandchild2", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/left/child3", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/right/child1/grandchild1", "nt:unstructured", session);
+ JcrUtils.getOrCreateByPath("/right/child1/grandchild2", "nt:unstructured", session);
- session.save();
- } finally {
- if (session != null && session.isLive()) {
- session.logout();
- }
- }
+ session.save();
}
@Test
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/util/VersionCopyTestUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/util/VersionCopyTestUtils.java?rev=1697655&r1=1697654&r2=1697655&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/util/VersionCopyTestUtils.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/util/VersionCopyTestUtils.java Tue Aug 25 11:53:08 2015
@@ -16,16 +16,10 @@
*/
package org.apache.jackrabbit.oak.upgrade.util;
-import static org.apache.jackrabbit.oak.plugins.version.VersionConstants.MIX_REP_VERSIONABLE_PATHS;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
import java.util.ArrayList;
import java.util.List;
import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.version.Version;
@@ -34,7 +28,7 @@ import javax.jcr.version.VersionManager;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.commons.JcrUtils;
-import org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade;
+import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
public class VersionCopyTestUtils {
@@ -67,7 +61,7 @@ public class VersionCopyTestUtils {
return session.getNode(path).isNodeType(JcrConstants.MIX_VERSIONABLE);
}
- public interface RepositoryUpgradeSetup {
- void setup(RepositoryUpgrade upgrade);
+ public interface VersionCopySetup {
+ void setup(VersionCopyConfiguration config);
}
}