Package org.tmatesoft.svn.core.internal.server.dav

Examples of org.tmatesoft.svn.core.internal.server.dav.DAVResource


    protected DAVRequest getDAVRequest() {
        return getPropfindRequest();
    }

    public void execute() throws SVNException {
        DAVResource resource = getRequestedDAVResource(true, false);

        DAVResourceState resourceState = getResourceState(resource);
        if (resourceState == DAVResourceState.NULL) {
            //TODO: what body should we send?
            sendError(HttpServletResponse.SC_NOT_FOUND, null);
            return;
        }
       
        DAVDepth depth = getRequestDepth(DAVDepth.DEPTH_INFINITY);
        //TODO: check the depth is not less than 0; if it is, send BAD_REQUEST
       
        if (depth == DAVDepth.DEPTH_INFINITY && resource.isCollection()) {
            DAVConfig config = getConfig();
            if (!config.isAllowDepthInfinity()) {
                String message = "PROPFIND requests with a Depth of \"infinity\" are not allowed for " +
                    SVNEncodingUtil.xmlEncodeCDATA(getURI()) + ".";
                response(message, DAVServlet.getStatusLine(HttpServletResponse.SC_FORBIDDEN), HttpServletResponse.SC_FORBIDDEN);
View Full Code Here


    }

    public void execute() throws SVNException {
        myCommonReportHandler.checkSVNNamespace(null);

        DAVResource resource = getRequestedDAVResource(false, false);
        setDAVResource(resource);
       
        DAVGetLocationSegmentsRequest request = getLocationSegmentsRequest();
       
        String path = null;
        long startRev = -1;
        long endRev = -1;
        long pegRev = -1;

        DAVElementProperty rootElement = request.getRootElement();
        List children = rootElement.getChildren();
        for (Iterator iterator = children.iterator(); iterator.hasNext();) {
            DAVElementProperty childElement = (DAVElementProperty) iterator.next();
            DAVElement childElementName = childElement.getName();
            if (!DAVElement.SVN_NAMESPACE.equals(childElementName.getNamespace())) {
                continue;
            }
           
            if (childElementName == ScmDAVElement.PATH) {
                path = childElement.getFirstValue(false);
                DAVPathUtil.testCanonical(path);
                String resourcePath = resource.getResourceURI().getPath();
                path = SVNPathUtil.append(resourcePath, path);
            } else if (childElementName == ScmDAVElement.START_REVISION) {
                try {
                    startRev = Long.parseLong(childElement.getFirstValue(true));
                } catch (NumberFormatException nfe) {
View Full Code Here

    public DAVPutHandler(DAVRepositoryManager repositoryManager, HttpServletRequest request, HttpServletResponse response) {
        super(repositoryManager, request, response);
    }

    public void execute() throws SVNException {
        DAVResource resource = getRequestedDAVResource(false, false);
       
        if (resource.getType() != DAVResourceType.REGULAR && resource.getType() != DAVResourceType.WORKING) {
            String body = "Cannot create resource " + SVNEncodingUtil.xmlEncodeCDATA(getURI()) + " with PUT.";
            response(body, DAVServlet.getStatusLine(HttpServletResponse.SC_CONFLICT), HttpServletResponse.SC_CONFLICT);
            return;
        }
       
        if (resource.isCollection()) {
            response("Cannot PUT to a collection.", DAVServlet.getStatusLine(HttpServletResponse.SC_CONFLICT), HttpServletResponse.SC_CONFLICT);
            return;
        }
       
        DAVResourceState resourceState = getResourceState(resource);
        validateRequest(resource, DAVDepth.DEPTH_ZERO, resourceState == DAVResourceState.NULL ? DAV_VALIDATE_PARENT : DAV_VALIDATE_RESOURCE,
                null, null, null);
       
        DAVAutoVersionInfo avInfo = autoCheckOut(resource, false);
        int mode = DAV_MODE_WRITE_TRUNC;
        long[] range = parseRange();
        if (range != null) {
            mode = DAV_MODE_WRITE_SEEKABLE;
        }
       
        SVNDeltaReader deltaReader = null;
        DAVException error = null;
        try {
            deltaReader = openStream(resource, mode);
        } catch (DAVException dave) {
            error = new DAVException("Unable to PUT new contents for {0}.", new Object[] { SVNEncodingUtil.xmlEncodeCDATA(getURI()) },
                    HttpServletResponse.SC_FORBIDDEN, dave, 0);
        }

        if (error == null && range != null) {
            error = new DAVException("Resource body read/write cannot use ranges (at this time)", HttpServletResponse.SC_NOT_IMPLEMENTED, 0);
        }

        DAVException error2 = null;
        if (error == null) {
            String path = resource.getResourceURI().getPath();
            FSRoot root = resource.getRoot();
            FSFS fsfs = resource.getFSFS();
            FSTransactionInfo txn = resource.getTxnInfo();
            Collection lockTokens = resource.getLockTokens();
            String userName = resource.getUserName();
            FSCommitter committer = getCommitter(fsfs, root, txn, lockTokens, userName);
            ISVNDeltaConsumer deltaConsumer = getDeltaConsumer(root, committer, fsfs, userName, lockTokens);
            SVNDeltaGenerator deltaGenerator = new SVNDeltaGenerator();
            InputStream inputStream = null;
            try {
                inputStream = getRequestInputStream();
                byte[] buffer = new byte[2048];
                int readCount = -1;
                while ((readCount = inputStream.read(buffer)) != -1) {
                    if (readCount == 0) {
                        continue;
                    }
                    if (deltaReader != null) {
                        deltaReader.nextWindow(buffer, 0, readCount, path, deltaConsumer);
                    } else {
                        deltaGenerator.sendDelta(path, buffer, readCount, deltaConsumer);
                    }
                }
            } catch (IOException ioe) {
                error = new DAVException("An error occurred while reading the request body.", HttpServletResponse.SC_BAD_REQUEST, 0);
            } catch (SVNException svne) {
                error = DAVException.convertError(svne.getErrorMessage(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                        "could not write the file contents", null);
            } finally {
                SVNFileUtil.closeFile(inputStream);
                if (deltaReader != null) {
                    try {
                        deltaReader.reset(path, deltaConsumer);
                    } catch (SVNException svne) {
                        error2 = DAVException.convertError(svne.getErrorMessage(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                                "error finalizing applying windows", null);
                    }
                   
                    if (error2 != null && error == null) {
                        error = error2;
                    }
                    deltaConsumer.textDeltaEnd(path);
                }
            }
        }
       
        if (error == null) {
            resource.setExists(true);
        }

        try {
            autoCheckIn(resource, error != null, false, avInfo);
        } catch (DAVException dave) {
View Full Code Here

            sendError(HttpServletResponse.SC_BAD_REQUEST, "Unlock failed: Malformed Lock-Token header");
            return;
        }
       
        lockToken = lockToken.substring(0, lockToken.length() - 1);
        DAVResource resource = getRequestedDAVResource(false, false);
        DAVResourceState resourceState = getResourceState(resource);
        validateRequest(resource, DAVDepth.DEPTH_ZERO, resourceState == DAVResourceState.LOCK_NULL ?
                ServletDAVHandler.DAV_VALIDATE_PARENT : ServletDAVHandler.DAV_VALIDATE_RESOURCE, null, lockToken, null);
       
        unlock(resource, lockToken);
View Full Code Here

                }
            }
        }
      
        List lockTokens = getLockTokensList();
        DAVResource resource = getRepositoryManager().getRequestedDAVResource(isSVNClient, deltaBase, pathInfo, version, clientOptions,
                baseChecksum, resultChecksum, label, useCheckedIn, lockTokens, clientCapabilities);
       
        setDefaultResponseHeaders();
        setResponseContentType(DEFAULT_XML_CONTENT_TYPE);
        setResponseStatus(HttpServletResponse.SC_OK);
View Full Code Here

                exception = dave;
            }
        }
       
        if (exception == null && (flags & DAV_VALIDATE_PARENT) != 0) {
            DAVResource parentResource = null;
            try {
                parentResource = DAVResourceHelper.createParentResource(resource);
            } catch (DAVException dave) {
                exception = dave;
            }
           
            if (exception == null) {
                try {
                    validateHandler.validateResourceState(ifHeaders, parentResource, lockInfoProvider, lockScope, flags | DAV_VALIDATE_IS_PARENT);
                } catch (DAVException dave) {
                    exception = dave;
                }
               
                if (exception != null) {
                    String description = "A validation error has occurred on the parent resource, preventing the operation on the resource specified by the Request-URI.";
                    if (exception.getMessage() != null) {
                        description += " The error was: " + exception.getMessage();
                    }
                    response = new DAVResponse(description, parentResource.getResourceURI().getRequestURI(), response, null, exception.getResponseCode());
                    exception = null;
                }
            }
        }
       
View Full Code Here

            lockProvider = DAVLockInfoProvider.createLockInfoProvider(this, false);
        } catch (SVNException svne) {
            return HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
        }
       
        DAVResource lockResource = resource;
        if (lockToken != null) {
            try {
                lockResource = DAVResourceHelper.getDirectResource(lockProvider, lockToken, resource);
            } catch (DAVException dave) {
                return dave.getResponseCode();
View Full Code Here

            throw new DAVException("CHECKIN called on non-working resource.", null, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, null,
                    SVNLogType.NETWORK, Level.FINE, null, DAVXMLUtil.SVN_DAV_ERROR_TAG, DAVElement.SVN_DAV_ERROR_NAMESPACE,
                    SVNErrorCode.UNSUPPORTED_FEATURE.getCode(), null);
        }
       
        DAVResource versionResource = null;
        DAVResourceURI resourceURI = resource.getResourceURI();
        String sharedActivity = DAVServlet.getSharedActivity();
        if (sharedActivity != null && sharedActivity.equals(resource.getActivityID())) {
            String sharedTxnName = DAVServletUtil.getTxn(resource.getActivitiesDB(), sharedActivity);
            if (sharedTxnName == null) {
View Full Code Here

   
    protected DAVAutoVersionInfo autoCheckOut(DAVResource resource, boolean isParentOnly) throws DAVException {
        DAVAutoVersionInfo info = new DAVAutoVersionInfo();
        DAVLockInfoProvider[] lockProvider = new DAVLockInfoProvider[0];
        if (!resource.exists() || isParentOnly) {
            DAVResource parentResource = null;
            try {
                parentResource = DAVResourceHelper.createParentResource(resource);
            } catch (DAVException dave) {
                autoCheckIn(resource, true, false, info);
                throw dave;
            }
           
            if (parentResource == null || !parentResource.exists()) {
                autoCheckIn(resource, true, false, info);
                throw new DAVException("Missing one or more intermediate collections. Cannot create resource {0}.",
                        new Object[] { SVNEncodingUtil.xmlEncodeCDATA(resource.getResourceURI().getRequestURI()) },
                        HttpServletResponse.SC_CONFLICT, 0);
            }
           
            info.setParentResource(parentResource);
           
            if (parentResource.isVersioned() && !parentResource.isWorking()) {
                boolean checkOutParent = false;
                try {
                    checkOutParent = canAutoCheckOut(parentResource, lockProvider, parentResource.getAutoVersion());
                } catch (DAVException dave) {
                    autoCheckIn(resource, true, false, info);
                    throw dave;
                }
               
View Full Code Here

            throw new DAVException("Destination url starts with a wrong context", HttpServletResponse.SC_BAD_REQUEST, 0);
        }
       
        //TODO: cut away the servlet context part
        path = path.substring(resourceContext.length());
        DAVResource srcResource = getRequestedDAVResource(false, false, path);

        //NOTE: for now this all are no-ops, just commented them for a while
        //boolean noAutoMerge = rootElement.hasChild(DAVElement.NO_AUTO_MERGE);
        //boolean noCheckOut = rootElement.hasChild(DAVElement.NO_CHECKOUT);
        //DAVElementProperty propElement = rootElement.getChild(DAVElement.PROP);
       
        DAVResource resource = getRequestedDAVResource(false, false);
        if (!resource.exists()) {
            sendError(HttpServletResponse.SC_NOT_FOUND, null);
            return;
        }
       
        setResponseHeader(CACHE_CONTROL_HEADER, CACHE_CONTROL_VALUE);
View Full Code Here

TOP

Related Classes of org.tmatesoft.svn.core.internal.server.dav.DAVResource

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.