📄 versionhistoryitemcollection.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 + -