[exo-jcr-commits] exo-jcr SVN: r3231 - in jcr/trunk/exo.jcr.component.webdav/src: test/java/org/exoplatform/services/jcr/webdav/command and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Oct 1 06:14:43 EDT 2010


Author: nzamosenchuk
Date: 2010-10-01 06:14:43 -0400 (Fri, 01 Oct 2010)
New Revision: 3231

Added:
   jcr/trunk/exo.jcr.component.webdav/src/test/resources/rh_nodetype.xml
   jcr/trunk/exo.jcr.component.webdav/src/test/resources/test.txt
Modified:
   jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/FileResource.java
   jcr/trunk/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java
Log:
EXOJCR-956 : Returning creation date if last modified date is missing.

Modified: jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/FileResource.java
===================================================================
--- jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/FileResource.java	2010-10-01 09:12:11 UTC (rev 3230)
+++ jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/FileResource.java	2010-10-01 10:14:43 UTC (rev 3231)
@@ -222,7 +222,15 @@
       }
       else if (name.equals(GETLASTMODIFIED))
       {
-         Calendar modified = contentNode().getProperty("jcr:lastModified").getDate();
+         Calendar modified;
+         try
+         {
+            modified = contentNode().getProperty("jcr:lastModified").getDate();
+         }
+         catch (PathNotFoundException e)
+         {
+            modified = node.getProperty("jcr:created").getDate();
+         }
          HierarchicalProperty lastModified = new HierarchicalProperty(name, modified, MODIFICATION_PATTERN);
          lastModified.setAttribute("b:dt", "dateTime.rfc1123");
          return lastModified;
@@ -268,7 +276,9 @@
             return lockDiscovery(token, owner, "86400");
          }
          else
+         {
             throw new PathNotFoundException();
+         }
       }
       else if (name.equals(ISVERSIONED))
       {

Modified: jcr/trunk/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java
===================================================================
--- jcr/trunk/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java	2010-10-01 09:12:11 UTC (rev 3230)
+++ jcr/trunk/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java	2010-10-01 10:14:43 UTC (rev 3231)
@@ -19,18 +19,28 @@
 package org.exoplatform.services.jcr.webdav.command;
 
 import org.exoplatform.common.http.HTTPStatus;
+import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager;
+import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
+import org.exoplatform.services.jcr.impl.core.version.VersionImpl;
 import org.exoplatform.services.jcr.webdav.BaseStandaloneTest;
 import org.exoplatform.services.jcr.webdav.WebDavConstants.WebDAVMethods;
 import org.exoplatform.services.jcr.webdav.utils.TestUtils;
+import org.exoplatform.services.rest.ext.provider.XSLTStreamingOutput;
 import org.exoplatform.services.rest.impl.ContainerResponse;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringWriter;
+import java.util.Calendar;
 
+import javax.jcr.Node;
+
 /**
  * Created by The eXo Platform SAS Author : Dmytro Katayev
  * work.visor.ck at gmail.com Aug 13, 2008
@@ -59,17 +69,61 @@
       StringWriter sw = new StringWriter();
       char[] buffer = new char[1024];
       for (int n; (n = r.read(buffer)) != -1;)
+      {
          sw.write(buffer, 0, n);
+      }
       String str = sw.toString();
       assertEquals(fileContent, str);
    }
-   
+
    public void testNotFoundGet() throws Exception
    {
       ContainerResponse response = service(WebDAVMethods.GET, getPathWS() + "/not-found" + path, "", null, null);
       assertEquals(HTTPStatus.NOT_FOUND, response.getStatus());
    }
 
+   /**
+    * Details can be found here: https://jira.jboss.org/browse/EXOJCR-956
+    * @throws Exception
+    */
+   public void testMissingJcrLastModifiedProperty() throws Exception
+   {
+      File file = new File("src/test/resources/rh_nodetype.xml");
+      assertTrue("src/test/resources/rh_nodetype.xml not found", file.exists());
+      FileInputStream fis = new FileInputStream(file);
+
+      session.getWorkspace().getNamespaceRegistry().registerNamespace("rh", "www.vn.vnn");
+      session.getWorkspace().getNodeTypesHolder().registerNodeTypes(fis, ExtendedNodeTypeManager.IGNORE_IF_EXISTS,
+         NodeTypeDataManager.TEXT_XML);
+
+      Node podcast = session.getRootNode().addNode("podcast", "rh:podcast");
+
+      Node nodeToAdd = podcast.addNode("rh:podcastFile", "nt:file");
+      Node contentNodeOfNodeToAdd = nodeToAdd.addNode("jcr:content", "nt:resource");
+      contentNodeOfNodeToAdd.setProperty("jcr:data", new FileInputStream("src/test/resources/test.txt"));
+      contentNodeOfNodeToAdd.setProperty("jcr:mimeType", "text/plain");
+      contentNodeOfNodeToAdd.setProperty("jcr:lastModified", Calendar.getInstance());
+      session.save();
+
+      podcast.addMixin("mix:versionable");
+      session.save();
+
+      VersionImpl v = (VersionImpl)podcast.checkin();
+      session.save();
+
+      podcast.checkout();
+      session.save();
+
+      String path =
+         getPathWS() + "/jcr:system/jcr:versionStorage/" + v.getContainingHistory().getIdentifier()
+            + "/1/jcr:frozenNode/rh:podcastFile";
+
+      ContainerResponse response = service(WebDAVMethods.GET, path, "", null, null);
+      assertEquals("Successful result expected (200), but actual is: " + response.getStatus(), 200, response
+         .getStatus());
+
+   }
+
    @Override
    protected String getRepositoryName()
    {

Added: jcr/trunk/exo.jcr.component.webdav/src/test/resources/rh_nodetype.xml
===================================================================
--- jcr/trunk/exo.jcr.component.webdav/src/test/resources/rh_nodetype.xml	                        (rev 0)
+++ jcr/trunk/exo.jcr.component.webdav/src/test/resources/rh_nodetype.xml	2010-10-01 10:14:43 UTC (rev 3231)
@@ -0,0 +1,52 @@
+<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.5" xmlns:mix="http://www.jcp.org/jcr/mix/1.5" xmlns:jcr="http://www.jcp.org/jcr/1.5" >
+<nodeType name="rh:podcast" isMixin="false" hasOrderableChildNodes="false" primaryItemName="" >
+<supertypes>
+<supertype>nt:base</supertype>
+</supertypes>
+<propertyDefinitions>
+<propertyDefinition name="jcr:primaryType" requiredType="Name" autoCreated="true" mandatory="true" onParentVersion="COMPUTE" protected="true" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:publishedDate" requiredType="Date" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:author" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="jcr:created" requiredType="Date" autoCreated="true" mandatory="false" onParentVersion="INITIALIZE" protected="true" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:length" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:keywords" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:link" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:description" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:explicit" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:title" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="jcr:mixinTypes" requiredType="Name" autoCreated="false" mandatory="false" onParentVersion="COMPUTE" protected="true" multiple="true" >
+<valueConstraints/>
+</propertyDefinition>
+<propertyDefinition name="exo:podcastCategory" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" >
+<valueConstraints/>
+</propertyDefinition>
+</propertyDefinitions>
+<childNodeDefinitions>
+<childNodeDefinition name="rh:podcastFile" defaultPrimaryType="nt:file" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" sameNameSiblings="false" >
+<requiredPrimaryTypes>
+<requiredPrimaryType>nt:file</requiredPrimaryType>
+</requiredPrimaryTypes>
+</childNodeDefinition>
+</childNodeDefinitions>
+</nodeType>
+</nodeTypes>
\ No newline at end of file


Property changes on: jcr/trunk/exo.jcr.component.webdav/src/test/resources/rh_nodetype.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: jcr/trunk/exo.jcr.component.webdav/src/test/resources/test.txt
===================================================================
--- jcr/trunk/exo.jcr.component.webdav/src/test/resources/test.txt	                        (rev 0)
+++ jcr/trunk/exo.jcr.component.webdav/src/test/resources/test.txt	2010-10-01 10:14:43 UTC (rev 3231)
@@ -0,0 +1,3 @@
+hello 
+its a little text file for server tests
+Here is all right, I suppose :^)
\ No newline at end of file


Property changes on: jcr/trunk/exo.jcr.component.webdav/src/test/resources/test.txt
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the exo-jcr-commits mailing list