[exo-jcr-commits] exo-jcr SVN: r357 - in jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav: command and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Oct 23 06:09:11 EDT 2009


Author: dkatayev
Date: 2009-10-23 06:09:11 -0400 (Fri, 23 Oct 2009)
New Revision: 357

Modified:
   jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavService.java
   jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
   jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java
Log:
[EXOJCR-178] if-modified-since header support added

Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavService.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavService.java	2009-10-23 10:08:28 UTC (rev 356)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavService.java	2009-10-23 10:09:11 UTC (rev 357)
@@ -49,10 +49,11 @@
     * @param repoPath path in repository
     * @param range Range HTTP header
     * @param version version name
+    * @param ifModifiedSince if-modified-since header
     * @param baseURI base URI info
     * @return the instance of javax.ws.rs.core.Response
     */
-   Response get(String repoName, String repoPath, String range, String version, UriInfo baseURI);
+   Response get(String repoName, String repoPath, String range, String ifModifiedSince, String version, UriInfo baseURI);
 
    /**
     * WedDAV "HEAD" method. see <a

Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java	2009-10-23 10:08:28 UTC (rev 356)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java	2009-10-23 10:09:11 UTC (rev 357)
@@ -125,7 +125,7 @@
     * Initialization initialization "update-policy"-parameter value.
     */
    public static final String INIT_PARAM_UPDATE_POLICY = "update-policy";
-   
+
    /**
     * Initialization "auto-version"-parameter value.
     */
@@ -170,7 +170,7 @@
     * Update policy.
     */
    private String updatePolicyType = "create-version";
-   
+
    /**
     * Auto-version default value.
     */
@@ -244,7 +244,7 @@
          updatePolicyType = pUpdatePolicy.getValue();
          log.info(INIT_PARAM_UPDATE_POLICY + " = " + updatePolicyType);
       }
-      
+
       ValueParam pAutoVersion = params.getValueParam(INIT_PARAM_AUTO_VERSION);
       if (pAutoVersion != null)
       {
@@ -456,7 +456,8 @@
    @GET
    @Path("/{repoName}/{repoPath:.*}/")
    public Response get(@PathParam("repoName") String repoName, @PathParam("repoPath") String repoPath,
-      @HeaderParam(ExtHttpHeaders.RANGE) String rangeHeader, @QueryParam("version") String version,
+      @HeaderParam(ExtHttpHeaders.RANGE) String rangeHeader,
+      @HeaderParam(ExtHttpHeaders.IF_MODIFIED_SINCE) String ifModifiedSince, @QueryParam("version") String version,
       @Context UriInfo uriInfo)
    {
 
@@ -515,7 +516,7 @@
          String uri =
             uriInfo.getBaseUriBuilder().path(getClass()).path(repoName).path(workspaceName(repoPath)).build()
                .toString();
-         return new GetCommand().get(session, path(repoPath), version, uri, ranges);
+         return new GetCommand().get(session, path(repoPath), version, uri, ranges, ifModifiedSince);
 
       }
       catch (PathNotFoundException exc)
@@ -913,8 +914,7 @@
       @HeaderParam(ExtHttpHeaders.FILE_NODETYPE) String fileNodeTypeHeader,
       @HeaderParam(ExtHttpHeaders.CONTENT_NODETYPE) String contentNodeTypeHeader,
       @HeaderParam(ExtHttpHeaders.CONTENT_MIXINTYPES) List<String> mixinTypes,
-      @HeaderParam(ExtHttpHeaders.CONTENT_TYPE) MediaType mediatype,
-      InputStream inputStream)
+      @HeaderParam(ExtHttpHeaders.CONTENT_TYPE) MediaType mediatype, InputStream inputStream)
    {
 
       if (log.isDebugEnabled())
@@ -928,18 +928,19 @@
       {
          String mimeType = null;
          String encoding = null;
-         
-         if (mediatype == null) {
+
+         if (mediatype == null)
+         {
             MimeTypeResolver mimeTypeResolver = new MimeTypeResolver();
             mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
             mimeType = mimeTypeResolver.getMimeType(TextUtil.nameOnly(repoPath));
-         } else {
+         }
+         else
+         {
             mimeType = mediatype.getType() + "/" + mediatype.getSubtype();
-            log.info(">>> MimeType: " + mimeType);
             encoding = mediatype.getParameters().get("charset");
-            log.info(">>> Charset: " + encoding);                        
          }
-         
+
          List<String> tokens = lockTokens(lockTokenHeader, ifHeader);
          Session session = session(repoName, workspaceName(repoPath), tokens);
 
@@ -955,7 +956,8 @@
          NodeTypeUtil.checkContentResourceType(nodeType);
 
          return new PutCommand(nullResourceLocks).put(session, path(repoPath), inputStream, fileNodeType,
-            contentNodeType, NodeTypeUtil.getMixinTypes(mixinTypes), mimeType, encoding, updatePolicyType, autoVersionType, tokens);
+            contentNodeType, NodeTypeUtil.getMixinTypes(mixinTypes), mimeType, encoding, updatePolicyType,
+            autoVersionType, tokens);
 
       }
       catch (NoSuchWorkspaceException exc)

Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java	2009-10-23 10:08:28 UTC (rev 356)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java	2009-10-23 10:09:11 UTC (rev 357)
@@ -78,7 +78,7 @@
     * @param ranges ranges
     * @return the instance of javax.ws.rs.core.Response
     */
-   public Response get(Session session, String path, String version, String baseURI, List<Range> ranges)
+   public Response get(Session session, String path, String version, String baseURI, List<Range> ranges, String ifModifiedSince)
    {
 
       if (version == null)
@@ -124,6 +124,10 @@
 
             FileResource fileResource = new FileResource(uri, node, nsContext);
             HierarchicalProperty lastModifiedProperty = fileResource.getProperty(FileResource.GETLASTMODIFIED);
+            
+            if((ifModifiedSince != null) && (ifModifiedSince.equals(lastModifiedProperty.getValue()))){
+               return Response.notModified().build();
+            }
 
             // content length is not present
             if (contentLength == 0)



More information about the exo-jcr-commits mailing list