org.apache.jackrabbit.jcr2spi.JcrLockManager Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.jcr2spi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.jackrabbit.jcr2spi.lock.LockStateManager;
import org.apache.jackrabbit.spi.commons.conversion.PathResolver;
import javax.jcr.lock.LockManager;
import javax.jcr.lock.LockException;
import javax.jcr.RepositoryException;
import javax.jcr.Node;
/**
* JcrLockManager
...
*/
public class JcrLockManager implements LockManager {
/**
* logger instance
*/
private static final Logger log = LoggerFactory.getLogger(JcrLockManager.class);
private final LockStateManager lockStateMgr;
private final ItemManager itemManager;
private final PathResolver resolver;
protected JcrLockManager(SessionImpl session) {
lockStateMgr = session.getLockStateManager();
itemManager = session.getItemManager();
resolver = session.getPathResolver();
}
//--------------------------------------------------------< LockManager >---
/**
* @see javax.jcr.lock.LockManager#getLock(String)
*/
public javax.jcr.lock.Lock getLock(String absPath) throws LockException, RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
return n.getLock();
}
/**
* @see javax.jcr.lock.LockManager#isLocked(String)
*/
public boolean isLocked(String absPath) throws RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
return n.isLocked();
}
/**
* @see javax.jcr.lock.LockManager#holdsLock(String)
*/
public boolean holdsLock(String absPath) throws RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
return n.holdsLock();
}
/**
* @see javax.jcr.lock.LockManager#lock(String, boolean, boolean, long, String)
*/
public javax.jcr.lock.Lock lock(String absPath, boolean isDeep, boolean isSessionScoped, long timeoutHint, String ownerInfo) throws RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
return ((NodeImpl) n).lock(isDeep, isSessionScoped, timeoutHint, ownerInfo);
}
/**
* @see javax.jcr.lock.LockManager#unlock(String)
*/
public void unlock(String absPath) throws LockException, RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
n.unlock();
}
/**
* Returns the lock tokens present on the SessionInfo
this
* manager has been created with.
*
* @see javax.jcr.lock.LockManager#getLockTokens()
*/
public String[] getLockTokens() throws RepositoryException {
return lockStateMgr.getLockTokens();
}
/**
* Delegates this call to {@link WorkspaceManager#addLockToken(String)}.
* If this succeeds this method will inform all locks stored in the local
* map in order to give them the chance to update their lock information.
*
* @see javax.jcr.lock.LockManager#addLockToken(String)
*/
public void addLockToken(String lt) throws LockException, RepositoryException {
lockStateMgr.addLockToken(lt);
}
/**
* If the lock addressed by the token is session-scoped, this method will
* throw a LockException, such as defined by JSR170 v.1.0.1 for
* {@link javax.jcr.Session#removeLockToken(String)}.
Otherwise the call is
* delegated to {@link WorkspaceManager#removeLockToken(String)}.
* All locks stored in the local lock map are notified by the removed
* token in order have them updated their lock information.
*
* @see javax.jcr.lock.LockManager#removeLockToken(String)
*/
public void removeLockToken(String lt) throws LockException, RepositoryException {
lockStateMgr.removeLockToken(lt);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy