com.ejie.x38.webdav.WebdavSpringServlet.java Source code

Java tutorial

Introduction

Here is the source code for com.ejie.x38.webdav.WebdavSpringServlet.java

Source

/*
 * Copyright 1999,2004 The Apache Software Foundation.
 * 
 * Licensed 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 com.ejie.x38.webdav;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

import javax.annotation.PostConstruct;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.HttpRequestHandler;

import com.ejie.x38.webdav.exceptions.WebdavException;
import com.ejie.x38.webdav.locking.IResourceLocks;

/**
 * Servlet which provides support for WebDAV level 2.
 * 
 * the original class is org.apache.catalina.servlets.WebdavServlet by Remy
 * Maucherat, which was heavily changed
 * 
 * @author Remy Maucherat
 */
public class WebdavSpringServlet implements HttpRequestHandler {

    private static org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(WebDavServletBean.class);

    private Boolean lazyFolderCreationOnPut;

    private String defaultIndexFile;

    private String insteadOf404;

    private Integer noContentLengthHeaders;

    private IWebdavStore webDavStore;

    private IResourceLocks resourceLocks;

    private HashMap<String, IMethodExecutor> _methodMap = new HashMap<String, IMethodExecutor>();

    protected static MessageDigest MD5_HELPER;

    @PostConstruct
    public void init() throws ServletException {

        try {
            MD5_HELPER = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalStateException();
        }

        if (this.noContentLengthHeaders == null) {
            this.noContentLengthHeaders = new Integer(0);
        }

        if (this.lazyFolderCreationOnPut == null) {
            this.lazyFolderCreationOnPut = Boolean.FALSE;
        }

        // Inicializacin del componente de locking
        if (this.resourceLocks == null) {
            LOG.error("No se ha configurado correctamente el gestor de locking de webDav");
            throw new WebdavException("No se ha configurado correctamente el gestor de locking de webDav");
        }

        WebDavServletHelper.registerWebDavMethods(webDavStore, _methodMap, defaultIndexFile, insteadOf404,
                resourceLocks, noContentLengthHeaders, lazyFolderCreationOnPut, null);

    }

    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        WebDavServletHelper.processWebDav(request, response, this.webDavStore, this._methodMap);
    }

    public void setLazyFolderCreationOnPut(Boolean lazyFolderCreationOnPut) {
        this.lazyFolderCreationOnPut = lazyFolderCreationOnPut;
    }

    public void setDefaultIndexFile(String defaultIndexFile) {
        this.defaultIndexFile = defaultIndexFile;
    }

    public void setInsteadOf404(String insteadOf404) {
        this.insteadOf404 = insteadOf404;
    }

    public void setNoContentLengthHeaders(Integer noContentLengthHeaders) {
        this.noContentLengthHeaders = noContentLengthHeaders;
    }

    public void setWebDavStore(IWebdavStore webDavStore) {
        this.webDavStore = webDavStore;
    }

    public void setResourceLocks(IResourceLocks resourceLocks) {
        this.resourceLocks = resourceLocks;
    }

}