/*
 * $Header$
 * $Revision: 208584 $
 * $Date: 2005-03-21 19:05:00 +0100 (lun., 21 mars 2005) $
 *
 * ====================================================================
 *
 * Copyright 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 org.apache.slide.webdav.event;

import java.util.EventListener;

import org.apache.slide.event.VetoException;

/**
 * Event listener that listens for WebDAV requests. There is an event for each
 * WebDAV method supported by Slide. 
 * 
 * <p>The events are called before the actual work is started. 
 * 
 * <p>The Event source is the corresponding WebDAV-method object
 * (e.g. {@link org.apache.slide.webdav.method.CopyMethod}for a COPY request).
 * There you can retrieve more infos about the current request, the
 * NamespaceAccessToken, the SlideToken etc.
 */
public interface WebdavListener extends EventListener {
    void get(WebdavEvent event) throws VetoException;

    void put(WebdavEvent event) throws VetoException;
    
    void putAfter(WebdavEvent event) throws VetoException;

    void propFind(WebdavEvent event) throws VetoException;

    void propPatch(WebdavEvent event) throws VetoException;

    void bind(WebdavEvent event) throws VetoException;

    void rebind(WebdavEvent event) throws VetoException;

    void unbind(WebdavEvent event) throws VetoException;

    void mkcol(WebdavEvent event) throws VetoException;
    
    void mkcolAfter(WebdavEvent event) throws VetoException;

    void copy(WebdavEvent event) throws VetoException;

    void move(WebdavEvent event) throws VetoException;

    void delete(WebdavEvent event) throws VetoException;

    void lock(WebdavEvent event) throws VetoException;

    void unlock(WebdavEvent event) throws VetoException;

    void acl(WebdavEvent event) throws VetoException;

    void report(WebdavEvent event) throws VetoException;

    void search(WebdavEvent event) throws VetoException;

    void versionControl(WebdavEvent event) throws VetoException;

    void options(WebdavEvent event) throws VetoException;

    void update(WebdavEvent event) throws VetoException;

    void checkin(WebdavEvent event) throws VetoException;

    void checkout(WebdavEvent event) throws VetoException;

    void uncheckout(WebdavEvent event) throws VetoException;

    void label(WebdavEvent event) throws VetoException;

    void mkworkspace(WebdavEvent event) throws VetoException;

    void subscribe(WebdavEvent event) throws VetoException;

    void unsubscribe(WebdavEvent event) throws VetoException;

    void poll(WebdavEvent event) throws VetoException;
}