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");