/* * ==================================================================== * Copyright (c) 2004-2008 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.server.dav; import javax.servlet.http.HttpServletResponse; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNNodeKind; import org.tmatesoft.svn.core.internal.io.fs.FSFS; import org.tmatesoft.svn.core.internal.io.fs.FSRoot; import org.tmatesoft.svn.core.internal.util.SVNPathUtil; import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.util.SVNDebugLog; import org.tmatesoft.svn.util.SVNLogType; /** * @version 1.2.0 * @author TMate Software Ltd. */ public class DAVRegularResourceHelper extends DAVResourceHelper { protected void prepare(DAVResource resource) throws DAVException { if (!SVNRevision.isValidRevisionNumber(resource.getRevision())) { try { resource.setRevision(resource.getLatestRevision()); } catch (SVNException e) { throw DAVException.convertError(e.getErrorMessage(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Could not determine the proper revision to access", null); } } FSRoot root = resource.getRoot(); FSFS fsfs = resource.getFSFS(); if (root == null) { try { root = fsfs.createRevisionRoot(resource.getRevision()); } catch (SVNException svne) { throw DAVException.convertError(svne.getErrorMessage(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Could not open the root of the repository", null); } resource.setRoot(root); } SVNNodeKind kind = DAVServletUtil.checkPath(root, resource.getResourceURI().getPath()); SVNDebugLog.getDefaultLog().logFine(SVNLogType.DEFAULT, "resource path is " + resource.getResourceURI().getPath()); SVNDebugLog.getDefaultLog().logFine(SVNLogType.DEFAULT, "resource kind is " + kind); resource.setExists(kind != SVNNodeKind.NONE); resource.setCollection(kind == SVNNodeKind.DIR); } protected DAVResource getParentResource(DAVResource resource) throws DAVException { DAVResource parentResource = new DAVResource(); resource.copyTo(parentResource); DAVResourceURI parentResourceURI = parentResource.getResourceURI(); String uri = parentResourceURI.getURI(); String path = parentResourceURI.getPath(); parentResourceURI.setURI(SVNPathUtil.removeTail(uri)); parentResourceURI.setPath(SVNPathUtil.removeTail(path)); parentResource.setExists(true); parentResource.setCollection(true); parentResource.setVersioned(true); return parentResource; } }