You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Dominik Klaholt <do...@mail.upb.de> on 2010/09/27 19:42:10 UTC

Is a node still locked after session.move()?

Hello,

I have written a test-method that deals with moving a locked node and 
can be executed within XATest.java ( 
http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java 
) - it is attached below this email.
The test-method locks a node, moves this node and then tests whether it 
is still locked. Checking the locked-status of the node by using its 
identifier yields that it is still locked. However, checking the 
locked-status of the node by using its new path yields that it is no 
longer locked.
Is this intended due to some reason I don't see right now? Is something 
wrong with my test-case?

Thanks
Dominik


public void testLockedOrUnlocked() throws Exception {
         Session session = null;
         try {
             session = getHelper().getSuperuserSession();

             // prerequisite of test
             if (session.getRootNode().hasNode("testParent")) {
                 session.getRootNode().getNode("testParent").remove();
             }
             
session.getRootNode().addNode("testParent").addNode("testNode").addMixin(NodeType.MIX_LOCKABLE);
             session.save();

             // ids of the two nodes
             String testParentId = 
session.getRootNode().getNode("testParent").getIdentifier();
             String testNodeId = 
session.getNodeByIdentifier(testParentId).getNode("testNode").getIdentifier();

             // lock 'testNode'
             
session.getWorkspace().getLockManager().lock(session.getNodeByIdentifier(testNodeId).getPath(), 
false,
                     true, 0L, null);
             // confirm lock
             assertTrue(session.getWorkspace().getLockManager().isLocked(
                     session.getNodeByIdentifier(testNodeId).getPath()));

             // move 'testNode'
             
session.move(session.getNodeByIdentifier(testNodeId).getPath(), 
session.getRootNode().getPath()
                     + "testNode");
             session.save();
             // is 'testNode' still locked?
             // this call says, it's locked
             assertTrue(session.getWorkspace().getLockManager().isLocked(
                     session.getNodeByIdentifier(testNodeId).getPath()));
             // this call says, it's not
             assertTrue(session.getWorkspace().getLockManager().isLocked(
                     session.getRootNode().getNode("testNode").getPath()));
         } finally {
             if (session != null) {
                 session.logout();
             }
         }
     }

Re: Is a node still locked after session.move()?

Posted by Dominik Klaholt <do...@mail.upb.de>.
Hi,

it's not a bug, it's my mistake. I had somehow managed to mess up 
whatever memory the Jackrabbit-JUnit-Tests use (nodes with same name...).
Sorry for bothering.

Dominik

Am 29.09.2010 10:18, schrieb Stefan Guggisberg:
> hi dominik,
>
> On Mon, Sep 27, 2010 at 7:42 PM, Dominik Klaholt<do...@mail.upb.de>  wrote:
>    
>> Hello,
>>
>> I have written a test-method that deals with moving a locked node and can be
>> executed within XATest.java (
>> http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java
>> ) - it is attached below this email.
>> The test-method locks a node, moves this node and then tests whether it is
>> still locked. Checking the locked-status of the node by using its identifier
>> yields that it is still locked. However, checking the locked-status of the
>> node by using its new path yields that it is no longer locked.
>>      
> this seems to be a bug.  could you please post a jira issue?
>
> thanks
> stefan
>
>    
>> Is this intended due to some reason I don't see right now? Is something
>> wrong with my test-case?
>>
>> Thanks
>> Dominik
>>
>>
>> public void testLockedOrUnlocked() throws Exception {
>>         Session session = null;
>>         try {
>>             session = getHelper().getSuperuserSession();
>>
>>             // prerequisite of test
>>             if (session.getRootNode().hasNode("testParent")) {
>>                 session.getRootNode().getNode("testParent").remove();
>>             }
>>
>>   session.getRootNode().addNode("testParent").addNode("testNode").addMixin(NodeType.MIX_LOCKABLE);
>>             session.save();
>>
>>             // ids of the two nodes
>>             String testParentId =
>> session.getRootNode().getNode("testParent").getIdentifier();
>>             String testNodeId =
>> session.getNodeByIdentifier(testParentId).getNode("testNode").getIdentifier();
>>
>>             // lock 'testNode'
>>
>>   session.getWorkspace().getLockManager().lock(session.getNodeByIdentifier(testNodeId).getPath(),
>> false,
>>                     true, 0L, null);
>>             // confirm lock
>>             assertTrue(session.getWorkspace().getLockManager().isLocked(
>>                     session.getNodeByIdentifier(testNodeId).getPath()));
>>
>>             // move 'testNode'
>>             session.move(session.getNodeByIdentifier(testNodeId).getPath(),
>> session.getRootNode().getPath()
>>                     + "testNode");
>>             session.save();
>>             // is 'testNode' still locked?
>>             // this call says, it's locked
>>             assertTrue(session.getWorkspace().getLockManager().isLocked(
>>                     session.getNodeByIdentifier(testNodeId).getPath()));
>>             // this call says, it's not
>>             assertTrue(session.getWorkspace().getLockManager().isLocked(
>>                     session.getRootNode().getNode("testNode").getPath()));
>>         } finally {
>>             if (session != null) {
>>                 session.logout();
>>             }
>>         }
>>     }
>>
>>      

Re: Is a node still locked after session.move()?

Posted by Stefan Guggisberg <st...@day.com>.
hi dominik,

On Mon, Sep 27, 2010 at 7:42 PM, Dominik Klaholt <do...@mail.upb.de> wrote:
> Hello,
>
> I have written a test-method that deals with moving a locked node and can be
> executed within XATest.java (
> http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/XATest.java
> ) - it is attached below this email.
> The test-method locks a node, moves this node and then tests whether it is
> still locked. Checking the locked-status of the node by using its identifier
> yields that it is still locked. However, checking the locked-status of the
> node by using its new path yields that it is no longer locked.

this seems to be a bug.  could you please post a jira issue?

thanks
stefan

> Is this intended due to some reason I don't see right now? Is something
> wrong with my test-case?
>
> Thanks
> Dominik
>
>
> public void testLockedOrUnlocked() throws Exception {
>        Session session = null;
>        try {
>            session = getHelper().getSuperuserSession();
>
>            // prerequisite of test
>            if (session.getRootNode().hasNode("testParent")) {
>                session.getRootNode().getNode("testParent").remove();
>            }
>
>  session.getRootNode().addNode("testParent").addNode("testNode").addMixin(NodeType.MIX_LOCKABLE);
>            session.save();
>
>            // ids of the two nodes
>            String testParentId =
> session.getRootNode().getNode("testParent").getIdentifier();
>            String testNodeId =
> session.getNodeByIdentifier(testParentId).getNode("testNode").getIdentifier();
>
>            // lock 'testNode'
>
>  session.getWorkspace().getLockManager().lock(session.getNodeByIdentifier(testNodeId).getPath(),
> false,
>                    true, 0L, null);
>            // confirm lock
>            assertTrue(session.getWorkspace().getLockManager().isLocked(
>                    session.getNodeByIdentifier(testNodeId).getPath()));
>
>            // move 'testNode'
>            session.move(session.getNodeByIdentifier(testNodeId).getPath(),
> session.getRootNode().getPath()
>                    + "testNode");
>            session.save();
>            // is 'testNode' still locked?
>            // this call says, it's locked
>            assertTrue(session.getWorkspace().getLockManager().isLocked(
>                    session.getNodeByIdentifier(testNodeId).getPath()));
>            // this call says, it's not
>            assertTrue(session.getWorkspace().getLockManager().isLocked(
>                    session.getRootNode().getNode("testNode").getPath()));
>        } finally {
>            if (session != null) {
>                session.logout();
>            }
>        }
>    }
>