You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by un...@apache.org on 2003/10/30 15:38:47 UTC
cvs commit: cocoon-2.1/src/blocks/webdav/samples/davmap sitemap.xmap
unico 2003/10/30 06:38:47
Modified: src/blocks/webdav/samples/davmap sitemap.xmap
Log:
refactorings: simplify PROPFIND, implement PUT using pipeline "T-ing",
add directory browsing, add MKCOL method, add DELETE method
Revision Changes Path
1.5 +199 -129 cocoon-2.1/src/blocks/webdav/samples/davmap/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/webdav/samples/davmap/sitemap.xmap,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sitemap.xmap 20 Aug 2003 18:57:21 -0000 1.4
+++ sitemap.xmap 30 Oct 2003 14:38:46 -0000 1.5
@@ -1,134 +1,204 @@
<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
-<map:components>
- <map:generators default="file">
- <map:generator name="traverse" src="org.apache.cocoon.generation.TraversableGenerator"/>
- </map:generators>
- <map:selectors default="browser">
- <map:selector logger="sitemap.selector.header" name="depth" src="org.apache.cocoon.selection.HeaderSelector">
- <header-name>Depth</header-name>
- </map:selector>
- </map:selectors>
-</map:components>
-<map:flow language="javascript">
- <map:script src="webdav.js"/>
-</map:flow>
-
-<map:pipelines>
- <map:component-configurations>
- <global-variables>
- <staging></staging>
- <!--staging>webdav://localhost/webdav/davmap/</staging-->
- </global-variables>
- </map:component-configurations>
-
- <map:pipeline>
- <map:match pattern="repo">
- <map:call function="selectMethod">
- <map:parameter name="page" value="repo"/>
- </map:call>
- </map:match>
- <map:match pattern="repo/">
- <map:call function="selectMethod">
- <map:parameter name="page" value="repo/"/>
- </map:call>
- </map:match>
- <map:match pattern="repo/**">
- <map:call function="selectMethod">
- <map:parameter name="page" value="repo/{1}"/>
- </map:call>
- </map:match>
-
- <map:match pattern="GET/repo/">
- <map:generate type="traverse" src="{global:staging}repo/">
- <map:parameter name="depth" value="1"/>
- </map:generate>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="GET/**">
- <map:generate src="{global:staging}{1}"/>
- <map:serialize type="xml"/>
- </map:match>
-
- <map:match pattern="PROPFIND/**/*.*">
- <map:generate type="traverse" src="{global:staging}{1}/"/>
- <map:transform src="{global:staging}styles/file2propfind0.xsl">
- <map:parameter name="requestURI" value="{request:requestURI}"/>
- <map:parameter name="directory" value="{1}"/>
- <map:parameter name="file" value="{2}.{3}"/>
- </map:transform>
- <map:serialize type="xml" status-code="207"/>
- </map:match>
- <map:match pattern="PROPFIND/**">
- <map:generate type="traverse" src="{global:staging}{1}/"/>
- <map:select type="depth">
- <map:when test="0">
- <map:transform src="{global:staging}styles/dir2propfind0.xsl">
- <map:parameter name="requestURI" value="{request:requestURI}"/>
- </map:transform>
- </map:when>
- <map:otherwise>
- <map:transform src="{global:staging}styles/dir2propfind1.xsl">
- <map:parameter name="requestURI" value="{request:requestURI}"/>
- </map:transform>
- </map:otherwise>
- </map:select>
- <map:serialize type="xml" status-code="207"/>
- </map:match>
-
- <map:match pattern="PUT/**/*.*">
- <map:generate type="stream">
- <map:parameter name="defaultContentType" value="text/xml"/>
- </map:generate>
- <map:transform src="styles/stream2write.xsl">
- <map:parameter name="file" value="{global:staging}{1}/{2}.{3}"/>
- </map:transform>
- <map:transform type="write-source"/>
- <map:serialize/>
- </map:match>
-
- <map:match pattern="OPTIONS/**">
- <map:act type="set-header">
- <map:parameter name="DAV" value="DAV:1"/>
- <map:parameter name="Allow" value="OPTIONS, GET, HEAD, POST, DELETE,TRACE, PROPFIND, PROPPATCH, COPY, MOVE"/>
- </map:act>
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="DELETE/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="COPY/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="MOVE/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="PROPPATCH/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="LOCK/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="HEAD/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="TRACE/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- <map:match pattern="POST/**">
- <map:generate src="dummy.xml"/>
- <map:serialize type="xml"/>
- </map:match>
- </map:pipeline>
-</map:pipelines>
+<!-- =========================== Components ================================ -->
+
+ <map:components>
+ <map:generators default="file">
+ <map:generator
+ name="traverse"
+ src="org.apache.cocoon.generation.TraversableGenerator"
+ logger="generator.traverse"
+ label="content"
+ pool-min="2" pool-grow="2" pool-max="16"
+ />
+ <map:generator name="jx"
+ src="org.apache.cocoon.generation.JXTemplateGenerator"
+ logger="sitemap.generator.jx"
+ label="content"
+ pool-min="2" pool-grow="2" pool-max="16"
+ />
+ </map:generators>
+
+ <map:pipes default="caching">
+ <map:pipe
+ name="event-caching"
+ src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"
+ >
+ <!-- parameter name="outputBufferSize" value="8192"/ -->
+ <parameter name="cache-role" value="org.apache.cocoon.caching.Cache/EventAware"/>
+ </map:pipe>
+ </map:pipes>
+
+ </map:components>
+
+<!-- ========================== Flowscript ================================= -->
+
+ <map:flow language="javascript">
+ <map:script src="webdav.js"/>
+ </map:flow>
+
+<!-- =========================== Views ===================================== -->
+
+ <map:views>
+ <map:view name="content" from-label="content">
+ <map:serialize type="xml" />
+ </map:view>
+ </map:views>
+
+ <map:pipelines>
+
+ <map:component-configurations>
+ <global-variables>
+ <staging>./repo/</staging>
+ </global-variables>
+ </map:component-configurations>
+
+<!-- ========================= Private Resources =========================== -->
+
+ <map:pipeline type="noncaching" internal-only="true">
+
+ <!-- Read the request for binaries PUT -->
+ <!--
+ <map:match pattern="request/read">
+ <map:read type="request" />
+ </map:match>
+ -->
+
+ <map:match pattern="request/generate">
+ <map:generate type="stream" />
+ <map:serialize type="xml" />
+ </map:match>
+
+ <!--+
+ | If you need to check or change the XML that is being PUT
+ | you can do that here. This is the pipeline that will
+ | generate the input for the PUT method
+ + -->
+ <map:match pattern="request/PUT">
+ <map:generate type="stream" />
+ <map:serialize type="xml" />
+ </map:match>
+
+ <map:match pattern="status/*">
+ <map:generate type="jx" src="status.jx">
+ <map:parameter name="status" value="{1}" />
+ </map:generate>
+ <map:serialize type="xml" status-code="{1}" />
+ </map:match>
+
+ </map:pipeline>
+
+<!-- ========================= Public Resources =========================== -->
+
+ <map:pipeline type="caching">
+
+ <map:match pattern="repo">
+ <map:call function="selectMethod">
+ <map:parameter name="page" value=""/>
+ </map:call>
+ </map:match>
+ <map:match pattern="repo/**">
+ <map:call function="selectMethod">
+ <map:parameter name="page" value="{1}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="GET/**">
+ <map:match pattern="GET/**.*">
+ <map:generate src="{global:staging}{1}.{2}"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:generate type="traverse" src="{global:staging}{1}">
+ <map:parameter name="depth" value="1"/>
+ </map:generate>
+ <map:transform src="styles/collection2html.xsl">
+ <map:parameter name="requestURI" value="{request:requestURI}" />
+ </map:transform>
+ <map:serialize type="html"/>
+ </map:match>
+
+ <map:match pattern="PROPFIND/**">
+ <map:generate type="traverse" src="{global:staging}{1}">
+ <map:parameter name="depth" value="{request-header:depth}" />
+ </map:generate>
+ <map:transform src="styles/collection2propfind.xsl">
+ <map:parameter name="requestURI" value="{request:requestURI}" />
+ </map:transform>
+ <map:serialize type="xml" status-code="207" />
+ </map:match>
+
+ <map:match pattern="OPTIONS/**">
+ <map:act type="set-header">
+ <map:parameter name="DAV" value="DAV:1"/>
+ <map:parameter name="Allow"
+ value="OPTIONS, GET, HEAD, POST, DELETE,TRACE, PROPFIND, PROPPATCH, COPY, MOVE"/>
+ </map:act>
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match pattern="HEAD/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="TRACE/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="POST/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ </map:pipeline>
+
+ <map:pipeline type="noncaching">
+
+ <map:match pattern="PUT/**.*">
+ <map:call function="put">
+ <map:parameter name="src" value="cocoon:/request/PUT" />
+ <map:parameter name="dest" value="{global:staging}{1}.{2}" />
+ </map:call>
+ </map:match>
+
+ <map:match pattern="MKCOL/**">
+ <map:match pattern="MKCOL/**.*">
+ <map:call function="sendStatus">
+ <map:parameter name="status" value="409" />
+ <map:parameter name="message" value="Not valid collection name." />
+ </map:call>
+ </map:match>
+ <map:call function="mkcol">
+ <map:parameter name="location" value="{global:staging}{1}" />
+ </map:call>
+ </map:match>
+
+ <map:match pattern="DELETE/**">
+ <map:call function="remove">
+ <map:parameter name="location" value="{global:staging}{1}.{2}" />
+ </map:call>
+ </map:match>
+
+ <map:match pattern="COPY/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="MOVE/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="PROPPATCH/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="LOCK/**">
+ <map:generate src="dummy.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ </map:pipeline>
+
+ </map:pipelines>
</map:sitemap>