You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@locus.apache.org on 2000/11/04 00:19:03 UTC
cvs commit: jakarta-tomcat/src/webdav/webdav/WEB-INF web.xml
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>