/*
* ====================================================================
* 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.handlers;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.tmatesoft.svn.core.SVNErrorCode;
import org.tmatesoft.svn.core.SVNErrorMessage;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.internal.server.dav.DAVRepositoryManager;
import org.tmatesoft.svn.core.internal.wc.SVNErrorManager;
import org.tmatesoft.svn.util.SVNDebugLog;
import org.tmatesoft.svn.util.SVNLogType;
/**
* @author TMate Software Ltd.
* @version 1.2.0
*/
public class DAVHandlerFactory {
public static final String METHOD_PROPFIND = "PROPFIND";
public static final String METHOD_OPTIONS = "OPTIONS";
public static final String METHOD_REPORT = "REPORT";
public static final String METHOD_GET = "GET";
public static final String METHOD_HEAD = "HEAD";
public static final String METHOD_POST = "POST";
public static final String METHOD_DELETE = "DELETE";
public static final String METHOD_TRACE = "TRACE";
public static final String METHOD_PROPPATCH = "PROPPATCH";
public static final String METHOD_COPY = "COPY";
public static final String METHOD_MOVE = "MOVE";
public static final String METHOD_PUT = "PUT";
public static final String METHOD_LOCK = "LOCK";
public static final String METHOD_UNLOCK = "UNLOCK";
public static final String METHOD_MKCOL = "MKCOL";
public static final String METHOD_VERSION_CONTROL = "VERSION-CONTROL";
public static final String METHOD_MKWORKSPACE = "MKWORKSPACE";
public static final String METHOD_MKACTIVITY = "MKACTIVITY";
public static final String METHOD_CHECKIN = "CHECKIN";
public static final String METHOD_CHECKOUT = "CHECKOUT";
public static final String METHOD_MERGE = "MERGE";
public static ServletDAVHandler createHandler(DAVRepositoryManager manager, HttpServletRequest request, HttpServletResponse response) throws SVNException {
String methodName = request.getMethod();
if (METHOD_PROPFIND.equals(methodName)) {
return new DAVPropfindHandler(manager, request, response);
} else if (METHOD_OPTIONS.equals(methodName)) {
return new DAVOptionsHandler(manager, request, response);
} else if (METHOD_GET.equals(methodName)) {
return new DAVGetHandler(manager, request, response);
} else if (METHOD_REPORT.equals(methodName)) {
return new DAVReportHandler(manager, request, response);
} else if (METHOD_MKACTIVITY.equals(methodName)) {
return new DAVMakeActivityHandler(manager, request, response);
} else if (METHOD_CHECKOUT.equals(methodName)) {
return new DAVCheckOutHandler(manager, request, response);
} else if (METHOD_PUT.equals(methodName)) {
return new DAVPutHandler(manager, request, response);
} else if (METHOD_DELETE.equals(methodName)) {
return new DAVDeleteHandler(manager, request, response);
} else if (METHOD_COPY.equals(methodName)) {
return new DAVCopyMoveHandler(manager, request, response, false);
} else if (METHOD_MOVE.equals(methodName)) {
return new DAVCopyMoveHandler(manager, request, response, true);
} else if (METHOD_MKCOL.equals(methodName)) {
return new DAVMakeCollectionHandler(manager, request, response);
} else if (METHOD_PROPPATCH.equals(methodName)) {
return new DAVPropPatchHandler(manager, request, response);
} else if (METHOD_MERGE.equals(methodName)) {
return new DAVMergeHandler(manager, request, response);
} else if (METHOD_LOCK.equals(methodName)) {
return new DAVLockHandler(manager, request, response);
} else if (METHOD_UNLOCK.equals(methodName)) {
return new DAVUnlockHandler(manager, request, response);
}
SVNErrorManager.error(SVNErrorMessage.create(SVNErrorCode.RA_DAV_REQUEST_FAILED, "Unknown request method ''{0}''", request.getMethod()),
SVNLogType.NETWORK);
return null;
}
}