Author: jukka
Date: Fri Feb 28 18:22:38 2014
New Revision: 1573023
URL: http://svn.apache.org/r1573023
Log:
OAK-806: Content migration from Jackrabbit to Oak
Use the namespace mappings directly instead of going through
NamespaceRegistry. This is one fewer strict jackrabbit-core
dependency in the upgrade code.
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java?rev=1573023&r1=1573022&r2=1573023&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
Fri Feb 28 18:22:38 2014
@@ -26,9 +26,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
import javax.jcr.Binary;
-import javax.jcr.NamespaceRegistry;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
@@ -67,28 +67,26 @@ class JackrabbitNodeState extends Abstra
private final PersistenceManager source;
/**
- * Source namespace registry.
+ * Source namespace mappings (URI -< prefix).
*/
- private final NamespaceRegistry registry;
+ private final Map<String, String> uriToPrefix;
private final NodeState state;
private final boolean useBinaryReferences;
- private JackrabbitNodeState(
- PersistenceManager source, NamespaceRegistry registry,
- NodeState state, boolean useBinaryReferences) {
- this.source = source;
- this.registry = registry;
+ private JackrabbitNodeState(JackrabbitNodeState parent, NodeState state) {
+ this.source = parent.source;
+ this.uriToPrefix = parent.uriToPrefix;
this.state = state;
- this.useBinaryReferences = useBinaryReferences;
+ this.useBinaryReferences = parent.useBinaryReferences;
}
JackrabbitNodeState(
- PersistenceManager source, NamespaceRegistry registry,
+ PersistenceManager source, Map<String, String> uriToPrefix,
NodeId id, boolean useBinaryReferences) {
this.source = source;
- this.registry = registry;
+ this.uriToPrefix = uriToPrefix;
try {
this.state = source.load(id);
} catch (ItemStateException e) {
@@ -160,8 +158,8 @@ class JackrabbitNodeState extends Abstra
try {
NodeState childState = source.load(entry.getId());
- JackrabbitNodeState child = new JackrabbitNodeState(
- source, registry, childState, useBinaryReferences);
+ JackrabbitNodeState child =
+ new JackrabbitNodeState(this, childState);
entries.add(new MemoryChildNodeEntry(name, child));
} catch (ItemStateException e) {
warn("Unable to access child entry " + name, e);
@@ -354,10 +352,11 @@ class JackrabbitNodeState extends Abstra
if (uri == null || uri.isEmpty()) {
return local;
} else {
- try {
- return registry.getPrefix(uri) + ":" + local;
- } catch (RepositoryException e) {
- warn("Unable to create Oak name from " + name, e);
+ String prefix = uriToPrefix.get(uri);
+ if (prefix != null) {
+ return prefix + ":" + local;
+ } else {
+ warn("No prefix mapping found for " + name);
return "{" + uri + "}" + local;
}
}
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=1573023&r1=1573022&r2=1573023&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
Fri Feb 28 18:22:38 2014
@@ -23,12 +23,10 @@ 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.security.Privilege;
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.config.UserManagerConfig;
@@ -216,11 +214,13 @@ public class RepositoryUpgrade {
// init target repository first
new InitialContent().initialize(builder);
- Map<Integer, String> idxToPrefix = copyNamespaces(builder);
+ Map<String, String> uriToPrefix = newHashMap();
+ Map<Integer, String> idxToPrefix = newHashMap();
+ copyNamespaces(builder, uriToPrefix, idxToPrefix);
copyNodeTypes(builder);
copyPrivileges(builder);
- copyVersionStore(builder, idxToPrefix);
- copyWorkspaces(builder, idxToPrefix);
+ copyVersionStore(builder, uriToPrefix, idxToPrefix);
+ copyWorkspaces(builder, uriToPrefix, idxToPrefix);
String groupsPath;
UserManagerConfig userConfig =
config.getSecurityConfig().getSecurityManagerConfig().getUserManagerConfig();
@@ -258,13 +258,14 @@ public class RepositoryUpgrade {
* the internal namespace index mapping used in bundle serialization.
*
* @param root root builder
- * @return index to prefix mapping
+ * @param uriToPrefix namespace URI to prefix mapping
+ * @param idxToPrefix index to prefix mapping
* @throws RepositoryException
*/
- private Map<Integer, String> copyNamespaces(NodeBuilder root)
+ private void copyNamespaces(
+ NodeBuilder root,
+ Map<String, String> uriToPrefix, Map<Integer, String> idxToPrefix)
throws RepositoryException {
- Map<Integer, String> idxToPrefix = newHashMap();
-
NodeBuilder system = root.child(JCR_SYSTEM);
NodeBuilder namespaces =
system.child(NamespaceConstants.REP_NAMESPACES);
@@ -298,12 +299,11 @@ public class RepositoryUpgrade {
} while (idxToPrefix.containsKey(idx));
}
+ checkState(uriToPrefix.put(uri, prefix) == null);
checkState(idxToPrefix.put(idx, prefix) == null);
}
Namespaces.buildIndexNode(namespaces);
-
- return idxToPrefix;
}
private Properties loadProperties(String path) throws RepositoryException {
@@ -537,23 +537,24 @@ public class RepositoryUpgrade {
}
private void copyVersionStore(
- NodeBuilder root, Map<Integer, String> idxToPrefix)
+ NodeBuilder root,
+ Map<String, String> uriToPrefix, Map<Integer, String> idxToPrefix)
throws RepositoryException, IOException {
logger.info("Copying version histories");
PersistenceManager pm =
source.getInternalVersionManager().getPersistenceManager();
- NamespaceRegistry nr =source.getNamespaceRegistry();
NodeBuilder system = root.child(JCR_SYSTEM);
system.setChildNode(JCR_VERSIONSTORAGE, new JackrabbitNodeState(
- pm, nr, VERSION_STORAGE_NODE_ID, copyBinariesByReference));
+ pm, uriToPrefix, VERSION_STORAGE_NODE_ID,
copyBinariesByReference));
system.setChildNode("jcr:activities", new JackrabbitNodeState(
- pm, nr, ACTIVITIES_NODE_ID, copyBinariesByReference));
+ pm, uriToPrefix, ACTIVITIES_NODE_ID, copyBinariesByReference));
}
private void copyWorkspaces(
- NodeBuilder root, Map<Integer, String> idxToPrefix)
+ NodeBuilder root,
+ Map<String, String> uriToPrefix, Map<Integer, String> idxToPrefix)
throws RepositoryException, IOException {
logger.info("Copying default workspace");
@@ -563,10 +564,9 @@ public class RepositoryUpgrade {
PersistenceManager pm =
source.getWorkspaceInfo(name).getPersistenceManager();
- NamespaceRegistryImpl nr = source.getNamespaceRegistry();
NodeState state = new JackrabbitNodeState(
- pm, nr, ROOT_NODE_ID, copyBinariesByReference);
+ pm, uriToPrefix, ROOT_NODE_ID, copyBinariesByReference);
for (PropertyState property : state.getProperties()) {
root.setProperty(property);
}