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/10/15 21:28:30 UTC
svn commit: r1532496 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
Author: tripod
Date: Tue Oct 15 19:28:30 2013
New Revision: 1532496
URL: http://svn.apache.org/r1532496
Log:
OAK-1086 NodeTypes of successive calls to node.getPrimaryNodetypes() are not equal
- simplify equals
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java?rev=1532496&r1=1532495&r2=1532496&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java Tue Oct 15 19:28:30 2013
@@ -16,21 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.nodetype;
-import static com.google.common.base.Preconditions.checkState;
-import static org.apache.jackrabbit.JcrConstants.JCR_CHILDNODEDEFINITION;
-import static org.apache.jackrabbit.JcrConstants.JCR_HASORDERABLECHILDNODES;
-import static org.apache.jackrabbit.JcrConstants.JCR_ISMIXIN;
-import static org.apache.jackrabbit.JcrConstants.JCR_MIXINTYPES;
-import static org.apache.jackrabbit.JcrConstants.JCR_NODETYPENAME;
-import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYITEMNAME;
-import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
-import static org.apache.jackrabbit.JcrConstants.JCR_PROPERTYDEFINITION;
-import static org.apache.jackrabbit.JcrConstants.JCR_SUPERTYPES;
-import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
-import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_ABSTRACT;
-import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_QUERYABLE;
-import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.RESIDUAL_NAME;
-
import java.io.IOException;
import java.io.StringWriter;
import java.net.URI;
@@ -55,25 +40,40 @@ import javax.jcr.nodetype.NodeTypeDefini
import javax.jcr.nodetype.NodeTypeIterator;
import javax.jcr.nodetype.PropertyDefinition;
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefWriter;
import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.apache.jackrabbit.oak.namepath.JcrNameParser;
import org.apache.jackrabbit.oak.namepath.JcrPathParser;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.apache.jackrabbit.oak.plugins.nodetype.constraint.Constraints;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+import static com.google.common.base.Preconditions.checkState;
+import static org.apache.jackrabbit.JcrConstants.JCR_CHILDNODEDEFINITION;
+import static org.apache.jackrabbit.JcrConstants.JCR_HASORDERABLECHILDNODES;
+import static org.apache.jackrabbit.JcrConstants.JCR_ISMIXIN;
+import static org.apache.jackrabbit.JcrConstants.JCR_MIXINTYPES;
+import static org.apache.jackrabbit.JcrConstants.JCR_NODETYPENAME;
+import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYITEMNAME;
+import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
+import static org.apache.jackrabbit.JcrConstants.JCR_PROPERTYDEFINITION;
+import static org.apache.jackrabbit.JcrConstants.JCR_SUPERTYPES;
+import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_ABSTRACT;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_IS_QUERYABLE;
+import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.RESIDUAL_NAME;
+
/**
* <pre>
* [nt:nodeType]
@@ -102,8 +102,6 @@ class NodeTypeImpl extends AbstractTypeD
private static final String[] NO_NAMES = new String[0];
- private String cnd;
-
NodeTypeImpl(Tree type, NamePathMapper mapper) {
super(type, mapper);
}
@@ -416,9 +414,8 @@ class NodeTypeImpl extends AbstractTypeD
* Returns the namespace neutral CND of the given node type definition.
* @param def the node type definition
* @return the CND
- * @throws IOException if an error occurs.
*/
- private static String getCnd(NodeTypeDefinition def) throws IOException {
+ private static String getCnd(NodeTypeDefinition def) {
StringWriter out = new StringWriter();
CompactNodeTypeDefWriter cndWriter = new CompactNodeTypeDefWriter(out, new CompactNodeTypeDefWriter.NamespaceMapping(){
@Override
@@ -426,24 +423,14 @@ class NodeTypeImpl extends AbstractTypeD
return s;
}
}, false);
- cndWriter.write(def);
- return out.toString();
- }
-
- /**
- * Returns the namespace neutral CND of the this node type definition.
- * @return the CND
- */
- private String getCnd() {
- if (cnd == null) {
- try {
- cnd = getCnd(this);
- } catch (IOException e) {
- log.error("Internal error while writing CND for {}", this);
- cnd = getName();
- }
+ try {
+ cndWriter.write(def);
+ } catch (IOException e) {
+ // should never occur
+ log.error("Error generating CND of " + def, e);
+ throw new IllegalStateException(e);
}
- return cnd;
+ return out.toString();
}
//-------------------------------------------------------------< Object >---
@@ -454,23 +441,12 @@ class NodeTypeImpl extends AbstractTypeD
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o instanceof NodeTypeImpl) {
- return getCnd().equals(((NodeTypeImpl) o).getCnd());
- } else if (o instanceof NodeType) {
- try {
- return getCnd().equals(getCnd((NodeType) o));
- } catch (IOException e) {
- return false;
- }
- } else {
- return false;
- }
+ return this == o || o instanceof NodeType && getCnd(this).equals(getCnd((NodeType) o));
}
@Override
public int hashCode() {
- return getCnd().hashCode();
+ return getCnd(this).hashCode();
}
//-----------------------------------------------------------< internal >---