// Path: src/main/java/net/sf/webdav/StoredObject.java
// public class StoredObject {
// 
//     private boolean isFolder;
//     private Date lastModified;
//     private Date creationDate;
//     private long contentLength;
//     private String  mimeType;
// 
//     private boolean isNullRessource;
// 
//     /**
//      * Determines whether the StoredObject is a folder or a resource
//      * 
//      * @return true if the StoredObject is a collection
//      */
//     public boolean isFolder() {
//         return (isFolder);
//     }
// 
//     /**
//      * Determines whether the StoredObject is a folder or a resource
//      * 
//      * @return true if the StoredObject is a resource
//      */
//     public boolean isResource() {
//         return (!isFolder);
//     }
// 
//     /**
//      * Sets a new StoredObject as a collection or resource
//      * 
//      * @param f
//      *      true - collection ; false - resource
//      */
//     public void setFolder(boolean f) {
//         this.isFolder = f;
//     }
// 
//     /**
//      * Gets the date of the last modification
//      * 
//      * @return last modification Date
//      */
//     public Date getLastModified() {
//         return (lastModified);
//     }
// 
//     /**
//      * Sets the date of the last modification
//      * 
//      * @param d
//      *      date of the last modification
//      */
//     public void setLastModified(Date d) {
//         this.lastModified = d;
//     }
// 
//     /**
//      * Gets the date of the creation
//      * 
//      * @return creation Date
//      */
//     public Date getCreationDate() {
//         return (creationDate);
//     }
// 
//     /**
//      * Sets the date of the creation
//      * 
//      * @param d
//      *      date of the creation
//      */
//     public void setCreationDate(Date c) {
//         this.creationDate = c;
//     }
// 
//     /**
//      * Gets the length of the resource content
//      * 
//      * @return length of the resource content
//      */
//     public long getResourceLength() {
//         return (contentLength);
//     }
// 
//     /**
//      * Sets the length of the resource content
//      * 
//      * @param l
//      *      the length of the resource content
//      */
//     public void setResourceLength(long l) {
//         this.contentLength = l;
//     }
// 
//     /**
//      * Gets the state of the resource
//      * 
//      * @return true if the resource is in lock-null state
//      */
//     public boolean isNullResource() {
//         return isNullRessource;
//     }
// 
//     /**
//      * Sets a StoredObject as a lock-null resource
//      * 
//      * @param f
//      *      true to set the resource as lock-null resource
//      */
//     public void setNullResource(boolean f) {
//         this.isNullRessource = f;
//         this.isFolder = false;
//         this.creationDate = null;
//         this.lastModified = null;
//         // this.content = null;
//         this.contentLength = 0;
//         this.mimeType= null;
//     }
// 
//     /**
//      * Retrieve the myme type from the store object.
//      * Can also return NULL if the store does not handle
//      * mime type stuff.
//      * In that case the mime type is determined by the servletcontext
//      *
//      * @return the mimeType
//      */
//     public String getMimeType() {
//         return mimeType;
//     }
// 
//     /**
//      * Set the mime type of this object
//      * 
//      * @param mimeType the mimeType to set
//      */
//     public void setMimeType(String mimeType) {
//         this.mimeType = mimeType;
//     }
// 
// }


import net.sf.webdav.StoredObject;
/*
 * 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 net.sf.webdav.methods;


public abstract class DeterminableMethod extends AbstractMethod {

    private static final String NULL_RESOURCE_METHODS_ALLOWED = "OPTIONS, MKCOL, PUT, PROPFIND, LOCK, UNLOCK";

    private static final String RESOURCE_METHODS_ALLOWED = "OPTIONS, GET, HEAD, POST, DELETE, TRACE"
            + ", PROPPATCH, COPY, MOVE, LOCK, UNLOCK, PROPFIND";

    private static final String FOLDER_METHOD_ALLOWED = ", PUT";

    private static final String LESS_ALLOWED_METHODS = "OPTIONS, MKCOL, PUT";

    /**
     * Determines the methods normally allowed for the resource.
     * 
     * @param so
     *      StoredObject representing the resource
     * @return all allowed methods, separated by commas
     */
// Path: src/main/java/net/sf/webdav/StoredObject.java
// public class StoredObject {
// 
//     private boolean isFolder;
//     private Date lastModified;
//     private Date creationDate;
//     private long contentLength;
//     private String  mimeType;
// 
//     private boolean isNullRessource;
// 
//     /**
//      * Determines whether the StoredObject is a folder or a resource
//      * 
//      * @return true if the StoredObject is a collection
//      */
//     public boolean isFolder() {
//         return (isFolder);
//     }
// 
//     /**
//      * Determines whether the StoredObject is a folder or a resource
//      * 
//      * @return true if the StoredObject is a resource
//      */
//     public boolean isResource() {
//         return (!isFolder);
//     }
// 
//     /**
//      * Sets a new StoredObject as a collection or resource
//      * 
//      * @param f
//      *      true - collection ; false - resource
//      */
//     public void setFolder(boolean f) {
//         this.isFolder = f;
//     }
// 
//     /**
//      * Gets the date of the last modification
//      * 
//      * @return last modification Date
//      */
//     public Date getLastModified() {
//         return (lastModified);
//     }
// 
//     /**
//      * Sets the date of the last modification
//      * 
//      * @param d
//      *      date of the last modification
//      */
//     public void setLastModified(Date d) {
//         this.lastModified = d;
//     }
// 
//     /**
//      * Gets the date of the creation
//      * 
//      * @return creation Date
//      */
//     public Date getCreationDate() {
//         return (creationDate);
//     }
// 
//     /**
//      * Sets the date of the creation
//      * 
//      * @param d
//      *      date of the creation
//      */
//     public void setCreationDate(Date c) {
//         this.creationDate = c;
//     }
// 
//     /**
//      * Gets the length of the resource content
//      * 
//      * @return length of the resource content
//      */
//     public long getResourceLength() {
//         return (contentLength);
//     }
// 
//     /**
//      * Sets the length of the resource content
//      * 
//      * @param l
//      *      the length of the resource content
//      */
//     public void setResourceLength(long l) {
//         this.contentLength = l;
//     }
// 
//     /**
//      * Gets the state of the resource
//      * 
//      * @return true if the resource is in lock-null state
//      */
//     public boolean isNullResource() {
//         return isNullRessource;
//     }
// 
//     /**
//      * Sets a StoredObject as a lock-null resource
//      * 
//      * @param f
//      *      true to set the resource as lock-null resource
//      */
//     public void setNullResource(boolean f) {
//         this.isNullRessource = f;
//         this.isFolder = false;
//         this.creationDate = null;
//         this.lastModified = null;
//         // this.content = null;
//         this.contentLength = 0;
//         this.mimeType= null;
//     }
// 
//     /**
//      * Retrieve the myme type from the store object.
//      * Can also return NULL if the store does not handle
//      * mime type stuff.
//      * In that case the mime type is determined by the servletcontext
//      *
//      * @return the mimeType
//      */
//     public String getMimeType() {
//         return mimeType;
//     }
// 
//     /**
//      * Set the mime type of this object
//      * 
//      * @param mimeType the mimeType to set
//      */
//     public void setMimeType(String mimeType) {
//         this.mimeType = mimeType;
//     }
// 
// }


// Path: src/main/java/net/sf/webdav/methods/DeterminableMethod.java
import net.sf.webdav.StoredObject;

/*
 * 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 net.sf.webdav.methods;


public abstract class DeterminableMethod extends AbstractMethod {

    private static final String NULL_RESOURCE_METHODS_ALLOWED = "OPTIONS, MKCOL, PUT, PROPFIND, LOCK, UNLOCK";

    private static final String RESOURCE_METHODS_ALLOWED = "OPTIONS, GET, HEAD, POST, DELETE, TRACE"
            + ", PROPPATCH, COPY, MOVE, LOCK, UNLOCK, PROPFIND";

    private static final String FOLDER_METHOD_ALLOWED = ", PUT";

    private static final String LESS_ALLOWED_METHODS = "OPTIONS, MKCOL, PUT";

    /**
     * Determines the methods normally allowed for the resource.
     * 
     * @param so
     *      StoredObject representing the resource
     * @return all allowed methods, separated by commas
     */
    protected static String determineMethodsAllowed(StoredObject so) {