You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/08/05 10:53:54 UTC

svn commit: r982510 - in /jackrabbit/branches/2.0: ./ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java

Author: jukka
Date: Thu Aug  5 08:53:54 2010
New Revision: 982510

URL: http://svn.apache.org/viewvc?rev=982510&view=rev
Log:
2.0: Merged revision 982505 (JCR-2341)

Modified:
    jackrabbit/branches/2.0/   (props changed)
    jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
    jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java

Propchange: jackrabbit/branches/2.0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  5 08:53:54 2010
@@ -1,6 +1,6 @@
 /jackrabbit/branches/1.5:794012,794100,794102
-/jackrabbit/branches/2.1:955309,955314,982266,982277
+/jackrabbit/branches/2.1:955309,955314,982266,982277,982505
 /jackrabbit/sandbox/JCR-1456:774917-886178
 /jackrabbit/sandbox/JCR-2170:812417-816332
 /jackrabbit/sandbox/tripod-JCR-2209:795441-795863
-/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408,896513,896532,896857,896870,896876,896908,896940,896942-896943,896969,896977,897071,897836,897842,897858,897935,897983,897992-897993,897996,898002,898042,898267,898325,898540,898677,898699,898701,898715,898872,899102,899181,899391,899393-899394,899583,899594,899643,900305,900310,900314,900453,900702,900736,900762-900763,900767,900782,901095,901122,901139,901144,901170,901176,901191,901193,901196,901216,901228,901285,902058,902062,926324,928888,936668,955222,955229,955307,965539
+/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408,896513,896532,896857,896870,896876,896908,896940,896942-896943,896969,896977,897071,897836,897842,897858,897935,897983,897992-897993,897996,898002,898042,898267,898325,898540,898677,898699,898701,898715,898872,899102,899181,899391,899393-899394,899583,899594,899643,900305,900310,900314,900453,900702,900736,900762-900763,900767,900782,901095,901122,901139,901144,901170,901176,901191,901193,901196,901216,901228,901285,902058,902062,926324,928888,936668,955222,955229,955307,955852,965539

Modified: jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java?rev=982510&r1=982509&r2=982510&view=diff
==============================================================================
--- jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java (original)
+++ jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java Thu Aug  5 08:53:54 2010
@@ -314,7 +314,7 @@ public class NodeImpl extends ItemImpl i
                     // make transient (copy-on-write)
                     NodeState transientState =
                             stateMgr.createTransientNodeState(
-                                    data.getNodeState(), ItemState.STATUS_EXISTING_MODIFIED);
+                                    (NodeState) stateMgr.getItemState(getId()), ItemState.STATUS_EXISTING_MODIFIED);
                     // replace persistent with transient state
                     data.setState(transientState);
                 } catch (ItemStateException ise) {

Modified: jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java?rev=982510&r1=982509&r2=982510&view=diff
==============================================================================
--- jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java (original)
+++ jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java Thu Aug  5 08:53:54 2010
@@ -1874,6 +1874,61 @@ public class XATest extends AbstractJCRT
         other.save();
         utx.commit();
     }
+
+    /**
+     * Tests if it is possible to add-lock a node and unlock-remove it with
+     * a shared session in different transactions
+     * (see JCR-2341)  
+     * @throws Exception
+     */
+    public void testAddLockTokenRemoveNode2() throws Exception {
+        // create new node and lock it
+        UserTransaction utx = new UserTransactionImpl(superuser);
+        utx.begin();
+
+        // add node that is both lockable and referenceable, save
+        Node rootNode = superuser.getRootNode(); 
+        Node n = rootNode.addNode(nodeName1);
+        n.addMixin(mixLockable);
+        n.addMixin(mixReferenceable);
+        rootNode.save();
+
+        String uuid = n.getUUID();
+        
+        // lock this new node
+        Lock lock = n.lock(true, false);
+        String lockToken = lock.getLockToken();
+        
+        // commit
+        utx.commit();
+        
+        
+        // refresh Lock Info
+        lock = n.getLock();
+
+        // start new Transaction and try to add lock token unlock the node and then remove it
+        utx = new UserTransactionImpl(superuser);
+        utx.begin();
+        
+        Node otherNode = superuser.getNodeByUUID(uuid); 
+        assertTrue("Node not locked", otherNode.isLocked());
+        // add lock token
+        superuser.addLockToken(lockToken);
+      
+        // refresh Lock Info
+        lock = otherNode.getLock();
+
+        // assert: session must hold lock token
+        assertTrue("session must hold lock token", containsLockToken(superuser, lockToken));        
+        
+        otherNode.unlock();
+        
+        assertFalse("Node is locked", otherNode.isLocked());
+        
+        otherNode.remove();
+        superuser.save();
+        utx.commit();
+    }
     
     /**
      * Test setting the same property multiple times. Exposes an issue where