Author: piergiorgio
Date: Tue Apr 10 19:33:33 2018
New Revision: 1828855

URL: http://svn.apache.org/viewvc?rev=1828855&view=rev
Log:
added some bugfixes to solve issues on a real CMIS server (Alfresco 5.2.2) 
(CONNECTORS-1356)

Modified:
    
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java

Modified: 
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java?rev=1828855&r1=1828854&r2=1828855&view=diff
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java
 (original)
+++ 
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java
 Tue Apr 10 19:33:33 2018
@@ -23,8 +23,10 @@ import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.io.UnsupportedEncodingException;
 import java.math.BigInteger;
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
@@ -36,7 +38,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.chemistry.opencmis.client.api.CmisObject;
 import org.apache.chemistry.opencmis.client.api.Document;
 import org.apache.chemistry.opencmis.client.api.Folder;
 import org.apache.chemistry.opencmis.client.api.ItemIterable;
@@ -63,6 +64,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.client.utils.URLEncodedUtils;
 import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
 import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
 import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
@@ -1063,10 +1065,19 @@ public class CmisOutputConnector extends
                return folder;
        }
        
+       
+       /**
+        * Encoding process to retrieve the contentPath parameter from the 
documentURI.
+        * The contentPath parameter can be passed from any repository 
connector that is currently supporting the content migration capability.
+        * @param documentURI
+        * @return contentPath
+        * @throws URISyntaxException
+        * @throws UnsupportedEncodingException
+        */
        private String getContentPath(String documentURI) throws 
URISyntaxException, UnsupportedEncodingException {
                String contentPath = StringUtils.EMPTY;
-               String encodedDocumentURI = URLEncoder.encode(documentURI, 
StandardCharsets.UTF_8.name());
-               List<NameValuePair> params = new 
URIBuilder(encodedDocumentURI).getQueryParams();
+               String documentURIWithFixedEncoding = 
StringUtils.replace(documentURI, " ", "%20");
+               List<NameValuePair> params = URLEncodedUtils.parse(new 
URI(documentURIWithFixedEncoding), StandardCharsets.UTF_8);
                Iterator<NameValuePair> paramsIterator = params.iterator();
                while (paramsIterator.hasNext()) {
                        NameValuePair param = (NameValuePair) 
paramsIterator.next();
@@ -1077,17 +1088,19 @@ public class CmisOutputConnector extends
                return contentPath;
        }
        
-       
        @Override
        public void removeDocument(String documentURI, String 
outputDescription, IOutputRemoveActivity activities)
            throws ManifoldCFException, ServiceInterruption {
                getSession();
                long startTime = System.currentTimeMillis();
                String result = StringUtils.EMPTY;
+               boolean isDropZoneFolder = isDropZoneFolder(cmisQuery);
                
                //append the prefix for the relative path in the target repo
                try {
-                       if(parentDropZoneFolder != null && 
StringUtils.isNotEmpty(documentURI)) {
+                       if(isDropZoneFolder 
+                                       && parentDropZoneFolder != null 
+                                       && StringUtils.isNotEmpty(documentURI)) 
{
                                String parentDropZonePath = 
parentDropZoneFolder.getPath();
                                
                                String contentPath = 
getContentPath(documentURI);


Reply via email to