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

📄 abstractwebdavservlet.java

📁 jsr170接口的java实现。是个apache的开源项目。
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                                 DavResource resource)            throws IOException, DavException {        if (!(resource instanceof ObservationResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        ((ObservationResource) resource).unsubscribe(request.getSubscriptionId());        response.setStatus(DavServletResponse.SC_NO_CONTENT);    }    /**     * The POLL method     *     * @param request     * @param response     * @param resource     * @throws IOException     * @throws DavException     */    protected void doPoll(WebdavRequest request,                          WebdavResponse response,                          DavResource resource)            throws IOException, DavException {        if (!(resource instanceof ObservationResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        EventDiscovery ed = ((ObservationResource) resource).poll(                request.getSubscriptionId(), request.getPollTimeout());        response.sendPollResponse(ed);    }    /**     * The VERSION-CONTROL method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doVersionControl(WebdavRequest request, WebdavResponse response,                                    DavResource resource)            throws DavException, IOException {        if (!(resource instanceof VersionableResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        ((VersionableResource) resource).addVersionControl();    }    /**     * The LABEL method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doLabel(WebdavRequest request, WebdavResponse response,                           DavResource resource)            throws DavException, IOException {        LabelInfo labelInfo = request.getLabelInfo();        if (resource instanceof VersionResource) {            ((VersionResource) resource).label(labelInfo);        } else if (resource instanceof VersionControlledResource) {            ((VersionControlledResource) resource).label(labelInfo);        } else {            // any other resource type that does not support a LABEL request            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);        }    }    /**     * The REPORT method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doReport(WebdavRequest request, WebdavResponse response,                            DavResource resource)            throws DavException, IOException {        ReportInfo info = request.getReportInfo();        Report report;        if (resource instanceof DeltaVResource) {            report = ((DeltaVResource) resource).getReport(info);        } else if (resource instanceof AclResource) {            report = ((AclResource) resource).getReport(info);        } else {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }                int statusCode = (report.isMultiStatusReport()) ? DavServletResponse.SC_MULTI_STATUS : DavServletResponse.SC_OK;        response.sendXmlResponse(report, statusCode);    }    /**     * The CHECKIN method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doCheckin(WebdavRequest request, WebdavResponse response,                             DavResource resource)            throws DavException, IOException {        if (!(resource instanceof VersionControlledResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        String versionHref = ((VersionControlledResource) resource).checkin();        response.setHeader(DeltaVConstants.HEADER_LOCATION, versionHref);        response.setStatus(DavServletResponse.SC_CREATED);    }    /**     * The CHECKOUT method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doCheckout(WebdavRequest request, WebdavResponse response,                              DavResource resource)            throws DavException, IOException {        if (!(resource instanceof VersionControlledResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        ((VersionControlledResource) resource).checkout();    }    /**     * The UNCHECKOUT method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doUncheckout(WebdavRequest request, WebdavResponse response,                                DavResource resource)            throws DavException, IOException {        if (!(resource instanceof VersionControlledResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        ((VersionControlledResource) resource).uncheckout();    }    /**     * The MERGE method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doMerge(WebdavRequest request, WebdavResponse response,                           DavResource resource) throws DavException, IOException {        if (!(resource instanceof VersionControlledResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        MergeInfo info = request.getMergeInfo();        MultiStatus ms = ((VersionControlledResource) resource).merge(info);        response.sendMultiStatus(ms);    }    /**     * The UPDATE method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doUpdate(WebdavRequest request, WebdavResponse response,                            DavResource resource) throws DavException, IOException {        if (!(resource instanceof VersionControlledResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        UpdateInfo info = request.getUpdateInfo();        MultiStatus ms = ((VersionControlledResource) resource).update(info);        response.sendMultiStatus(ms);    }    /**     * The MKWORKSPACE method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doMkWorkspace(WebdavRequest request, WebdavResponse response,                                 DavResource resource) throws DavException, IOException {        if (resource.exists()) {            log.warn("Cannot create a new workspace. Resource already exists.");            response.sendError(DavServletResponse.SC_FORBIDDEN);            return;        }        DavResource parentResource = resource.getCollection();        if (parentResource == null || !parentResource.exists() || !parentResource.isCollection()) {            // parent does not exist or is not a collection            response.sendError(DavServletResponse.SC_CONFLICT);            return;        }        if (!(parentResource instanceof DeltaVResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        ((DeltaVResource) parentResource).addWorkspace(resource);        response.setStatus(DavServletResponse.SC_CREATED);    }    /**     * The MKACTIVITY method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doMkActivity(WebdavRequest request, WebdavResponse response,                                DavResource resource) throws DavException, IOException {        if (resource.exists()) {            log.warn("Unable to create activity: A resource already exists at the request-URL " + request.getRequestURL());            response.sendError(DavServletResponse.SC_FORBIDDEN);            return;        }        DavResource parentResource = resource.getCollection();        if (parentResource == null || !parentResource.exists() || !parentResource.isCollection()) {            // parent does not exist or is not a collection            response.sendError(DavServletResponse.SC_CONFLICT);            return;        }        // TODO: improve. see http://issues.apache.org/jira/browse/JCR-394        if (parentResource.getComplianceClass().indexOf(DavCompliance.ACTIVITY) < 0) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        if (!(resource instanceof ActivityResource)) {            log.error("Unable to create activity: ActivityResource expected");            response.sendError(DavServletResponse.SC_INTERNAL_SERVER_ERROR);            return;        }        // try to add the new activity resource        parentResource.addMember(resource, getInputContext(request, request.getInputStream()));        // Note: mandatory cache control header has already been set upon response creation.        response.setStatus(DavServletResponse.SC_CREATED);    }    /**     * The BASELINECONTROL method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doBaselineControl(WebdavRequest request, WebdavResponse response,                                     DavResource resource)        throws DavException, IOException {        if (!resource.exists()) {            log.warn("Unable to add baseline control. Resource does not exist " + resource.getHref());            response.sendError(DavServletResponse.SC_NOT_FOUND);            return;        }        // TODO: improve. see http://issues.apache.org/jira/browse/JCR-394        if (!(resource instanceof VersionControlledResource) || !resource.isCollection()) {            log.warn("BaselineControl is not supported by resource " + resource.getHref());            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        // TODO : missing method on VersionControlledResource        throw new DavException(DavServletResponse.SC_NOT_IMPLEMENTED);        /*        ((VersionControlledResource) resource).addBaselineControl(request.getRequestDocument());        // Note: mandatory cache control header has already been set upon response creation.        response.setStatus(DavServletResponse.SC_OK);        */    }    /**     * The SEARCH method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doSearch(WebdavRequest request, WebdavResponse response,                            DavResource resource) throws DavException, IOException {        if (!(resource instanceof SearchResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        Document doc = request.getRequestDocument();        if (doc != null) {            SearchInfo sR = SearchInfo.createFromXml(doc.getDocumentElement());            response.sendMultiStatus(((SearchResource) resource).search(sR));        } else {            // request without request body is valid if requested resource            // is a 'query' resource.            response.sendMultiStatus(((SearchResource) resource).search(null));        }    }    /**     * The ACL method     *     * @param request     * @param response     * @param resource     * @throws DavException     * @throws IOException     */    protected void doAcl(WebdavRequest request, WebdavResponse response,                         DavResource resource) throws DavException, IOException {        if (!(resource instanceof AclResource)) {            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);            return;        }        Document doc = request.getRequestDocument();        if (doc == null) {            throw new DavException(DavServletResponse.SC_BAD_REQUEST, "ACL request requires a DAV:acl body.");        }        AclProperty acl = AclProperty.createFromXml(doc.getDocumentElement());        ((AclResource)resource).alterAcl(acl);    }    /**     * Return a new <code>InputContext</code> used for adding resource members     *     * @param request     * @param in     * @return     * @see #spoolResource(WebdavRequest, WebdavResponse, DavResource, boolean)     */    protected InputContext getInputContext(DavServletRequest request, InputStream in) {        return new InputContextImpl(request, in);    }    /**     * Return a new <code>OutputContext</code> used for spooling resource properties and     * the resource content     *     * @param response     * @param out     * @return     * @see #doPut(WebdavRequest, WebdavResponse, DavResource)     * @see #doPost(WebdavRequest, WebdavResponse, DavResource)     * @see #doMkCol(WebdavRequest, WebdavResponse, DavResource)     */    protected OutputContext getOutputContext(DavServletResponse response, OutputStream out) {        return new OutputContextImpl(response, out);    }}

⌨️ 快捷键说明

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