You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by ra...@apache.org on 2010/11/22 23:05:28 UTC

svn commit: r1037906 - in /lenya/branches/BRANCH_2_0_X/src/modules/webdav: sitemap.xmap usecases/webdav/filePropfind.jx usecases/webdav/propfind.jx

Author: rainer
Date: Mon Nov 22 22:05:28 2010
New Revision: 1037906

URL: http://svn.apache.org/viewvc?rev=1037906&view=rev
Log:
More WebDAV fixes:
    Return correct MIME Type and file extension for opendocument.
    Reduce number of 500 Internal server errors.

Modified:
    lenya/branches/BRANCH_2_0_X/src/modules/webdav/sitemap.xmap
    lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/filePropfind.jx
    lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/propfind.jx

Modified: lenya/branches/BRANCH_2_0_X/src/modules/webdav/sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_0_X/src/modules/webdav/sitemap.xmap?rev=1037906&r1=1037905&r2=1037906&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_0_X/src/modules/webdav/sitemap.xmap (original)
+++ lenya/branches/BRANCH_2_0_X/src/modules/webdav/sitemap.xmap Mon Nov 22 22:05:28 2010
@@ -76,7 +76,7 @@
         <map:transform type="xslt" src="fallback://lenya/modules/webdav/xslt/NSclean.xsl"/>
         <map:select type="request-method">
           <map:when test="PROPFIND">
-            <map:transform src="cocoon:/limitResponse.xsl" />
+<!--            <map:transform src="cocoon:/limitResponse.xsl" />-->
             <map:serialize type="xml" status-code="207"/>
           </map:when>
           <map:otherwise>
@@ -173,15 +173,17 @@
       </map:match>
 
       <map:match pattern="PROPFIND/**.*">
+<!--
         <map:match pattern="PROPFIND/**_*.html">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.xml">
+          <map:act type="resource-exists" src="site://{page-envelope:publication-id}/authoring/{2}/{1}">
             <map:call function="filePropfind" >
               <map:parameter name="last-modified" value="{page-envelope:document-lastmodified}"/>
             </map:call>
           </map:act>
         </map:match>
+-->
         <map:match pattern="PROPFIND/**_*.*">
-          <map:act type="resource-exists" src="context://lenya/pubs/{page-envelope:publication-id}/content/authoring/{1}/index_{page-envelope:document-language}.{3}">
+          <map:act type="resource-exists" src="site://{page-envelope:publication-id}/authoring/{2}/{1}">
             <map:call function="filePropfind" >
               <map:parameter name="last-modified" value="{page-envelope:document-lastmodified}"/>
             </map:call>
@@ -189,7 +191,10 @@
         </map:match>
         <!-- does not exist -->
         <map:generate src="context://lenya/content/util/empty.xml"/>
-        <map:serialize status-code="404"/>
+        <map:transform src="fallback://lenya/xslt/exception/generic.xsl"/>
+        <map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl"/>
+        <map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
+        <map:serialize type="xhtml" status-code="404"/>
       </map:match>
  
       <map:match pattern="PROPFIND/**">        
@@ -275,18 +280,21 @@
                         
       <map:match pattern="LOCK/**">
         <map:select type="resource-exists">
-          <map:parameter name="prefix" value="lenya://"/>
-          <map:when test="lenya/pubs/{page-envelope:publication-id}/content/authoring/{page-envelope:document-path}">
+          <map:parameter name="prefix" value="site://"/>
+          <map:when test="{page-envelope:publication-id}/authoring/{page-envelope:document-language}{page-envelope:document-path}">
             <map:act type="reserved-checkout">
               <map:generate src="context://lenya/content/util/empty.xml"/>
               <map:serialize type="xml"  status-code="423"/>
             </map:act>
+           <map:act type="set-header">
+            <map:parameter name="Lock-Token" value="{page-envelope:document-uuid}"/>
             <map:generate type="file" src="cocoon:/request/generate"/>
             <map:transform type="xslt" src="fallback://lenya/modules/webdav/xslt/lock.xsl">
               <map:parameter name="userid" value="{access-control:user-id}"/>
               <map:parameter name="docid" value="{page-envelope:document-uuid}"/>
             </map:transform>
             <map:serialize type="xml" status-code="200" />
+            </map:act> 
           </map:when>
           <map:otherwise>
             <map:generate src="context://lenya/content/util/empty.xml"/>

Modified: lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/filePropfind.jx
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/filePropfind.jx?rev=1037906&r1=1037905&r2=1037906&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/filePropfind.jx (original)
+++ lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/filePropfind.jx Mon Nov 22 22:05:28 2010
@@ -6,11 +6,16 @@
   <jx:set var="checkedOut" value="${usecase.getParameter('rc')}"/>
   <jx:forEach var="doc" items="${usecase.getParameter('documents')}"
     varStatus="status">
-    <jx:if test="${doc.getId()}">
+    <jx:if test="${doc.getIdentifier()}">
     <jx:set var="fileExtension" value="${doc.getSourceExtension()}"/>
+    <jx:set var="resourceType" value="${doc.getResourceType().getName()}"/>
+    <jx:set var="mimeType" value="${doc.getMimeType()}"/>
     <jx:if test="${doc.getSourceExtension().equals('xml')}">
         <jx:set var="fileExtension" value="html"/>
     </jx:if>
+    <jx:if test="${doc.getResourceType().getName().equals('opendocument')}">
+        <jx:set var="fileExtension" value="odt"/>
+    </jx:if>
       <D:response>
         <D:href>${request.getContextPath()}/${doc.getPublication().getId()}/webdav${doc.getPath()}_${doc.getLanguage()}.${fileExtension}</D:href>
         <D:propstat>
@@ -18,7 +23,7 @@
             <D:displayname>${doc.getName()}_${doc.getLanguage()}.${fileExtension}</D:displayname>
             <D:getlastmodified>${dateFormat.format(doc.getLastModified())}</D:getlastmodified>
             <D:creationdate/>
-            <D:getcontenttype>application/xml</D:getcontenttype>
+            <D:getcontenttype>${mimeType}</D:getcontenttype>
             <D:getcontentlength>${doc.getFile().length()}</D:getcontentlength>
             <D:resourcetype/>
             <D:lockdiscovery>

Modified: lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/propfind.jx
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/propfind.jx?rev=1037906&r1=1037905&r2=1037906&view=diff
==============================================================================
--- lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/propfind.jx (original)
+++ lenya/branches/BRANCH_2_0_X/src/modules/webdav/usecases/webdav/propfind.jx Mon Nov 22 22:05:28 2010
@@ -56,9 +56,14 @@
       varStatus="status">
       <jx:if test="${doc.getIdentifier()}">
       <jx:set var="fileExtension" value="${doc.getSourceExtension()}"/>
+      <jx:set var="resourceType" value="${doc.getResourceType().getName()}"/>
+      <jx:set var="mimeType" value="${doc.getMimeType()}"/>
       <jx:if test="${doc.getSourceExtension().equals('xml')}">
           <jx:set var="fileExtension" value="html"/>
       </jx:if>
+      <jx:if test="${doc.getResourceType().getName().equals('opendocument')}">
+          <jx:set var="fileExtension" value="odt"/>
+      </jx:if>
        <!-- create a file for each document, the href is the path to the file and the 
         display name is what will appear in the webdav folder -->
         <D:response>
@@ -68,7 +73,7 @@
               <D:displayname>${doc.getName()}_${doc.getLanguage()}.${fileExtension}</D:displayname>
               <D:getlastmodified>${dateFormat.format(doc.getLastModified())}</D:getlastmodified>
               <D:creationdate/>
-              <D:getcontenttype>application/xml</D:getcontenttype>
+              <D:getcontenttype>${mimeType}</D:getcontenttype>
               <D:getcontentlength>${doc.getFile().length()}</D:getcontentlength>
               <D:resourcetype/>
               <D:lockdiscovery>



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org