gcasper     2003/08/20 11:57:22

  Modified:    src/blocks/webdav/samples/davmap sitemap.xmap
  Added:       src/blocks/webdav/samples/davmap webdav.js
  Log:
  Moved "request routing" to flowscript
  This further simplifies the sitemap (the flowscript is barely 4 lines) and
  hopefully flattens the way to using request factories
  
  Revision  Changes    Path
  1.4       +100 -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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sitemap.xmap      10 Aug 2003 07:52:42 -0000      1.3
  +++ sitemap.xmap      20 Aug 2003 18:57:21 -0000      1.4
  @@ -6,132 +6,14 @@
       <map:generator name="traverse" 
src="org.apache.cocoon.generation.TraversableGenerator"/>
     </map:generators>
     <map:selectors default="browser">
  -    <map:selector logger="sitemap.selector.method" name="request-method" 
src="org.apache.cocoon.selection.RequestMethodSelector"/>
       <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:resources>
  -
  -<map:resource name="GET">
  -  <map:match pattern="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="**">
  -    <map:generate src="{global:staging}{1}"/>
  -    <map:serialize type="xml"/>
  -  </map:match>
  -</map:resource>
  -
  -<map:resource name="OPTIONS">
  -  <map:match pattern="**">
  -    <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:resource>
  -
  -<map:resource name="PROPFIND">
  -  <map:match pattern="**/*.*">
  -    <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="**/">
  -    <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="**">
  -    <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:resource>
  -
  -<map:resource name="PUT">
  -  <map:match pattern="**/*.*">
  -    <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:resource>
  -
  -<map:resource name="DELETE">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="COPY">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="MOVE">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="PROPPATCH">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="LOCK">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="HEAD">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -<map:resource name="TRACE">
  -  <map:generate src="dummy.xml"/>
  -  <map:serialize type="xml"/>
  -</map:resource>
  -
  -</map:resources>
  +<map:flow language="javascript">
  +  <map:script src="webdav.js"/>
  +</map:flow>
   
   <map:pipelines>
     <map:component-configurations>
  @@ -143,19 +25,108 @@
   
     <map:pipeline>
       <map:match pattern="repo">
  -      <map:call resource="{request:method}"/>
  +      <map:call function="selectMethod">
  +        <map:parameter name="page" value="repo"/>
  +      </map:call>
       </map:match>
       <map:match pattern="repo/">
  -      <map:call resource="{request:method}"/>
  +      <map:call function="selectMethod">
  +        <map:parameter name="page" value="repo/"/>
  +      </map:call>
       </map:match>
  -    <map:match pattern="repo/**/*.*">
  -      <map:call resource="{request:method}"/>
  +    <map:match pattern="repo/**">
  +      <map:call function="selectMethod">
  +        <map:parameter name="page" value="repo/{1}"/>
  +      </map:call>
       </map:match>
  -    <map:match pattern="repo/**/">
  -      <map:call resource="{request:method}"/>
  +
  +    <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="repo/**">
  -      <map:call resource="{request:method}"/>
  +    <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>
  
  
  
  1.1                  cocoon-2.1/src/blocks/webdav/samples/davmap/webdav.js
  
  Index: webdav.js
  ===================================================================
  function selectMethod() {
      var page = cocoon.parameters["page"];
      var method = cocoon.request.getMethod();
      cocoon.sendPage(method+"/"+page, {});
  }
  
  
  

Reply via email to