[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