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

📄 versionitemcollection.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.version;import org.apache.jackrabbit.JcrConstants;import org.apache.jackrabbit.webdav.DavConstants;import org.apache.jackrabbit.webdav.DavException;import org.apache.jackrabbit.webdav.DavResourceFactory;import org.apache.jackrabbit.webdav.DavResourceLocator;import org.apache.jackrabbit.webdav.DavServletResponse;import org.apache.jackrabbit.webdav.jcr.DefaultItemCollection;import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;import org.apache.jackrabbit.webdav.jcr.JcrDavException;import org.apache.jackrabbit.webdav.jcr.JcrDavSession;import org.apache.jackrabbit.webdav.property.DavPropertyName;import org.apache.jackrabbit.webdav.property.DefaultDavProperty;import org.apache.jackrabbit.webdav.property.HrefProperty;import org.apache.jackrabbit.webdav.version.LabelInfo;import org.apache.jackrabbit.webdav.version.LabelSetProperty;import org.apache.jackrabbit.webdav.version.VersionHistoryResource;import org.apache.jackrabbit.webdav.version.VersionResource;import org.apache.jackrabbit.webdav.version.report.ReportType;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.jcr.Item;import javax.jcr.Node;import javax.jcr.Property;import javax.jcr.PropertyIterator;import javax.jcr.RepositoryException;import javax.jcr.version.Version;import javax.jcr.version.VersionHistory;import java.util.ArrayList;import java.util.List;/** * <code>VersionItemCollection</code> represents a JCR version. * * @see Version */public class VersionItemCollection extends DefaultItemCollection        implements VersionResource {    private static Logger log = LoggerFactory.getLogger(VersionItemCollection.class);    /**     * Create a new <code>VersionItemCollection</code>.     *     * @param locator     * @param session     * @param factory     */    public VersionItemCollection(DavResourceLocator locator,                                 JcrDavSession session,                                 DavResourceFactory factory, Item item) {        super(locator, session, factory, item);        if (item == null || !(item instanceof Version)) {            throw new IllegalArgumentException("Version item expected.");        }    }    //----------------------------------------------< DavResource interface >---    /**     * @see org.apache.jackrabbit.webdav.DavResource#getSupportedMethods()     */    public String getSupportedMethods() {        StringBuffer sb = new StringBuffer(ItemResourceConstants.METHODS);        sb.append(", ").append(VersionResource.METHODS);        return sb.toString();    }    //------------------------------------------< VersionResource interface >---    /**     * Modify the labels defined for the underlying repository version.     *     * @param labelInfo     * @throws org.apache.jackrabbit.webdav.DavException     * @see VersionResource#label(org.apache.jackrabbit.webdav.version.LabelInfo)     * @see VersionHistory#addVersionLabel(String, String, boolean)     * @see VersionHistory#removeVersionLabel(String)     */    public void label(LabelInfo labelInfo) throws DavException {        if (labelInfo == null) {            throw new DavException(DavServletResponse.SC_BAD_REQUEST, "Valid label request body required.");        }        if (!exists()) {            throw new DavException(DavServletResponse.SC_NOT_FOUND);        }        try {            VersionHistory vh = getVersionHistoryItem();            if (labelInfo.getType() == LabelInfo.TYPE_REMOVE) {                vh.removeVersionLabel(labelInfo.getLabelName());            } else if (labelInfo.getType() == LabelInfo.TYPE_ADD) {                // ADD: only add if not yet existing                vh.addVersionLabel(item.getName(), labelInfo.getLabelName(), false);            } else {                // SET: move label if already existing                vh.addVersionLabel(item.getName(), labelInfo.getLabelName(), true);            }        } catch (RepositoryException e) {            throw new JcrDavException(e);        }    }    /**     * Returns the {@link VersionHistory} associated with the repository version.     * Note: in contrast to a versionable node, the version history of a version     * item is always represented by its nearest ancestor.     *     * @return the {@link VersionHistoryResource} associated with this resource.     * @throws org.apache.jackrabbit.webdav.DavException     * @see org.apache.jackrabbit.webdav.version.VersionResource#getVersionHistory()     * @see javax.jcr.Item#getParent()     */    public VersionHistoryResource getVersionHistory() throws DavException {        if (!exists()) {            throw new DavException(DavServletResponse.SC_NOT_FOUND);        }        try {            VersionHistory vh = getVersionHistoryItem();            DavResourceLocator loc = getLocatorFromItem(vh);            return (VersionHistoryResource) createResourceFromLocator(loc);        } catch (RepositoryException e) {            throw new JcrDavException(e);        }    }    /**     * Return versionhistory that contains this version item     *     * @return versionhistory that contains this version item     * @throws RepositoryException     * @see javax.jcr.version.Version#getContainingHistory()      */    private VersionHistory getVersionHistoryItem() throws RepositoryException {        return ((Version)item).getContainingHistory();    }    //--------------------------------------------------------------------------    /**     * Define the set of reports supported by this resource.     *     * @see org.apache.jackrabbit.webdav.version.report.SupportedReportSetProperty     */    protected void initSupportedReports() {        super.initSupportedReports();        if (exists()) {            supportedReports.addReportType(ReportType.VERSION_TREE);        }    }    /**     * Fill the property set for this resource.     */    protected void initProperties() {        super.initProperties();        if (exists()) {            Version v = (Version)item;            // created and creationDate properties            try {                String creationDate = DavConstants.creationDateFormat.format(v.getCreated().getTime());                // replace dummy creation date from default collection                properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE, creationDate));                // required, protected DAV:version-name property                properties.add(new DefaultDavProperty(VERSION_NAME, v.getName(), true));                // required, protected DAV:label-name-set property                String[] labels = getVersionHistoryItem().getVersionLabels(v);                properties.add(new LabelSetProperty(labels));                // required DAV:predecessor-set (protected) and DAV:successor-set (computed) properties                addHrefProperty(VersionResource.PREDECESSOR_SET, v.getPredecessors(), true);                addHrefProperty(SUCCESSOR_SET, v.getSuccessors(), true);                // required DAV:version-history (computed) property                String vhHref = getLocatorFromItem(getVersionHistoryItem()).getHref(true);                properties.add(new HrefProperty(VersionResource.VERSION_HISTORY, vhHref, true));                // required DAV:checkout-set (computed) property                PropertyIterator it = v.getReferences();                List nodeList = new ArrayList();                while (it.hasNext()) {                    Property p = it.nextProperty();                    if (JcrConstants.JCR_BASEVERSION.equals(p.getName())) {                        Node n = p.getParent();                        if (n.isCheckedOut()) {                           nodeList.add(n);                        }                    }                }                addHrefProperty(CHECKOUT_SET, (Node[]) nodeList.toArray(new Node[nodeList.size()]), true);            } catch (RepositoryException e) {                log.error(e.getMessage());            }        }    }}

⌨️ 快捷键说明

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