jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From resc...@apache.org
Subject svn commit: r1357590 - /jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java
Date Thu, 05 Jul 2012 13:13:54 GMT
Author: reschke
Date: Thu Jul  5 13:13:54 2012
New Revision: 1357590

URL: http://svn.apache.org/viewvc?rev=1357590&view=rev
Log:
JCR-3371: fix removeMixin(mix:shareable) test case to allow removal of mixin; add an additional
one that tests with a shared set

Modified:
    jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java

Modified: jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java?rev=1357590&r1=1357589&r2=1357590&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java
(original)
+++ jackrabbit/trunk/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/ShareableNodeTest.java
Thu Jul  5 13:13:54 2012
@@ -1079,8 +1079,7 @@ public class ShareableNodeTest extends A
     }
 
     /**
-     * Remove mix:shareable from a shareable node. This is unsupported in
-     * Jackrabbit (6.13.22).
+     * Remove mix:shareable from a shareable node.
      */
     public void testRemoveMixin() throws Exception {
         // setup parent node and first child
@@ -1090,15 +1089,65 @@ public class ShareableNodeTest extends A
 
         // add mixin
         ensureMixinType(b, mixShareable);
-        b.save();
+        b.getSession().save();
 
+        // Removing the mixin will either succeed or will fail with a
+        // ConstraintViolationException
+        // (per Section 14.15 of JSR-283 specification)
         try {
             // remove mixin
             b.removeMixin(mixShareable);
-            b.save();
-            fail("Removing mix:shareable should fail.");
+            b.getSession().save();
+            // If this happens, then b shouldn't be shareable anymore ...
+            assertFalse(b.isNodeType(mixShareable));
+        } catch (ConstraintViolationException e) {
+            // one possible outcome if removing 'mix:shareable' isn't supported
         } catch (UnsupportedRepositoryOperationException e) {
-            // expected
+            // also possible if the implementation doesn't support this
+            // capability
+        }
+    }
+
+    /**
+     * Remove mix:shareable from a shareable node that has 2 nodes in the shared set. 
+     */
+    public void testRemoveMixinFromSharedNode() throws Exception {
+        // setup parent nodes and first child
+        Node a1 = testRootNode.addNode("a1");
+        Node a2 = testRootNode.addNode("a2");
+        Node b1 = a1.addNode("b1");
+        testRootNode.getSession().save();
+
+        // add mixin
+        ensureMixinType(b1, mixShareable);
+        b1.getSession().save();
+
+        // clone
+        Workspace workspace = b1.getSession().getWorkspace();
+        workspace.clone(workspace.getName(), b1.getPath(), a2.getPath() + "/b2", false);
+
+        Node[] shared = getSharedSet(b1);
+        assertEquals(2, shared.length);
+        b1 = shared[0];
+        Node b2 = shared[1];
+        assertTrue(b2.isSame(b1));
+
+        // Removing the mixin will either succeed or will fail with a
+        // ConstraintViolationException
+        // (per Section 14.15 of JSR-283 specification)
+        try {
+            // remove mixin
+            b1.removeMixin(mixShareable);
+            b1.getSession().save();
+            // If this happens, then b1 shouldn't be shareable anymore
+            // ...
+            assertFalse(b1.isNodeType(mixShareable));
+            assertFalse(b2.isSame(b1));
+        } catch (ConstraintViolationException e) {
+            // one possible outcome if removing 'mix:shareable' isn't supported
+        } catch (UnsupportedRepositoryOperationException e) {
+            // also possible if the implementation doesn't support this
+            // capability
         }
     }
 



Mime
View raw message