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 tr...@apache.org on 2013/11/28 00:58:06 UTC
svn commit: r1546239 - in /jackrabbit/oak/trunk/oak-upgrade/src:
main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
Author: tripod
Date: Wed Nov 27 23:58:05 2013
New Revision: 1546239
URL: http://svn.apache.org/r1546239
Log:
Upgrade is missing the ReferenceEditorProvider which causes references not beeing resolvable
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
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=1546239&r1=1546238&r2=1546239&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 Wed Nov 27 23:58:05 2013
@@ -16,6 +16,47 @@
*/
package org.apache.jackrabbit.oak.upgrade;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.RepositoryException;
+import javax.jcr.version.OnParentVersionAction;
+
+import org.apache.jackrabbit.core.NamespaceRegistryImpl;
+import org.apache.jackrabbit.core.RepositoryContext;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.core.fs.FileSystem;
+import org.apache.jackrabbit.core.fs.FileSystemException;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.core.persistence.PersistenceManager;
+import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.name.Namespaces;
+import org.apache.jackrabbit.oak.plugins.nodetype.RegistrationEditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.CommitHook;
+import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
+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.spi.state.NodeStore;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QItemDefinition;
+import org.apache.jackrabbit.spi.QNodeDefinition;
+import org.apache.jackrabbit.spi.QNodeTypeDefinition;
+import org.apache.jackrabbit.spi.QPropertyDefinition;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.QValueConstraint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
import static com.google.common.collect.Maps.newHashMap;
@@ -58,45 +99,6 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_NODE_TYPES;
import static org.apache.jackrabbit.spi.commons.name.NameConstants.ANY_NAME;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.jcr.NamespaceException;
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.RepositoryException;
-import javax.jcr.version.OnParentVersionAction;
-
-import org.apache.jackrabbit.core.NamespaceRegistryImpl;
-import org.apache.jackrabbit.core.RepositoryContext;
-import org.apache.jackrabbit.core.config.RepositoryConfig;
-import org.apache.jackrabbit.core.fs.FileSystem;
-import org.apache.jackrabbit.core.fs.FileSystemException;
-import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
-import org.apache.jackrabbit.core.persistence.PersistenceManager;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.name.Namespaces;
-import org.apache.jackrabbit.oak.plugins.nodetype.RegistrationEditorProvider;
-import org.apache.jackrabbit.oak.spi.commit.CommitHook;
-import org.apache.jackrabbit.oak.spi.commit.EditorHook;
-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.spi.state.NodeStore;
-import org.apache.jackrabbit.spi.Name;
-import org.apache.jackrabbit.spi.QItemDefinition;
-import org.apache.jackrabbit.spi.QNodeDefinition;
-import org.apache.jackrabbit.spi.QNodeTypeDefinition;
-import org.apache.jackrabbit.spi.QPropertyDefinition;
-import org.apache.jackrabbit.spi.QValue;
-import org.apache.jackrabbit.spi.QValueConstraint;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class RepositoryUpgrade {
/**
@@ -186,7 +188,10 @@ public class RepositoryUpgrade {
copyWorkspaces(builder, idxToPrefix);
// TODO: default hooks?
- CommitHook hook = new EditorHook(new RegistrationEditorProvider());
+ CommitHook hook = new CompositeHook(
+ new EditorHook(new RegistrationEditorProvider()),
+ new EditorHook(new ReferenceEditorProvider())
+ );
target.merge(builder, hook, null);
} catch (Exception e) {
throw new RepositoryException("Failed to copy content", e);
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=1546239&r1=1546238&r2=1546239&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 Wed Nov 27 23:58:05 2013
@@ -107,6 +107,9 @@ public class RepositoryUpgradeTest {
Node referenceable =
root.addNode("referenceable", "test:unstructured");
referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
+ Node referenceable2 =
+ root.addNode("referenceable2", "test:unstructured");
+ referenceable2.addMixin(NodeType.MIX_REFERENCEABLE);
session.save();
identifier = referenceable.getIdentifier();
@@ -125,6 +128,8 @@ public class RepositoryUpgradeTest {
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(referenceable2, false)});
+ properties.setProperty("mv_weak_reference", new Value[]{session.getValueFactory().createValue(referenceable2, true)});
properties.setProperty("string", "test");
properties.setProperty("multiple", "a,b,c".split(","));
session.save();
@@ -221,6 +226,12 @@ public class RepositoryUpgradeTest {
assertTrue(refs.hasNext());
assertEquals(properties.getPath() + "/reference", refs.nextProperty().getPath());
assertFalse(refs.hasNext());
+
+ PropertyIterator refs2 = session.getNode("/referenceable2").getReferences();
+ assertTrue(refs2.hasNext());
+ assertEquals(properties.getPath() + "/mv_reference", refs2.nextProperty().getPath());
+ assertFalse(refs2.hasNext());
+
assertEquals(
PropertyType.WEAKREFERENCE,
properties.getProperty("weak_reference").getType());
@@ -234,6 +245,10 @@ public class RepositoryUpgradeTest {
assertTrue(weakRefs.hasNext());
assertEquals(properties.getPath() + "/weak_reference", weakRefs.nextProperty().getPath());
assertFalse(weakRefs.hasNext());
+ PropertyIterator weakRefs2 = session.getNode("/referenceable2").getWeakReferences();
+ assertTrue(weakRefs2.hasNext());
+ assertEquals(properties.getPath() + "/mv_weak_reference", weakRefs2.nextProperty().getPath());
+ assertFalse(weakRefs2.hasNext());
assertEquals(
PropertyType.STRING,
properties.getProperty("string").getType());