costin 00/11/03 15:19:01 Modified: . build.xml src/webdav/org/apache/tomcat/webdav DefaultServlet.java WebdavServlet.java Added: src/webdav/webdav build.xml index.html tomcat-power.gif tomcat.gif src/webdav/webdav/WEB-INF web.xml Log: WebDav seems to work fine in DAVExplorer. Excelent code... The directory structure is a mess, I'll fix it later ( i.e. move all the sources in src/webdav/WEB-INF/src, make it a standalone webapplication). So far it seems to work with absolutely no dependency on tomcat - if someone has another container it would be nice to test it!!!! ( the .war will be available soon, need to fix the build ) Revision Changes Path 1.91 +10 -0 jakarta-tomcat/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat/build.xml,v retrieving revision 1.90 retrieving revision 1.91 diff -u -r1.90 -r1.91 --- build.xml 2000/11/03 21:27:31 1.90 +++ build.xml 2000/11/03 23:18:51 1.91 @@ -249,9 +249,14 @@ </classpath> <include name="org/apache/tomcat/webdav/**" /> </javac> + <copydir src="src/webdav/org/apache/tomcat" + dest="${tomcat.build}/classes/org/apache/tomcat"> + <include name="**/*.properties" /> + </copydir> <jar jarfile="${tomcat.build}/lib/webdav.jar" basedir="${tomcat.build}/classes" > <include name="org/apache/tomcat/webdav/**" /> + <include name="org/apache/tomcat/webdav/**/*.properties" /> </jar> </target> @@ -354,6 +359,11 @@ <javac srcdir="src/examples/jsp/plugin/applet" optimize="${optimize}" destdir="${tomcat.build}/webapps/examples/jsp/plugin/applet"/> + + <!-- webdav --> + <mkdir dir="${tomcat.build}/webapps/webdav"/> + <copydir src="src/webdav/webdav" dest="${tomcat.build}/webapps/webdav"/> + <!-- Tomcat profiling webapp - not ready for check in yet <mkdir dir="${tomcat.build}/webapps/prof"/> 1.2 +25 -10 jakarta-tomcat/src/webdav/org/apache/tomcat/webdav/DefaultServlet.java Index: DefaultServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/webdav/org/apache/tomcat/webdav/DefaultServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultServlet.java 2000/11/03 21:27:37 1.1 +++ DefaultServlet.java 2000/11/03 23:18:53 1.2 @@ -110,7 +110,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 1.1 $ $Date: 2000/11/03 21:27:37 $ + * @version $Revision: 1.2 $ $Date: 2000/11/03 23:18:53 $ */ public class DefaultServlet @@ -282,6 +282,27 @@ // ------------------------------------------------------ Protected Methods + protected Resources getResources(HttpServletRequest req) { + ServletContext sc=getServletContext(); + String docBase=sc.getRealPath(""); + // XXX call getAttribute() to get a container-specific + // docBase that may work for jar resources + FileResources res=(FileResources)sc. + getAttribute( "webdav.Resources" ); + if(res==null ) { + res=new FileResources(); + res.setDocBase( docBase ); + res.setContextPath(req.getContextPath() ); + System.out.println("Setting docBase to " + docBase ); + sc.setAttribute( "webdav.Resources", res ); + } + // XXX the expire must be integrated in a different way, + // we'll not start the expire thread right now. + + return res; + } + + /** * Return the relative path associated with this servlet. @@ -371,12 +392,6 @@ } - protected Resources getResources() { - // XXX get context resources - return null;//new Container( getServletContext() ); - } - - /** * Process a POST request for the specified resource. * @@ -402,7 +417,7 @@ resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); } - Resources resources = getResources(); + Resources resources = getResources(req); boolean exists = resources.exists(path); @@ -440,7 +455,7 @@ String path = getRelativePath(req); - Resources resources = getResources(); + Resources resources = getResources(req); boolean exists = resources.exists(path); @@ -1147,7 +1162,7 @@ return; } - Resources resources = getResources(); + Resources resources = getResources(request); ResourceInfo resourceInfo = new ResourceInfo(path, resources); if (!resourceInfo.exists) { 1.2 +7 -7 jakarta-tomcat/src/webdav/org/apache/tomcat/webdav/WebdavServlet.java Index: WebdavServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/webdav/org/apache/tomcat/webdav/WebdavServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- WebdavServlet.java 2000/11/03 21:27:37 1.1 +++ WebdavServlet.java 2000/11/03 23:18:54 1.2 @@ -115,7 +115,7 @@ * are handled by the DefaultServlet. * * @author Remy Maucherat - * @version $Revision: 1.1 $ $Date: 2000/11/03 21:27:37 $ + * @version $Revision: 1.2 $ $Date: 2000/11/03 23:18:54 $ */ public class WebdavServlet @@ -365,7 +365,7 @@ resp.addHeader("DAV", "1,2"); String methodsAllowed = null; - Resources resources = getResources(); + Resources resources = getResources(req); if (!resources.exists(path)) { methodsAllowed = "OPTIONS, MKCOL, PUT, LOCK"; @@ -478,7 +478,7 @@ } - Resources resources = getResources(); + Resources resources = getResources(req); if (!resources.exists(path)) { resp.sendError(HttpServletResponse.SC_NOT_FOUND, path); @@ -597,7 +597,7 @@ String path = getRelativePath(req); - Resources resources = getResources(); + Resources resources = getResources(req); // Can't create a collection if a resource already exists at the given // path @@ -914,7 +914,7 @@ lock.path = path; - Resources resources = getResources(); + Resources resources = getResources(req); Enumeration locksList = null; @@ -1414,7 +1414,7 @@ // Overwriting the destination - Resources resources = getResources(); + Resources resources = getResources(req); if (overwrite) { @@ -1548,7 +1548,7 @@ return false; } - Resources resources = getResources(); + Resources resources = getResources(req); if (!resources.exists(path)) { resp.sendError(WebdavStatus.SC_NOT_FOUND); 1.1 jakarta-tomcat/src/webdav/webdav/build.xml Index: build.xml =================================================================== <project name="webdav" default="build-main" basedir="."> <!-- ===================== Initialize Property Values =================== --> <property name="build.compiler" value="classic"/> <property name="build.dir" value="../../../build/webapps"/> <property name="dist.dir" value="../../../dist/webapps"/> <property name="servletapi.home" value="../../../jakarta-servletapi"/> <property name="webapp.name" value="webdav"/> <!-- ================== Derived Property Values ========================= --> <property name="servlet.jar" value="${servletapi.home}/lib/servlet.jar"/> <!-- =================== BUILD: Create Directories ====================== --> <target name="build-prepare"> <mkdir dir="${build.dir}"/> <mkdir dir="${build.dir}/${webapp.name}"/> </target> <!-- ================ BUILD: Copy Static Files ========================== --> <target name="build-static" depends="build-prepare"> <copydir src="." dest="${build.dir}/${webapp.name}" excludes="build.*"/> </target> <!-- ================= BUILD: Compile Server Components ================= --> <target name="build-main" depends="build-static"/> <!-- ==================== BUILD: Rebuild Everything ===================== --> <target name="all" depends="build-clean,build-main"/> <!-- ======================= BUILD: Clean Directory ===================== --> <target name="build-clean"> <deltree dir="${build.dir}/${webapp.name}"/> </target> <!-- ======================= DIST: Create Directories =================== --> <target name="dist-prepare"> <mkdir dir="${dist.dir}"/> </target> <!-- ======================= DIST: Create Distribution Files ============ --> <target name="dist" depends="build-main,dist-prepare"> <jar jarfile="${dist.dir}/${webapp.name}.war" basedir="${build.dir}/${webapp.name}" includes="**"/> </target> <!-- ======================= DIST: Clean Directory ====================== --> <target name="dist-clean"> <deltree dir="${dist.dir}/${webapp.name}"/> </target> <!-- ====================== Convenient Synonyms ========================= --> <target name="clean" depends="build-clean,dist-clean"/> </project> 1.1 jakarta-tomcat/src/webdav/webdav/index.html Index: index.html =================================================================== <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Mozilla/4.72 [en] (WinNT; U) [Netscape]"> <meta name="Author" content="Anil K. Vijendran"> <title>Tomcat v4.0 dev</title> </head> <body bgcolor="#FFFFFF"> <img SRC="tomcat.gif" height=92 width=130 align=LEFT><b><font face="Arial, Helvetica, sans-serif"><font size=+3>Tomcat</font></font></b> <br> <b><font face="Arial, Helvetica, sans-serif"><font size=-1>Version 4.0 dev</font></font></b> <p>This is the home page for the webdav context. This page is located at: <ul> <li> <font face="Courier New, Courier,mono">$TOMCAT_HOME/webapps/webdav/index.html</font></li> </ul> <p>Tomcat 4.0 includes built-in support for WebDAV level 2, which enables remote authoring of the website. You can test these capabilities using a WebDAV client like MS WebFolders (included with IE 4.0 and up), MS Office 2000, DAV Explorer (others are listed on the webpages linked below), and point to the <b>/webdav</b> path of the server. <p>This test context is DAV enabled, but has been set up in read-only mode for safety reasons. It can be put in read-write mode by editing the web application descriptor file (WEB-INF/web.xml). <p>Documentation on WebDAV:</p> <ul> <li><b><a href="http://www.webdav.org">General info on WebDAV</a></b></li> <li><b><a href="http://www.ics.uci.edu/pub/ietf/webdav/">WebDAV working group</a></b></li> <li><b><a href="http://www.webdav.org/projects/">WebDAV clients</a></b></li> </ul> <hr> <p align="right"><font size=-1><img src="tomcat-power.gif" width="77" height="80"></font><br> <font size=-1>Copyright © 1999-2000 Apache Software Foundation</font><br> <font size=-1>All Rights Reserved</font> <br> </p> <p align="right"> </p> </body> </html> 1.1 jakarta-tomcat/src/webdav/webdav/tomcat-power.gif <<Binary file>> 1.1 jakarta-tomcat/src/webdav/webdav/tomcat.gif <<Binary file>> 1.1 jakarta-tomcat/src/webdav/webdav/WEB-INF/web.xml Index: web.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <servlet> <servlet-name>webdav</servlet-name> <servlet-class>org.apache.tomcat.webdav.WebdavServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <!-- Uncomment this to enable read and write access --> <!-- <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> --> <!--load-on-startup>1</load-on-startup--> </servlet> <!-- The mapping for the webdav servlet --> <servlet-mapping> <servlet-name>webdav</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Establish the default MIME type mappings --> <mime-mapping> <extension>txt</extension> <mime-type>text/plain</mime-type> </mime-mapping> <mime-mapping> <extension>html</extension> <mime-type>text/html</mime-type> </mime-mapping> <mime-mapping> <extension>htm</extension> <mime-type>text/html</mime-type> </mime-mapping> <mime-mapping> <extension>gif</extension> <mime-type>image/gif</mime-type> </mime-mapping> <mime-mapping> <extension>jpg</extension> <mime-type>image/jpeg</mime-type> </mime-mapping> <mime-mapping> <extension>jpe</extension> <mime-type>image/jpeg</mime-type> </mime-mapping> <mime-mapping> <extension>jpeg</extension> <mime-type>image/jpeg</mime-type> </mime-mapping> <mime-mapping> <extension>java</extension> <mime-type>text/plain</mime-type> </mime-mapping> <mime-mapping> <extension>body</extension> <mime-type>text/html</mime-type> </mime-mapping> <mime-mapping> <extension>rtx</extension> <mime-type>text/richtext</mime-type> </mime-mapping> <mime-mapping> <extension>tsv</extension> <mime-type>text/tab-separated-values</mime-type> </mime-mapping> <mime-mapping> <extension>etx</extension> <mime-type>text/x-setext</mime-type> </mime-mapping> <mime-mapping> <extension>ps</extension> <mime-type>application/x-postscript</mime-type> </mime-mapping> <mime-mapping> <extension>class</extension> <mime-type>application/java</mime-type> </mime-mapping> <mime-mapping> <extension>csh</extension> <mime-type>application/x-csh</mime-type> </mime-mapping> <mime-mapping> <extension>sh</extension> <mime-type>application/x-sh</mime-type> </mime-mapping> <mime-mapping> <extension>tcl</extension> <mime-type>application/x-tcl</mime-type> </mime-mapping> <mime-mapping> <extension>tex</extension> <mime-type>application/x-tex</mime-type> </mime-mapping> <mime-mapping> <extension>texinfo</extension> <mime-type>application/x-texinfo</mime-type> </mime-mapping> <mime-mapping> <extension>texi</extension> <mime-type>application/x-texinfo</mime-type> </mime-mapping> <mime-mapping> <extension>t</extension> <mime-type>application/x-troff</mime-type> </mime-mapping> <mime-mapping> <extension>tr</extension> <mime-type>application/x-troff</mime-type> </mime-mapping> <mime-mapping> <extension>roff</extension> <mime-type>application/x-troff</mime-type> </mime-mapping> <mime-mapping> <extension>man</extension> <mime-type>application/x-troff-man</mime-type> </mime-mapping> <mime-mapping> <extension>me</extension> <mime-type>application/x-troff-me</mime-type> </mime-mapping> <mime-mapping> <extension>ms</extension> <mime-type>application/x-wais-source</mime-type> </mime-mapping> <mime-mapping> <extension>src</extension> <mime-type>application/x-wais-source</mime-type> </mime-mapping> <mime-mapping> <extension>zip</extension> <mime-type>application/zip</mime-type> </mime-mapping> <mime-mapping> <extension>bcpio</extension> <mime-type>application/x-bcpio</mime-type> </mime-mapping> <mime-mapping> <extension>cpio</extension> <mime-type>application/x-cpio</mime-type> </mime-mapping> <mime-mapping> <extension>gtar</extension> <mime-type>application/x-gtar</mime-type> </mime-mapping> <mime-mapping> <extension>shar</extension> <mime-type>application/x-shar</mime-type> </mime-mapping> <mime-mapping> <extension>sv4cpio</extension> <mime-type>application/x-sv4cpio</mime-type> </mime-mapping> <mime-mapping> <extension>sv4crc</extension> <mime-type>application/x-sv4crc</mime-type> </mime-mapping> <mime-mapping> <extension>tar</extension> <mime-type>application/x-tar</mime-type> </mime-mapping> <mime-mapping> <extension>ustar</extension> <mime-type>application/x-ustar</mime-type> </mime-mapping> <mime-mapping> <extension>dvi</extension> <mime-type>application/x-dvi</mime-type> </mime-mapping> <mime-mapping> <extension>hdf</extension> <mime-type>application/x-hdf</mime-type> </mime-mapping> <mime-mapping> <extension>latex</extension> <mime-type>application/x-latex</mime-type> </mime-mapping> <mime-mapping> <extension>bin</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>oda</extension> <mime-type>application/oda</mime-type> </mime-mapping> <mime-mapping> <extension>pdf</extension> <mime-type>application/pdf</mime-type> </mime-mapping> <mime-mapping> <extension>ps</extension> <mime-type>application/postscript</mime-type> </mime-mapping> <mime-mapping> <extension>eps</extension> <mime-type>application/postscript</mime-type> </mime-mapping> <mime-mapping> <extension>ai</extension> <mime-type>application/postscript</mime-type> </mime-mapping> <mime-mapping> <extension>rtf</extension> <mime-type>application/rtf</mime-type> </mime-mapping> <mime-mapping> <extension>nc</extension> <mime-type>application/x-netcdf</mime-type> </mime-mapping> <mime-mapping> <extension>cdf</extension> <mime-type>application/x-netcdf</mime-type> </mime-mapping> <mime-mapping> <extension>cer</extension> <mime-type>application/x-x509-ca-cert</mime-type> </mime-mapping> <mime-mapping> <extension>exe</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> <mime-mapping> <extension>gz</extension> <mime-type>application/x-gzip</mime-type> </mime-mapping> <mime-mapping> <extension>Z</extension> <mime-type>application/x-compress</mime-type> </mime-mapping> <mime-mapping> <extension>z</extension> <mime-type>application/x-compress</mime-type> </mime-mapping> <mime-mapping> <extension>hqx</extension> <mime-type>application/mac-binhex40</mime-type> </mime-mapping> <mime-mapping> <extension>mif</extension> <mime-type>application/x-mif</mime-type> </mime-mapping> <mime-mapping> <extension>ief</extension> <mime-type>image/ief</mime-type> </mime-mapping> <mime-mapping> <extension>tiff</extension> <mime-type>image/tiff</mime-type> </mime-mapping> <mime-mapping> <extension>tif</extension> <mime-type>image/tiff</mime-type> </mime-mapping> <mime-mapping> <extension>ras</extension> <mime-type>image/x-cmu-raster</mime-type> </mime-mapping> <mime-mapping> <extension>pnm</extension> <mime-type>image/x-portable-anymap</mime-type> </mime-mapping> <mime-mapping> <extension>pbm</extension> <mime-type>image/x-portable-bitmap</mime-type> </mime-mapping> <mime-mapping> <extension>pgm</extension> <mime-type>image/x-portable-graymap</mime-type> </mime-mapping> <mime-mapping> <extension>ppm</extension> <mime-type>image/x-portable-pixmap</mime-type> </mime-mapping> <mime-mapping> <extension>rgb</extension> <mime-type>image/x-rgb</mime-type> </mime-mapping> <mime-mapping> <extension>xbm</extension> <mime-type>image/x-xbitmap</mime-type> </mime-mapping> <mime-mapping> <extension>xpm</extension> <mime-type>image/x-xpixmap</mime-type> </mime-mapping> <mime-mapping> <extension>xwd</extension> <mime-type>image/x-xwindowdump</mime-type> </mime-mapping> <mime-mapping> <extension>au</extension> <mime-type>audio/basic</mime-type> </mime-mapping> <mime-mapping> <extension>snd</extension> <mime-type>audio/basic</mime-type> </mime-mapping> <mime-mapping> <extension>aif</extension> <mime-type>audio/x-aiff</mime-type> </mime-mapping> <mime-mapping> <extension>aiff</extension> <mime-type>audio/x-aiff</mime-type> </mime-mapping> <mime-mapping> <extension>aifc</extension> <mime-type>audio/x-aiff</mime-type> </mime-mapping> <mime-mapping> <extension>wav</extension> <mime-type>audio/x-wav</mime-type> </mime-mapping> <mime-mapping> <extension>mpeg</extension> <mime-type>video/mpeg</mime-type> </mime-mapping> <mime-mapping> <extension>mpg</extension> <mime-type>video/mpeg</mime-type> </mime-mapping> <mime-mapping> <extension>mpe</extension> <mime-type>video/mpeg</mime-type> </mime-mapping> <mime-mapping> <extension>qt</extension> <mime-type>video/quicktime</mime-type> </mime-mapping> <mime-mapping> <extension>mov</extension> <mime-type>video/quicktime</mime-type> </mime-mapping> <mime-mapping> <extension>avi</extension> <mime-type>video/x-msvideo</mime-type> </mime-mapping> <mime-mapping> <extension>movie</extension> <mime-type>video/x-sgi-movie</mime-type> </mime-mapping> <mime-mapping> <extension>avx</extension> <mime-type>video/x-rad-screenplay</mime-type> </mime-mapping> <mime-mapping> <extension>wrl</extension> <mime-type>x-world/x-vrml</mime-type> </mime-mapping> <mime-mapping> <extension>mpv2</extension> <mime-type>video/mpeg2</mime-type> </mime-mapping> <!-- Establish the default list of welcome files --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> <!-- ================ Security Constraints for Testing =============== --> <!-- <security-constraint> <web-resource-collection> <web-resource-name>The Entire Web Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>tomcat</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>Tomcat Supported Realm</realm-name> </login-config> <security-role> <description> An example role defined in "conf/tomcat-users.xml" </description> <role-name>tomcat</role-name> </security-role> --> </web-app> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]