Author: mreutegg
Date: Tue Jul 11 08:47:38 2017
New Revision: 1801573

URL: http://svn.apache.org/viewvc?rev=1801573&view=rev
Log:
OAK-6440: Incorrect node type diff

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeDefDiff.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeDefDiff.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeDefDiff.java?rev=1801573&r1=1801572&r2=1801573&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeDefDiff.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeDefDiff.java
 Tue Jul 11 08:47:38 2017
@@ -35,6 +35,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.jackrabbit.JcrConstants;
+
 /**
  * A <code>NodeTypeDefDiff</code> represents the result of the comparison of
  * two node type definitions.
@@ -226,12 +228,25 @@ public class NodeTypeDefDiff {
      * @return <code>true</code> if supertypes diff
      */
     public int supertypesDiff() {
-        Set<String> set1 = new 
HashSet<String>(Arrays.asList(oldDef.getDeclaredSupertypeNames()));
-        Set<String> set2 = new 
HashSet<String>(Arrays.asList(newDef.getDeclaredSupertypeNames()));
+        Set<String> set1 = getDeclaredSuperTypeNames(oldDef);
+        Set<String> set2 = getDeclaredSuperTypeNames(newDef);
         return !set1.equals(set2) ? MAJOR : NONE;
     }
 
     /**
+     * Returns the set of declared supertype names without 'nt:base', which is
+     * irrelevant for a diff of supertypes.
+     *
+     * @param def a NodeTypeDefinition.
+     * @return the set of declared supertype names.
+     */
+    private Set<String> getDeclaredSuperTypeNames(NodeTypeDefinition def) {
+        Set<String> names = new 
HashSet<String>(Arrays.asList(def.getDeclaredSupertypeNames()));
+        names.remove(JcrConstants.NT_BASE);
+        return names;
+    }
+
+    /**
      * @return diff type
      */
     private int buildPropDefDiffs() {

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java?rev=1801573&r1=1801572&r2=1801573&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
 Tue Jul 11 08:47:38 2017
@@ -75,7 +75,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertFalse;
@@ -172,7 +171,6 @@ public class NodeTypeRegistryTest {
 
     }
 
-    @Ignore("OAK-6440")
     @Test
     public void registerNodeType() throws Exception {
         registerNodeType(root, "oak6440-1.cnd");


Reply via email to