[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