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);