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 2005/04/11 17:14:27 UTC

svn commit: r160903 - in incubator/jackrabbit/trunk/src: java/org/apache/jackrabbit/core/ java/org/apache/jackrabbit/core/xml/ test/org/apache/jackrabbit/test/api/

Author: stefan
Date: Mon Apr 11 08:14:23 2005
New Revision: 160903

URL: http://svn.apache.org/viewcvs?view=rev&rev=160903
Log:
fixed incorrect test cases and fixed code that caused valid testcases to fail

Modified:
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/WorkspaceImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/AbstractWorkspaceReferenceableTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneReferenceableTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesReferenceableTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyReferenceableTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveReferenceableTest.java
    incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveTest.java

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java Mon Apr 11 08:14:23 2005
@@ -377,7 +377,8 @@
         try {
             int depth = 0;
             ItemState state = getItemState(id);
-            for (String parentUUID = state.getParentUUID(); parentUUID != null;) {
+            String parentUUID = state.getParentUUID();
+            while (parentUUID != null) {
                 state = (NodeState) getItemState(new NodeId(parentUUID));
                 parentUUID = state.getParentUUID();
                 depth++;

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/ItemImpl.java Mon Apr 11 08:14:23 2005
@@ -1424,6 +1424,9 @@
      * {@inheritDoc}
      */
     public String getPath() throws RepositoryException {
+        // check state of this instance
+        sanityCheck();
+
         try {
             return getPrimaryPath().toJCRPath(session.getNamespaceResolver());
         } catch (NoPrefixDeclaredException npde) {
@@ -1438,6 +1441,9 @@
      * {@inheritDoc}
      */
     public int getDepth() throws RepositoryException {
+        // check state of this instance
+        sanityCheck();
+
         if (state.getParentUUID() == null) {
             // shortcut
             return 0;
@@ -1449,6 +1455,9 @@
      * {@inheritDoc}
      */
     public Session getSession() throws RepositoryException {
+        // check state of this instance
+        sanityCheck();
+
         return session;
     }
 

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/NodeImpl.java Mon Apr 11 08:14:23 2005
@@ -626,8 +626,7 @@
             // remove properties
             // use temp array to avoid ConcurrentModificationException
             tmp = new ArrayList(thisState.getPropertyEntries());
-            // remove from tail to avoid problems with same-name siblings
-            for (int i = tmp.size() - 1; i >= 0; i--) {
+            for (int i = 0; i < tmp.size(); i++) {
                 NodeState.PropertyEntry entry = (NodeState.PropertyEntry) tmp.get(i);
                 removeChildProperty(entry.getName());
             }

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/PropertyImpl.java Mon Apr 11 08:14:23 2005
@@ -1173,6 +1173,9 @@
      * {@inheritDoc}
      */
     public String getName() throws RepositoryException {
+        // check state of this instance
+        sanityCheck();
+
         PropertyId propId = (PropertyId) id;
         QName name = propId.getName();
         try {

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/WorkspaceImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/WorkspaceImpl.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/WorkspaceImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/WorkspaceImpl.java Mon Apr 11 08:14:23 2005
@@ -897,8 +897,7 @@
             // remove properties
             // use temp array to avoid ConcurrentModificationException
             tmp = new ArrayList(targetState.getPropertyEntries());
-            // remove from tail to avoid problems with same-name siblings
-            for (int i = tmp.size() - 1; i >= 0; i--) {
+            for (int i = 0; i < tmp.size(); i++) {
                 NodeState.PropertyEntry entry = (NodeState.PropertyEntry) tmp.get(i);
                 PropertyId propId =
                         new PropertyId(targetState.getUUID(), entry.getName());
@@ -923,8 +922,9 @@
         targetState.removeParentUUID(parentUUID);
 
         if (orphaned) {
-            // destroy target state
-            stateMgr.destroy(targetState);
+            // destroy target state (pass overlayed state since target state
+            // might have been modified during unlinking)
+            stateMgr.destroy(targetState.getOverlayedState());
         } else {
             // store target state
             stateMgr.store(targetState);

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java Mon Apr 11 08:14:23 2005
@@ -474,8 +474,7 @@
             // remove properties
             // use temp array to avoid ConcurrentModificationException
             tmp = new ArrayList(target.getPropertyEntries());
-            // remove from tail to avoid problems with same-name siblings
-            for (int i = tmp.size() - 1; i >= 0; i--) {
+            for (int i = 0; i < tmp.size(); i++) {
                 NodeState.PropertyEntry entry = (NodeState.PropertyEntry) tmp.get(i);
                 PropertyId propId =
                         new PropertyId(target.getUUID(), entry.getName());
@@ -499,7 +498,9 @@
         target.removeParentUUID(parentUUID);
 
         if (orphaned) {
-            // destroy target
+            // destroy target state (pass overlayed state since target state
+            // might have been modified during unlinking)
+            stateMgr.destroy(target.getOverlayedState());
             stateMgr.destroy(target);
         } else {
             // store target

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/AbstractWorkspaceReferenceableTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/AbstractWorkspaceReferenceableTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/AbstractWorkspaceReferenceableTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/AbstractWorkspaceReferenceableTest.java Mon Apr 11 08:14:23 2005
@@ -50,17 +50,14 @@
     /**
      * add the mix:referenceable mixin type to a node.
      *
-     * @param parent
      * @param node
      * @return referenceable node.
      */
-    protected Node addMixinReferenceableToNode(Node parent, Node node) throws RepositoryException {
-        NodeType nodetype = node.getPrimaryNodeType();
-        if (!nodetype.isNodeType(mixReferenceable)) {
+    protected Node addMixinReferenceableToNode(Node node) throws RepositoryException {
+        if (!node.isNodeType(mixReferenceable)) {
             node.addMixin(mixReferenceable);
+            node.save();
         }
-        parent.save();
-
         return node;
     }
 }

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneReferenceableTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneReferenceableTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneReferenceableTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneReferenceableTest.java Mon Apr 11 08:14:23 2005
@@ -38,7 +38,7 @@
      */
     public void testCloneNodesReferenceableNodesOriginalUUID() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
 
         // copy referenceable node below non-referenceable node
         String dstAbsPath = node2W2.getPath() + "/" + node1.getName();
@@ -62,7 +62,7 @@
      */
     public void testCloneNodesRemoveExistingTrue() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
 
         // clone a node from default workspace to have the same uuid on second workspace
         String dstAbsPath = node2W2.getPath() + "/" + nodeName2;
@@ -76,11 +76,7 @@
 
         // because a node with same uuid exists (cloned node in earlier step - nodeName2), the existing node (and its subtree)
         // should be removed ...
-        assertFalse(testRootNodeW2.hasNode(clonedNode.getName()));
-
-        // ... and is copied to this workspace as part of the copied subtree (that is, not into the former location of the old node).
-        Node clonedNodeMoved = clonedNode2.getNode(clonedNode.getName());
-        assertTrue(testRootNodeW2.hasNode(clonedNodeMoved.getName()));
+        assertFalse(node2W2.hasNode(nodeName2));
     }
 
     /**
@@ -89,7 +85,7 @@
      */
     public void testCloneNodesRemoveExistingFalse() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
 
         // clone a node from default workspace to have the same uuid on second workspace
         workspaceW2.clone(workspace.getName(), node1.getPath(), testRootNodeW2.getPath() + "/" + nodeName2, false);
@@ -110,7 +106,7 @@
         // clone referenceable node
 
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
         if (node1.isNodeType(mixReferenceable)) {
             workspaceW2.clone(workspace.getName(), node1.getPath(), testRootNodeW2.getPath() + "/" + nodeName2, false);
         } else {

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCloneTest.java Mon Apr 11 08:14:23 2005
@@ -106,7 +106,7 @@
      */
     public void testCloneNodesAccessDenied() throws RepositoryException {
         // logout and get read only session
-        superuser.logout();
+        //superuser.logout();
         Session readOnlySuperuser = helper.getReadOnlySession();
 
         String dstAbsPath = node2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesReferenceableTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesReferenceableTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesReferenceableTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesReferenceableTest.java Mon Apr 11 08:14:23 2005
@@ -36,7 +36,7 @@
      */
     public void testCopyNodesReferenceableNodesNewUUID() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
         
         // copy referenceable node below non-referenceable node
         String dstAbsPath = node2W2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyBetweenWorkspacesTest.java Mon Apr 11 08:14:23 2005
@@ -109,8 +109,6 @@
      * sufficient access permissions to complete the operation.
      */
     public void testCopyNodesAccessDenied() throws RepositoryException {
-        // logout and get read only session
-        superuser.logout();
         Session readOnlySuperuser = helper.getReadOnlySession();
 
         String dstAbsPath = node2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyReferenceableTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyReferenceableTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyReferenceableTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyReferenceableTest.java Mon Apr 11 08:14:23 2005
@@ -36,7 +36,7 @@
      */
     public void testCopyNodesNewUUID() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
         
         // copy referenceable node below non-referenceable node
         String dstAbsPath = node2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceCopyTest.java Mon Apr 11 08:14:23 2005
@@ -90,8 +90,6 @@
      * sufficient access permissions to complete the operation.
      */
     public void testCopyNodesAccessDenied() throws RepositoryException {
-        // logout and get read only session
-        superuser.logout();
         Session readOnlySuperuser = helper.getReadOnlySession();
 
         String dstAbsPath = node2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveReferenceableTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveReferenceableTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveReferenceableTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveReferenceableTest.java Mon Apr 11 08:14:23 2005
@@ -36,7 +36,7 @@
      */
     public void testMoveNodesReferenceableNodesNewUUID() throws RepositoryException {
         // add mixin referenceable to node1
-        addMixinReferenceableToNode(testRootNode, node1);
+        addMixinReferenceableToNode(node1);
         
         // copy referenceable node below non-referenceable node
         String dstAbsPath = node2.getPath() + "/" + node1.getName();

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveTest.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveTest.java?view=diff&r1=160902&r2=160903
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveTest.java (original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/api/WorkspaceMoveTest.java Mon Apr 11 08:14:23 2005
@@ -90,8 +90,6 @@
      * sufficient access permissions to complete the operation.
      */
     public void testMoveNodesAccessDenied() throws RepositoryException {
-        // logout and get read only session
-        superuser.logout();
         Session readOnlySuperuser = helper.getReadOnlySession();
 
         String dstAbsPath = node2.getPath() + "/" + node1.getName();