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 ju...@apache.org on 2014/02/26 21:17:48 UTC

svn commit: r1572229 - in /jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade: RepositoryUpgrade.java security/GroupEditor.java

Author: jukka
Date: Wed Feb 26 20:17:47 2014
New Revision: 1572229

URL: http://svn.apache.org/r1572229
Log:
OAK-1473: RepositoryUpgrade creates incorrect SNS names for property and child node definitions

Fix the SNS name indices.
Also address the TODO in BUILT_IN_NODE_TYPES and simplify GroupEditor by using NodeState.getName(String)

Modified:
    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/security/GroupEditor.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=1572229&r1=1572228&r2=1572229&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 Feb 26 20:17:47 2014
@@ -140,85 +140,6 @@ public class RepositoryUpgrade {
     private final NodeStore target;
 
     /**
-     * the set of oak built-in nodetypes
-     * todo: load from file or from repo
-     */
-    private static final Set<String> BUILT_IN_NODE_TYPES = ImmutableSet.of(
-            "mix:created",
-            "mix:etag",
-            "mix:language",
-            "mix:lastModified",
-            "mix:lifecycle",
-            "mix:lockable",
-            "mix:mimeType",
-            "mix:referenceable",
-            "mix:shareable",
-            "mix:simpleVersionable",
-            "mix:title",
-            "mix:versionable",
-            "nt:activity",
-            "nt:address",
-            "nt:base",
-            "nt:childNodeDefinition",
-            "nt:configuration",
-            "nt:file",
-            "nt:folder",
-            "nt:frozenNode",
-            "nt:hierarchyNode",
-            "nt:linkedFile",
-            "nt:nodeType",
-            "nt:propertyDefinition",
-            "nt:query",
-            "nt:resource",
-            "nt:unstructured",
-            "nt:version",
-            "nt:versionHistory",
-            "nt:versionLabels",
-            "nt:versionedChild",
-            "rep:ChildNodeDefinition",
-            "rep:ChildNodeDefinitions",
-            "rep:NamedChildNodeDefinitions",
-            "rep:NamedPropertyDefinitions",
-            "rep:NodeType",
-            "rep:PropertyDefinition",
-            "rep:PropertyDefinitions",
-            "oak:QueryIndexDefinition",
-            "oak:Unstructured",
-            "rep:ACE",
-            "rep:ACL",
-            "rep:AccessControl",
-            "rep:AccessControllable",
-            "rep:Activities",
-            "rep:Authorizable",
-            "rep:AuthorizableFolder",
-            "rep:Configurations",
-            "rep:DenyACE",
-            "rep:GrantACE",
-            "rep:Group",
-            "rep:Impersonatable",
-            "rep:MemberReferences",
-            "rep:MemberReferencesList",
-            "rep:Members",
-            "rep:MergeConflict",
-            "rep:PermissionStore",
-            "rep:Permissions",
-            "rep:Policy",
-            "rep:PrincipalAccessControl",
-            "rep:Privilege",
-            "rep:Privileges",
-            "rep:RepoAccessControllable",
-            "rep:Restrictions",
-            "rep:RetentionManageable",
-            "rep:Token",
-            "rep:User",
-            "rep:VersionReference",
-            "rep:nodeTypes",
-            "rep:root",
-            "rep:system",
-            "rep:versionStorage"
-    );
-
-    /**
      * Copies the contents of the repository in the given source directory
      * to the given target node store.
      *
@@ -460,15 +381,13 @@ public class RepositoryUpgrade {
 
         logger.info("Copying registered node types");
         for (Name name : sourceRegistry.getRegisteredNodeTypes()) {
-            // skip built-in nodetypes (OAK-1235)
             String oakName = getOakName(name);
-            if (BUILT_IN_NODE_TYPES.contains(oakName)) {
-                logger.info("skipping built-on nodetype: {}", name);
-                continue;
-            }
-            QNodeTypeDefinition def = sourceRegistry.getNodeTypeDef(name);
-            NodeBuilder type = types.child(oakName);
-            copyNodeType(def, type);
+            // skip built-in nodetypes (OAK-1235)
+            if (!types.hasChildNode(oakName)) {
+                QNodeTypeDefinition def = sourceRegistry.getNodeTypeDef(name);
+                NodeBuilder type = types.child(oakName);
+                copyNodeType(def, type);
+            }
         }
     }
 
@@ -506,14 +425,14 @@ public class RepositoryUpgrade {
         // + jcr:propertyDefinition (nt:propertyDefinition) = nt:propertyDefinition protected sns
         QPropertyDefinition[] properties = def.getPropertyDefs();
         for (int i = 0; i < properties.length; i++) {
-            String name = JCR_PROPERTYDEFINITION + '[' + i + ']';
+            String name = JCR_PROPERTYDEFINITION + '[' + (i + 1) + ']';
             copyPropertyDefinition(properties[i], builder.child(name));
         }
 
         // + jcr:childNodeDefinition (nt:childNodeDefinition) = nt:childNodeDefinition protected sns
         QNodeDefinition[] childNodes = def.getChildNodeDefs();
         for (int i = 0; i < childNodes.length; i++) {
-            String name = JCR_CHILDNODEDEFINITION + '[' + i + ']';
+            String name = JCR_CHILDNODEDEFINITION + '[' + (i + 1) + ']';
             copyChildNodeDefinition(childNodes[i], builder.child(name));
         }
     }

Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java?rev=1572229&r1=1572228&r2=1572229&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditor.java Wed Feb 26 20:17:47 2014
@@ -86,10 +86,10 @@ class GroupEditor extends DefaultEditor 
             return null;
         }
 
-        PropertyState primaryType = after.getProperty(JCR_PRIMARYTYPE);
-        String nt = primaryType == null ? null : primaryType.getValue(Type.NAME);
+        String nt = after.getName(JCR_PRIMARYTYPE);
         if (nt == null) {
-            throw new CommitFailedException(CONSTRAINT, 34, JCR_PRIMARYTYPE + " missing at " + state.path);
+            throw new CommitFailedException(
+                    CONSTRAINT, 34, JCR_PRIMARYTYPE + " missing at " + state.path);
         }
 
         if (UserConstants.NT_REP_GROUP.equals(nt)) {