⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jcractivelock.java

📁 jsr170接口的java实现。是个apache的开源项目。
💻 JAVA
字号:
/* * 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.webdav.jcr.lock;import org.apache.jackrabbit.JcrConstants;import org.apache.jackrabbit.webdav.DavConstants;import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;import org.apache.jackrabbit.webdav.lock.AbstractActiveLock;import org.apache.jackrabbit.webdav.lock.ActiveLock;import org.apache.jackrabbit.webdav.lock.Scope;import org.apache.jackrabbit.webdav.lock.Type;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.jcr.Node;import javax.jcr.RepositoryException;import javax.jcr.lock.Lock;/** * <code>JcrActiveLock</code> wraps a {@link Lock JCR lock} object. */public class JcrActiveLock extends AbstractActiveLock implements ActiveLock, DavConstants {    private static Logger log = LoggerFactory.getLogger(JcrActiveLock.class);    private final Lock lock;    private final boolean sessionScoped;    /**     * Create a new <code>ActiveLock</code> object with type '{@link Type#WRITE write}'     * and scope '{@link Scope#EXCLUSIVE exclusive}'.     *     * @param lock     */    public JcrActiveLock(Lock lock) {        this (lock, lock.isSessionScoped());    }    /**     * Create a new <code>ActiveLock</code> object with type '{@link Type#WRITE write}'     * and scope '{@link Scope#EXCLUSIVE exclusive}'.     *     * @param lock     */    public JcrActiveLock(Lock lock, boolean sessionScoped) {        if (lock == null) {            throw new IllegalArgumentException("Can not create a ActiveLock with a 'null' argument.");        }        this.lock = lock;        this.sessionScoped = sessionScoped;    }    /**     * Return true if the given lock token equals the token holding that lock.     *     * @param lockToken     * @return true if the given lock token equals this locks token.     * @see org.apache.jackrabbit.webdav.lock.ActiveLock#isLockedByToken(String)     */    public boolean isLockedByToken(String lockToken) {        if (lockToken != null && lockToken.equals(getToken())) {            return true;        }        return false;    }    /**     * @see ActiveLock#isExpired()     */    public boolean isExpired() {        try {            return !lock.isLive();        } catch (RepositoryException e) {            log.error("Unexpected error: " + e.getMessage());            return false;        }    }    /**     * Return the lock token if the {@link javax.jcr.Session} that optained the lock     * is the lock token holder, <code>null</code> otherwise.<br>     * NOTE: currently the token generated by the underlying JCR repository     * is not checked for compliance with RFC 2518 ("<cite>OpaqueLockToken-URI = "opaquelocktoken:"     * UUID [Extension] ; The UUID production is the string representation of a     * UUID, as defined in [ISO-11578]. Note that white space (LWS) is not allowed     * between elements of this production.</cite>").     *     * @see ActiveLock#getToken()     */    public String getToken() {        return lock.getLockToken();    }    /**     * @see ActiveLock#getOwner()     */    public String getOwner() {        return lock.getLockOwner();    }    /**     * @see ActiveLock#setOwner(String)     */    public void setOwner(String owner) {        throw new UnsupportedOperationException("setOwner is not implemented");    }    /**     * Since jcr locks do not reveal the time left until they expire, {@link #INFINITE_TIMEOUT}     * is returned. A missing timeout causes problems with Microsoft clients.     *     * @return Always returns {@link #INFINITE_TIMEOUT}     * @see ActiveLock#getTimeout()     */    public long getTimeout() {        return INFINITE_TIMEOUT;    }    /**     * Throws <code>UnsupportedOperationException</code>     *     * @see ActiveLock#setTimeout(long)     */    public void setTimeout(long timeout) {        throw new UnsupportedOperationException("setTimeout is not implemented");    }    /**     * @see ActiveLock#isDeep()     */    public boolean isDeep() {        boolean isDeep = true;        Node n = lock.getNode();        try {            // find out about deepness. if node does not hold the lock its deep anyway            if (n.holdsLock() && n.hasProperty(JcrConstants.JCR_LOCKISDEEP)) {                isDeep = n.getProperty(JcrConstants.JCR_LOCKISDEEP).getBoolean();            }        } catch (RepositoryException e) {            // ignore and keep default depth settings        }        return isDeep;    }    /**     * @see ActiveLock#setIsDeep(boolean)     */    public void setIsDeep(boolean isDeep) {        throw new UnsupportedOperationException("setIsDeep is not implemented");    }    /**     * Always returns {@link Type#WRITE}.     *     * @return {@link Type#WRITE}     * @see ActiveLock#getType()     */    public Type getType() {        return Type.WRITE;    }    /**     * @return The scope of this lock, which may either by an {@link Scope#EXCLUSIVE exclusive}     * or {@link ItemResourceConstants#EXCLUSIVE_SESSION exlusive session scoped}     * lock.     * @see ActiveLock#getScope()     */    public Scope getScope() {        return (sessionScoped) ? ItemResourceConstants.EXCLUSIVE_SESSION : Scope.EXCLUSIVE;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -