[exo-jcr-commits] exo-jcr SVN: r266 - 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
Mon Oct 12 10:04:59 EDT 2009
Author: gavrikvetal
Date: 2009-10-12 10:04:58 -0400 (Mon, 12 Oct 2009)
New Revision: 266
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/PutCommand.java
Log:
EXOJCR-183 - full-text method SEARCH does not find out text file
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-12 09:53:21 UTC (rev 265)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavService.java 2009-10-12 14:04:58 UTC (rev 266)
@@ -18,14 +18,15 @@
*/
package org.exoplatform.services.jcr.webdav;
-import org.exoplatform.common.util.HierarchicalProperty;
-
import java.io.InputStream;
import java.util.List;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+import org.exoplatform.common.util.HierarchicalProperty;
+
/**
* Created by The eXo Platform SARL .<br/>
* JCR WebDAV entry point. Defines WebDav protocol methods: RFC-2518 HTTP
@@ -82,7 +83,7 @@
* @return the instance of javax.ws.rs.core.Response
*/
Response put(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String fileNodeTypeHeader,
- String contentNodeTypeHeader, List<String> mixinTypes, String mimeType, InputStream inputStream);
+ String contentNodeTypeHeader, List<String> mixinTypes, MediaType mediatype, InputStream inputStream);
/**
* @param repoName repository name
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-12 09:53:21 UTC (rev 265)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java 2009-10-12 14:04:58 UTC (rev 266)
@@ -18,6 +18,33 @@
*/
package org.exoplatform.services.jcr.webdav;
+import java.io.InputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.HEAD;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
import org.exoplatform.common.http.HTTPStatus;
import org.exoplatform.common.util.HierarchicalProperty;
import org.exoplatform.commons.utils.MimeTypeResolver;
@@ -68,34 +95,6 @@
import org.exoplatform.services.rest.ext.webdav.method.VERSIONCONTROL;
import org.exoplatform.services.rest.resource.ResourceContainer;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.nodetype.NoSuchNodeTypeException;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeManager;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HEAD;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
/**
* Created by The eXo Platform SARL .<br/>
*
@@ -897,7 +896,8 @@
@HeaderParam(ExtHttpHeaders.FILE_NODETYPE) String fileNodeTypeHeader,
@HeaderParam(ExtHttpHeaders.CONTENT_NODETYPE) String contentNodeTypeHeader,
@HeaderParam(ExtHttpHeaders.CONTENT_MIXINTYPES) List<String> mixinTypes,
- @HeaderParam(HttpHeaders.CONTENT_TYPE) String mimeType, InputStream inputStream)
+ @HeaderParam(ExtHttpHeaders.CONTENT_TYPE) MediaType mediatype,
+ InputStream inputStream)
{
if (log.isDebugEnabled())
@@ -909,6 +909,20 @@
try
{
+ String mimeType = null;
+ String encoding = null;
+
+ if (mediatype == null) {
+ MimeTypeResolver mimeTypeResolver = new MimeTypeResolver();
+ mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
+ mimeType = mimeTypeResolver.getMimeType(TextUtil.nameOnly(repoPath));
+ } 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);
@@ -923,15 +937,8 @@
NodeType nodeType = ntm.getNodeType(contentNodeType);
NodeTypeUtil.checkContentResourceType(nodeType);
- if (mimeType == null)
- {
- MimeTypeResolver mimeTypeResolver = new MimeTypeResolver();
- mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
- mimeType = mimeTypeResolver.getMimeType(TextUtil.nameOnly(repoPath));
- }
-
return new PutCommand(nullResourceLocks).put(session, path(repoPath), inputStream, fileNodeType,
- contentNodeType, NodeTypeUtil.getMixinTypes(mixinTypes), mimeType, updatePolicyType, tokens);
+ contentNodeType, NodeTypeUtil.getMixinTypes(mixinTypes), mimeType, encoding, updatePolicyType, tokens);
}
catch (NoSuchWorkspaceException exc)
Modified: jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PutCommand.java
===================================================================
--- jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PutCommand.java 2009-10-12 09:53:21 UTC (rev 265)
+++ jcr/trunk/component/webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/PutCommand.java 2009-10-12 14:04:58 UTC (rev 266)
@@ -18,10 +18,6 @@
*/
package org.exoplatform.services.jcr.webdav.command;
-import org.exoplatform.common.http.HTTPStatus;
-import org.exoplatform.services.jcr.webdav.lock.NullResourceLocksHolder;
-import org.exoplatform.services.jcr.webdav.util.TextUtil;
-
import java.io.InputStream;
import java.util.Calendar;
import java.util.List;
@@ -34,6 +30,10 @@
import javax.jcr.lock.LockException;
import javax.ws.rs.core.Response;
+import org.exoplatform.common.http.HTTPStatus;
+import org.exoplatform.services.jcr.webdav.lock.NullResourceLocksHolder;
+import org.exoplatform.services.jcr.webdav.util.TextUtil;
+
/**
* Created by The eXo Platform SAS Author : <a
* href="gavrikvetal at gmail.com">Vitaly Guly</a>.
@@ -74,7 +74,7 @@
* @return the instance of javax.ws.rs.core.Response
*/
public Response put(Session session, String path, InputStream inputStream, String fileNodeType,
- String contentNodeType, List<String> mixins, String mimeType, String updatePolicyType, List<String> tokens)
+ String contentNodeType, List<String> mixins, String mimeType, String encoding, String updatePolicyType, List<String> tokens)
{
try
@@ -96,7 +96,7 @@
node = session.getRootNode().addNode(TextUtil.relativizePath(path), fileNodeType);
node.addNode("jcr:content", contentNodeType);
- updateContent(node, inputStream, mimeType, mixins);
+ updateContent(node, inputStream, mimeType, encoding, mixins);
}
else
{
@@ -104,15 +104,15 @@
{
node = session.getRootNode().addNode(TextUtil.relativizePath(path), fileNodeType);
node.addNode("jcr:content", contentNodeType);
- updateContent(node, inputStream, mimeType, mixins);
+ updateContent(node, inputStream, mimeType, encoding, mixins);
}
else if ("create-version".equals(updatePolicyType))
{
- createVersion(node, inputStream, mimeType, mixins);
+ createVersion(node, inputStream, mimeType, encoding, mixins);
}
else
{
- updateContent(node, inputStream, mimeType, mixins);
+ updateContent(node, inputStream, mimeType, encoding, mixins);
}
}
@@ -146,7 +146,7 @@
* @param mixins list of mixins
* @throws RepositoryException {@link RepositoryException}
*/
- private void createVersion(Node fileNode, InputStream inputStream, String mimeType, List<String> mixins)
+ private void createVersion(Node fileNode, InputStream inputStream, String mimeType, String encoding, List<String> mixins)
throws RepositoryException
{
if (!fileNode.isNodeType("mix:versionable"))
@@ -166,7 +166,7 @@
fileNode.getSession().save();
}
- updateContent(fileNode, inputStream, mimeType, mixins);
+ updateContent(fileNode, inputStream, mimeType, encoding, mixins);
fileNode.getSession().save();
fileNode.checkin();
fileNode.getSession().save();
@@ -182,12 +182,15 @@
* @param mixins list of mixins
* @throws RepositoryException {@link RepositoryException}
*/
- private void updateContent(Node node, InputStream inputStream, String mimeType, List<String> mixins)
+ private void updateContent(Node node, InputStream inputStream, String mimeType, String encoding, List<String> mixins)
throws RepositoryException
{
Node content = node.getNode("jcr:content");
content.setProperty("jcr:mimeType", mimeType);
+ if (encoding != null) {
+ content.setProperty("jcr:encoding", encoding);
+ }
content.setProperty("jcr:lastModified", Calendar.getInstance());
content.setProperty("jcr:data", inputStream);
More information about the exo-jcr-commits
mailing list