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

📄 versionhistoryitemcollection.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.webdav.DavException;import org.apache.jackrabbit.webdav.DavResource;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.DefaultDavProperty;import org.apache.jackrabbit.webdav.property.HrefProperty;import org.apache.jackrabbit.webdav.property.ResourceType;import org.apache.jackrabbit.webdav.version.VersionHistoryResource;import org.apache.jackrabbit.webdav.version.VersionResource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.jcr.Item;import javax.jcr.RepositoryException;import javax.jcr.version.VersionHistory;import javax.jcr.version.VersionIterator;import java.util.ArrayList;/** * <code>VersionHistoryItemCollection</code> represents a JCR version history. * * @see VersionHistory */public class VersionHistoryItemCollection extends DefaultItemCollection        implements VersionHistoryResource {    private static Logger log = LoggerFactory.getLogger(VersionHistoryItemCollection.class);    /**     * Create a new <code>VersionHistoryItemCollection</code> resource.     *     * @param resourcePath     * @param session     * @param factory     */    public VersionHistoryItemCollection(DavResourceLocator resourcePath,                                        JcrDavSession session,                                        DavResourceFactory factory,                                        Item item) {        super(resourcePath, session, factory, item);        if (item == null || !(item instanceof VersionHistory)) {            throw new IllegalArgumentException("VersionHistory item expected.");        }    }    //----------------------------------------------< DavResource interface >---    /**     * @see org.apache.jackrabbit.webdav.DavResource#getSupportedMethods()     */    public String getSupportedMethods() {        StringBuffer sb = new StringBuffer(ItemResourceConstants.METHODS);        sb.append(", ").append(VersionHistoryResource.METHODS);        return sb.toString();    }    /**     * Removing a version resource is achieved by calling <code>removeVersion</code>     * on the versionhistory item this version belongs to.     *     * @throws DavException if the version does not exist or if an error occurs     * while deleting.     * @see DavResource#removeMember(org.apache.jackrabbit.webdav.DavResource)     */    public void removeMember(DavResource member) throws DavException {        if (exists()) {            VersionHistory versionHistory = (VersionHistory) item;            try {                versionHistory.removeVersion(getItemName(member.getLocator().getRepositoryPath()));            } catch (RepositoryException e) {                throw new JcrDavException(e);            }        } else {            throw new DavException(DavServletResponse.SC_NOT_FOUND);        }    }    //-----------------------------------< VersionHistoryResource interface >---    /**     * Return an array of {@link VersionResource}s representing all versions     * present in the underlying JCR version history.     *     * @return array of {@link VersionResource}s representing all versions     * present in the underlying JCR version history.     * @throws DavException     * @see org.apache.jackrabbit.webdav.version.VersionHistoryResource#getVersions()     */    public VersionResource[] getVersions() throws DavException {        try {            VersionIterator vIter = ((VersionHistory)item).getAllVersions();            ArrayList l = new ArrayList();            while (vIter.hasNext()) {                DavResourceLocator versionLoc = getLocatorFromItem(vIter.nextVersion());                DavResource vr = createResourceFromLocator(versionLoc);                l.add(vr);            }            return (VersionResource[]) l.toArray(new VersionResource[l.size()]);        } catch (RepositoryException e) {            throw new JcrDavException(e);        }    }        //--------------------------------------------------------------------------    /**     * Fill the property set for this resource.     */    protected void initProperties() {        super.initProperties();        // change resourcetype defined by default item collection        properties.add(new ResourceType(ResourceType.VERSION_HISTORY));                // jcr specific property pointing to the node this history belongs to        try {            properties.add(new DefaultDavProperty(JCR_VERSIONABLEUUID, ((VersionHistory)item).getVersionableUUID()));        } catch (RepositoryException e) {            log.error(e.getMessage());        }        // required root-version property for version-history resource        try {            String rootVersionHref = getLocatorFromItem(((VersionHistory)item).getRootVersion()).getHref(true);            properties.add(new HrefProperty(VersionHistoryResource.ROOT_VERSION, rootVersionHref, true));        } catch (RepositoryException e) {            log.error(e.getMessage());        }        // required, protected version-set property for version-history resource        try {            VersionIterator vIter = ((VersionHistory)item).getAllVersions();            addHrefProperty(VersionHistoryResource.VERSION_SET, vIter, true);        } catch (RepositoryException e) {            log.error(e.getMessage());        }    }}

⌨️ 快捷键说明

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