You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2008/02/27 11:47:16 UTC

svn commit: r631547 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype: BitsetENTCacheImpl.java EffectiveNodeType.java NodeTypeDef.java

Author: stefan
Date: Wed Feb 27 02:47:14 2008
New Revision: 631547

URL: http://svn.apache.org/viewvc?rev=631547&view=rev
Log:
JCR-1423:  [PATCH] fix clone implementation

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/BitsetENTCacheImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/BitsetENTCacheImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/BitsetENTCacheImpl.java?rev=631547&r1=631546&r2=631547&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/BitsetENTCacheImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/BitsetENTCacheImpl.java Wed Feb 27 02:47:14 2008
@@ -210,13 +210,18 @@
      * {@inheritDoc}
      */
     public Object clone() {
-        BitsetENTCacheImpl clone = new BitsetENTCacheImpl();
-        clone.sortedKeys.addAll(sortedKeys);
-        clone.aggregates.putAll(aggregates);
-        clone.names = new Name[names.length];
-        System.arraycopy(names, 0, clone.names, 0, names.length);
-        clone.nameIndex.putAll(nameIndex);
-        return clone;
+        try {
+            BitsetENTCacheImpl clone = (BitsetENTCacheImpl) super.clone();
+            clone.sortedKeys.addAll(sortedKeys);
+            clone.aggregates.putAll(aggregates);
+            clone.names = new Name[names.length];
+            System.arraycopy(names, 0, clone.names, 0, names.length);
+            clone.nameIndex.putAll(nameIndex);
+            return clone;
+        } catch (CloneNotSupportedException e) {
+            // won't happen
+            throw new InternalError("Failed to clone BitsetENTCacheImpl");
+        }
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java?rev=631547&r1=631546&r2=631547&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/EffectiveNodeType.java Wed Feb 27 02:47:14 2008
@@ -1150,19 +1150,24 @@
     }
 
     protected Object clone() {
-        EffectiveNodeType clone = new EffectiveNodeType();
+        try {
+            EffectiveNodeType clone = (EffectiveNodeType) super.clone();
 
-        clone.mergedNodeTypes.addAll(mergedNodeTypes);
-        clone.inheritedNodeTypes.addAll(inheritedNodeTypes);
-        clone.allNodeTypes.addAll(allNodeTypes);
-        Iterator iter = namedItemDefs.keySet().iterator();
-        while (iter.hasNext()) {
-            Object key = iter.next();
-            List list = (List) namedItemDefs.get(key);
-            clone.namedItemDefs.put(key, new ArrayList(list));
-        }
-        clone.unnamedItemDefs.addAll(unnamedItemDefs);
+            clone.mergedNodeTypes.addAll(mergedNodeTypes);
+            clone.inheritedNodeTypes.addAll(inheritedNodeTypes);
+            clone.allNodeTypes.addAll(allNodeTypes);
+            Iterator iter = namedItemDefs.keySet().iterator();
+            while (iter.hasNext()) {
+                Object key = iter.next();
+                List list = (List) namedItemDefs.get(key);
+                clone.namedItemDefs.put(key, new ArrayList(list));
+            }
+            clone.unnamedItemDefs.addAll(unnamedItemDefs);
 
-        return clone;
+            return clone;
+        } catch (CloneNotSupportedException e) {
+            // won't happen
+            throw new InternalError("Failed to clone EffectiveNodeType object");
+        }
     }
 }

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java?rev=631547&r1=631546&r2=631547&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeDef.java Wed Feb 27 02:47:14 2008
@@ -308,16 +308,21 @@
 
     //-------------------------------------------< java.lang.Object overrides >
     public Object clone() {
-        NodeTypeDef clone = new NodeTypeDef();
-        clone.name = name;
-        clone.primaryItemName = primaryItemName;
-        clone.supertypes = supertypes; // immutable, thus ok to share
-        clone.mixin = mixin;
-        clone.orderableChildNodes = orderableChildNodes;
-        clone.abstractStatus = abstractStatus;
-        clone.nodeDefs = (HashSet) nodeDefs.clone();
-        clone.propDefs = (HashSet) propDefs.clone();
-        return clone;
+        try {
+            NodeTypeDef clone = (NodeTypeDef) super.clone();
+            clone.name = name;
+            clone.primaryItemName = primaryItemName;
+            clone.supertypes = supertypes; // immutable, thus ok to share
+            clone.mixin = mixin;
+            clone.orderableChildNodes = orderableChildNodes;
+            clone.abstractStatus = abstractStatus;
+            clone.nodeDefs = (HashSet) nodeDefs.clone();
+            clone.propDefs = (HashSet) propDefs.clone();
+            return clone;
+        } catch (CloneNotSupportedException e) {
+            // won't happen
+            throw new InternalError("Failed to clone NodeTypeDef object");
+        }
     }
 
     public boolean equals(Object obj) {