Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java	(date 1345220366000)
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java	(revision )
@@ -45,6 +45,7 @@
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.Value;
 import javax.jcr.lock.Lock;
+import javax.jcr.lock.LockException;
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 import javax.jcr.nodetype.NodeDefinition;
@@ -71,6 +72,7 @@
 import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
 import org.apache.jackrabbit.oak.jcr.value.ValueConverter;
 import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
+import org.apache.jackrabbit.oak.util.TODO;
 import org.apache.jackrabbit.value.ValueHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1217,9 +1219,9 @@
      */
     @Override
     @Nonnull
-    public Lock lock(boolean isDeep, boolean isSessionScoped)
+    public Lock lock(final boolean isDeep, boolean isSessionScoped)
             throws RepositoryException {
-        String userID = getSession().getUserID();
+        final String userID = getSession().getUserID();
 
         String lockOwner = sessionDelegate.getOakPathOrThrow(JCR_LOCK_OWNER);
         String lockIsDeep = sessionDelegate.getOakPathOrThrow(JCR_LOCK_IS_DEEP);
@@ -1239,6 +1241,56 @@
         }
 
         getSession().refresh(true);
+
+        if (isSessionScoped) {
+            return TODO.dummyImplementation().returnValue(new Lock() {
+                @Override
+                public String getLockOwner() {
+                    return userID;
+                }
+
+                @Override
+                public boolean isDeep() {
+                    return isDeep;
+                }
+
+                @Override
+                public Node getNode() {
+                    return NodeImpl.this;
+                }
+
+                @Override
+                public String getLockToken() {
+                    return null;
+                }
+
+                @Override
+                public long getSecondsRemaining() throws RepositoryException {
+                    return Long.MAX_VALUE;
+                }
+
+                @Override
+                public boolean isLive() throws RepositoryException {
+                    return true;
+                }
+
+                @Override
+                public boolean isSessionScoped() {
+                    return true;
+                }
+
+                @Override
+                public boolean isLockOwningSession() {
+                    return true;
+                }
+
+                @Override
+                public void refresh() throws LockException, RepositoryException {
+
+                }
+            });
+        }
+
         return getLock();
     }
 
