/* * $Header: /Users/ak/temp/cvs2svn/webdav-servlet/src/main/java/net/sf/webdav/IWebdavStore.java,v 1.1 2008-08-05 07:38:42 bauhardt Exp $ * $Revision: 1.1 $ * $Date: 2008-08-05 07:38:42 $ * * ==================================================================== * * 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 com.ejie.x38.webdav; import java.io.InputStream; import java.security.Principal; import com.ejie.x38.webdav.exceptions.WebdavException; /** * Interface for simple implementation of any store for the WebdavServlet * <p> * based on the BasicWebdavStore from Oliver Zeigermann, that was part of the * Webdav Construcktion Kit from slide * */ public interface IWebdavStore { /** * Indicates that a new request or transaction with this store involved has * been started. The request will be terminated by either * {@link #commit(ITransaction transaction)} or * {@link #rollback(ITransaction transaction)}. If only non-read methods * have been called, the request will be terminated by a * {@link #commit(ITransaction transaction)}. This method will be * called by (@link WebdavStoreAdapter} at the beginning of each request. * * * @param principal * the principal that started this request or <code>null</code> if * there is non available * * @throws WebdavException */ ITransaction begin(Principal principal); /** * Checks if authentication information passed in is valid. If not throws an * exception. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction */ void checkAuthentication(ITransaction transaction); /** * Indicates that all changes done inside this request shall be made * permanent and any transactions, connections and other temporary resources * shall be terminated. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * * @throws WebdavException * if something goes wrong on the store level */ void commit(ITransaction transaction); /** * Indicates that all changes done inside this request shall be undone and * any transactions, connections and other temporary resources shall be * terminated. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * * @throws WebdavException * if something goes wrong on the store level */ void rollback(ITransaction transaction); /** * Creates a folder at the position specified by <code>folderUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param folderUri * URI of the folder * @throws WebdavException * if something goes wrong on the store level */ void createFolder(ITransaction transaction, String folderUri); /** * Creates a content resource at the position specified by * <code>resourceUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param resourceUri * URI of the content resource * @throws WebdavException * if something goes wrong on the store level */ void createResource(ITransaction transaction, String resourceUri); /** * Gets the content of the resource specified by <code>resourceUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param resourceUri * URI of the content resource * @return input stream you can read the content of the resource from * @throws WebdavException * if something goes wrong on the store level */ InputStream getResourceContent(ITransaction transaction, String resourceUri); /** * Sets / stores the content of the resource specified by * <code>resourceUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param resourceUri * URI of the resource where the content will be stored * @param content * input stream from which the content will be read from * @param contentType * content type of the resource or <code>null</code> if unknown * @param characterEncoding * character encoding of the resource or <code>null</code> if unknown * or not applicable * @return lenght of resource * @throws WebdavException * if something goes wrong on the store level */ long setResourceContent(ITransaction transaction, String resourceUri, InputStream content, String contentType, String characterEncoding); /** * Gets the names of the children of the folder specified by * <code>folderUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param folderUri * URI of the folder * @return a (possibly empty) list of children, or <code>null</code> if the * uri points to a file * @throws WebdavException * if something goes wrong on the store level */ String[] getChildrenNames(ITransaction transaction, String folderUri); /** * Gets the length of the content resource specified by * <code>resourceUri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param resourceUri * URI of the content resource * @return length of the resource in bytes, <code>-1</code> declares this * value as invalid and asks the adapter to try to set it from the * properties if possible * @throws WebdavException * if something goes wrong on the store level */ long getResourceLength(ITransaction transaction, String resourceUri); /** * Removes the object specified by <code>uri</code>. * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param uri * URI of the object, i.e. content resource or folder * @throws WebdavException * if something goes wrong on the store level */ void removeObject(ITransaction transaction, String uri); /** * Gets the storedObject specified by <code>uri</code> * * @param transaction * indicates that the method is within the scope of a WebDAV * transaction * @param uri * URI * @return StoredObject */ StoredObject getStoredObject(ITransaction transaction, String uri); }