[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