You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by pi...@apache.org on 2017/09/10 18:39:07 UTC

svn commit: r1807957 - in /manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis: ./ connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/ connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/ connector/src/main/n...

Author: piergiorgio
Date: Sun Sep 10 18:39:07 2017
New Revision: 1807957

URL: http://svn.apache.org/viewvc?rev=1807957&view=rev
Log:
- added support for content migration functionality in the CMIS Repository Connector for using the content path as documentURI (CONNECTORS-1356)
- added support for recreating the same path tree for migrated content in the CMIS Output Connector (CONNECTORS-1356)
- initial implementation for solving the issue with the removeDocument: using the content path (CONNECTORS-1356)

Modified:
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/agents/output/cmisoutput/CmisOutputConnector.java
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisConfig.java
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnector.java
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnectorUtils.java
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_en_US.properties
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_es_ES.properties
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/editSpecification_CMISQuery.html
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/viewSpecification.html
    manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/pom.xml

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=1807957&r1=1807956&r2=1807957&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 Sun Sep 10 18:39:07 2017
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.math.BigInteger;
-import java.net.URISyntaxException;
 import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
 import java.util.Date;
@@ -55,8 +54,6 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
 import org.apache.commons.lang.StringUtils;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URIBuilder;
 import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
 import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
 import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
@@ -160,6 +157,11 @@ public class CmisOutputConnector extends
 
 	/** Document remove permanently rejected */
 	private final static String DOCUMENT_DELETION_STATUS_REJECTED = "Remove request rejected";
+	
+	/** The standard Path property for ManifoldCF used for migrate contents **/
+  private static final String CONTENT_MIGRATION_PATH_PROPERTY = "manifoldcf:path";
+
+  private static final char CMIS_PATH_SEP = '/';
 
 	/**
 	 * Constructor
@@ -876,21 +878,21 @@ public class CmisOutputConnector extends
 		return false;
 	}
 	
-	private String getObjectIdFromDocumentURI(String documentURI) throws URISyntaxException {
-		String objectId = StringUtils.EMPTY;
-		URIBuilder uriBuilder = new URIBuilder(documentURI);
-		List<NameValuePair> params = uriBuilder.getQueryParams();
-		Iterator<NameValuePair> iteratorParams = params.iterator();
-		while (iteratorParams.hasNext()) {
-			NameValuePair nameValuePair = (NameValuePair) iteratorParams.next();
-			String name = nameValuePair.getName();
-			if(StringUtils.equals(name, "id")
-					|| StringUtils.equals(name, PropertyIds.OBJECT_ID)) {
-				objectId = nameValuePair.getValue();
-			}
-		}
-		return objectId;
-	}
+//	private String getObjectIdFromDocumentURI(String documentURI) throws URISyntaxException {
+//		String objectId = StringUtils.EMPTY;
+//		URIBuilder uriBuilder = new URIBuilder(documentURI);
+//		List<NameValuePair> params = uriBuilder.getQueryParams();
+//		Iterator<NameValuePair> iteratorParams = params.iterator();
+//		while (iteratorParams.hasNext()) {
+//			NameValuePair nameValuePair = (NameValuePair) iteratorParams.next();
+//			String name = nameValuePair.getName();
+//			if(StringUtils.equals(name, "id")
+//					|| StringUtils.equals(name, PropertyIds.OBJECT_ID)) {
+//				objectId = nameValuePair.getValue();
+//			}
+//		}
+//		return objectId;
+//	}
 	
 
 	@Override
@@ -918,6 +920,13 @@ public class CmisOutputConnector extends
 				Long binaryLength = document.getBinaryLength();
 				String objectId = StringUtils.EMPTY;
 				
+				//check if the repository connector includes the content path
+				String primaryPath = StringUtils.EMPTY;
+				if(document.getField(CONTENT_MIGRATION_PATH_PROPERTY) != null) {
+					primaryPath = ((String[]) document.getField(CONTENT_MIGRATION_PATH_PROPERTY))[0];
+				}
+				
+				
 			  // properties
 				// (minimal set: name and object type id)
 				Map<String, Object> properties = new HashMap<String, Object>();
@@ -958,7 +967,7 @@ public class CmisOutputConnector extends
 				    inputStream);
 
 				// create a major version
-				leafParent = getOrCreateLeafParent(parentDropZoneFolder, creationDate, Boolean.valueOf(createTimestampTree));
+				leafParent = getOrCreateLeafParent(parentDropZoneFolder, creationDate, Boolean.valueOf(createTimestampTree), primaryPath);
 				injectedDocument = leafParent.createDocument(properties, contentStream, VersioningState.MAJOR);
 				resultDescription = DOCUMENT_STATUS_ACCEPTED_DESC;
 				return DOCUMENT_STATUS_ACCEPTED;
@@ -994,7 +1003,7 @@ public class CmisOutputConnector extends
 	 * @param createTimestampTree: this is the flag checked in the ManifoldCF configuration panel
 	 * @return the target folder created using the creationDate related to the injected content
 	 */
-	private Folder getOrCreateLeafParent(Folder folder, Date creationDate, boolean createTimestampTree) {
+	private Folder getOrCreateLeafParent(Folder folder, Date creationDate, boolean createTimestampTree, String primaryPath) {
 		Folder leafParent = folder;
 		if (createTimestampTree) {
 			GregorianCalendar calendar = new GregorianCalendar();
@@ -1009,6 +1018,15 @@ public class CmisOutputConnector extends
 			Folder dayFolder = createFolderIfNotExist(monthFolder, day);
 			
 			leafParent = dayFolder;
+			
+		} else if(StringUtils.isNotEmpty(primaryPath)) {
+			String[] primaryPathArray = StringUtils.split(primaryPath, CMIS_PATH_SEP);
+			leafParent = folder;
+			for (int i = 0; i < primaryPathArray.length - 1; i++) {
+				String pathSegment = primaryPathArray[i];
+				Folder pathSegmentFolder = createFolderIfNotExist(leafParent, pathSegment);
+				leafParent = pathSegmentFolder;
+			}
 		}
 		return leafParent;
 	}
@@ -1044,23 +1062,14 @@ public class CmisOutputConnector extends
 		getSession();
 		long startTime = System.currentTimeMillis();
 		String result = StringUtils.EMPTY;
-		String objectIdValue = StringUtils.EMPTY;
-		try {
-			objectIdValue = getObjectIdFromDocumentURI(documentURI);
-		} catch (URISyntaxException e) {
-			result = DOCUMENT_DELETION_STATUS_REJECTED;
-			throw new ManifoldCFException(e.getMessage(), e);
-		}
-		
-		ObjectId objectId = new ObjectIdImpl(objectIdValue);
 		try {
-			session.delete(objectId);
+			session.deleteByPath(documentURI);
 			result = DOCUMENT_DELETION_STATUS_ACCEPTED;
 		} catch (Exception e) {
 			result = DOCUMENT_DELETION_STATUS_REJECTED;
 			throw new ManifoldCFException(e.getMessage(), e);
 		} finally {
-			activities.recordActivity(startTime, ACTIVITY_DELETE, null, documentURI, objectId.toString(), result);
+			activities.recordActivity(startTime, ACTIVITY_DELETE, null, documentURI, null, result);
 		}
 	}
 

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisConfig.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisConfig.java?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisConfig.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisConfig.java Sun Sep 10 18:39:07 2017
@@ -52,6 +52,9 @@ public class CmisConfig {
   /** CMIS Query */
   public static final String CMIS_QUERY_PARAM = "cmisQuery";
   
+  /** Content Migration Flag */
+  public static final String CONTENT_MIGRATION_PARAM = "contentMigration";
+  
   //default values
   public static final String USERNAME_DEFAULT_VALUE = "dummyuser";
   public static final String PASSWORD_DEFAULT_VALUE = "dummysecrect";

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnector.java?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnector.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnector.java Sun Sep 10 18:39:07 2017
@@ -21,13 +21,9 @@ package org.apache.manifoldcf.crawler.co
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InterruptedIOException;
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.rmi.NotBoundException;
 import java.rmi.RemoteException;
-import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -37,7 +33,6 @@ import org.apache.chemistry.opencmis.cli
 import org.apache.chemistry.opencmis.client.api.Document;
 import org.apache.chemistry.opencmis.client.api.Folder;
 import org.apache.chemistry.opencmis.client.api.ItemIterable;
-import org.apache.chemistry.opencmis.client.api.Property;
 import org.apache.chemistry.opencmis.client.api.QueryResult;
 import org.apache.chemistry.opencmis.client.api.Repository;
 import org.apache.chemistry.opencmis.client.api.Session;
@@ -46,28 +41,25 @@ import org.apache.chemistry.opencmis.cli
 import org.apache.chemistry.opencmis.commons.PropertyIds;
 import org.apache.chemistry.opencmis.commons.SessionParameter;
 import org.apache.chemistry.opencmis.commons.enums.BindingType;
-import org.apache.chemistry.opencmis.commons.enums.PropertyType;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
-import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
-import org.apache.chemistry.opencmis.commons.impl.Constants;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
-
+import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
 import org.apache.commons.io.input.NullInputStream;
 import org.apache.commons.lang.StringUtils;
 import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
 import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
 import org.apache.manifoldcf.core.interfaces.ConfigParams;
-import org.apache.manifoldcf.core.interfaces.Specification;
 import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
 import org.apache.manifoldcf.core.interfaces.IPasswordMapperActivity;
 import org.apache.manifoldcf.core.interfaces.IPostParameters;
 import org.apache.manifoldcf.core.interfaces.IThreadContext;
 import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.core.interfaces.Specification;
 import org.apache.manifoldcf.core.interfaces.SpecificationNode;
 import org.apache.manifoldcf.crawler.connectors.BaseRepositoryConnector;
+import org.apache.manifoldcf.crawler.interfaces.IExistingVersions;
 import org.apache.manifoldcf.crawler.interfaces.IProcessActivity;
 import org.apache.manifoldcf.crawler.interfaces.ISeedingActivity;
-import org.apache.manifoldcf.crawler.interfaces.IExistingVersions;
 import org.apache.manifoldcf.crawler.system.Logging;
 
 /**
@@ -84,8 +76,6 @@ public class CmisRepositoryConnector ext
 
   private static final String CMIS_FOLDER_BASE_TYPE = "cmis:folder";
   private static final String CMIS_DOCUMENT_BASE_TYPE = "cmis:document";
-  private static final SimpleDateFormat ISO8601_DATE_FORMATTER = new SimpleDateFormat(
-      "yyyy-MM-dd'T'HH:mm:ssZ", Locale.ROOT);
 
   // Tab name properties
 
@@ -113,7 +103,6 @@ public class CmisRepositoryConnector ext
   /** Forward to the template to view the specification parameters for the job */
   private static final String VIEW_SPEC_FORWARD = "viewSpecification.html";
 
-
   /**
    * CMIS Session handle
    */
@@ -144,6 +133,10 @@ public class CmisRepositoryConnector ext
 
   protected static final long timeToRelease = 300000L;
   protected long lastSessionFetch = -1L;
+  
+  private boolean enableContentMigration = false;
+  
+  private static final char SLASH = '/';
 
   /**
    * Constructor
@@ -667,6 +660,9 @@ public class CmisRepositoryConnector ext
       SpecificationNode sn = spec.getChild(i);
       if (sn.getType().equals(JOB_STARTPOINT_NODE_TYPE)) {
         cmisQuery = sn.getAttributeValue(CmisConfig.CMIS_QUERY_PARAM);
+        if(StringUtils.isNotEmpty(sn.getAttributeValue(CmisConfig.CONTENT_MIGRATION_PARAM))){
+        	enableContentMigration = Boolean.valueOf(sn.getAttributeValue(CmisConfig.CONTENT_MIGRATION_PARAM));
+        }
         break;
       }
     }
@@ -676,18 +672,18 @@ public class CmisRepositoryConnector ext
       ItemIterable<CmisObject> cmisObjects = session.getRootFolder()
           .getChildren();
       for (CmisObject cmisObject : cmisObjects) {
-        activities.addSeedDocument(cmisObject.getId());
-      }
+          activities.addSeedDocument(cmisObject.getId());
+      	}
     } else {
       cmisQuery = CmisRepositoryConnectorUtils.getCmisQueryWithObjectId(cmisQuery);
       ItemIterable<QueryResult> results = session.query(cmisQuery, false).getPage(1000000000);
       for (QueryResult result : results) {
-        String id = result.getPropertyValueById(PropertyIds.OBJECT_ID);
-        activities.addSeedDocument(id);
-      }
+      		String id = result.getPropertyValueById(PropertyIds.OBJECT_ID);
+          activities.addSeedDocument(id);
+      	}
     }
 
-    return "";
+    return StringUtils.EMPTY;
   }
 
 
@@ -919,15 +915,19 @@ public class CmisRepositoryConnector ext
   private static void fillInCMISQuerySpecificationMap(Map<String,String> newMap, Specification ds)
   {
     int i = 0;
-    String cmisQuery = "";
+    String cmisQuery = StringUtils.EMPTY;
+    String contentMigration = StringUtils.EMPTY;
     while (i < ds.getChildCount()) {
       SpecificationNode sn = ds.getChild(i);
       if (sn.getType().equals(JOB_STARTPOINT_NODE_TYPE)) {
         cmisQuery = sn.getAttributeValue(CmisConfig.CMIS_QUERY_PARAM);
+        contentMigration = sn.getAttributeValue(CmisConfig.CONTENT_MIGRATION_PARAM);
       }
       i++;
     }
     newMap.put(CmisConfig.CMIS_QUERY_PARAM, cmisQuery);
+    newMap.put(CmisConfig.CONTENT_MIGRATION_PARAM, contentMigration);
+
   }
 
   /** View specification.
@@ -973,7 +973,8 @@ public class CmisRepositoryConnector ext
     String seqPrefix = "s"+connectionSequenceNumber+"_";
 
     String cmisQuery = variableContext.getParameter(seqPrefix + CmisConfig.CMIS_QUERY_PARAM);
-    if (cmisQuery != null) {
+    String contentMigration = variableContext.getParameter(seqPrefix + CmisConfig.CONTENT_MIGRATION_PARAM);
+    if (cmisQuery != null || contentMigration != null) {
       int i = 0;
       while (i < ds.getChildCount()) {
         SpecificationNode oldNode = ds.getChild(i);
@@ -983,9 +984,24 @@ public class CmisRepositoryConnector ext
         }
         i++;
       }
+  
       SpecificationNode node = new SpecificationNode(JOB_STARTPOINT_NODE_TYPE);
       node.setAttribute(CmisConfig.CMIS_QUERY_PARAM, cmisQuery);
       variableContext.setParameter(CmisConfig.CMIS_QUERY_PARAM, cmisQuery);
+      
+      //Content Migration
+      if(StringUtils.isEmpty(contentMigration)
+      		|| StringUtils.equalsIgnoreCase(contentMigration, Boolean.FALSE.toString()) ){
+      	contentMigration = Boolean.FALSE.toString();
+      	enableContentMigration = false;
+      } else {
+      	contentMigration = Boolean.TRUE.toString();
+      	enableContentMigration = true;
+      }
+
+      node.setAttribute(CmisConfig.CONTENT_MIGRATION_PARAM, contentMigration);
+      variableContext.setParameter(CmisConfig.CONTENT_MIGRATION_PARAM, contentMigration);
+      
       ds.addChild(ds.getChildCount(), node);
     }
     return null;
@@ -1093,7 +1109,6 @@ public class CmisRepositoryConnector ext
       }
 
       if (cmisObject == null) {
-        //System.out.println(" doesn't exist");
         activities.deleteDocument(documentIdentifier);
         continue;
       }
@@ -1119,8 +1134,8 @@ public class CmisRepositoryConnector ext
             long lmdSeconds = document.getLastModificationDate().getTimeInMillis();
             versionString = documentIdentifier + lmdSeconds + ":" + cmisQuery;
         } else {
-          //System.out.println(" is NOT latest vrersion");
-          activities.deleteDocument(documentIdentifier);
+          //System.out.println(" is NOT latest version");
+        	activities.deleteDocument(documentIdentifier);
           continue;
         }
       } else {
@@ -1159,41 +1174,51 @@ public class CmisRepositoryConnector ext
             String fileName = document.getContentStreamFileName();
             String mimeType = document.getContentStreamMimeType();
             //documentURI
-            String documentURI = CmisRepositoryConnectorUtils.getDocumentURL(document, session);
-
-            // Do any filtering (which will save us work)
-            if (!activities.checkURLIndexable(documentURI))
-            {
-              activities.noDocument(documentIdentifier,versionString);
-              errorCode = activities.EXCLUDED_URL;
-              errorDesc = "Excluding due to URL ('"+documentURI+"')";
-              continue;
-            }
-
-            if (!activities.checkMimeTypeIndexable(mimeType))
-            {
-              activities.noDocument(documentIdentifier,versionString);
-              errorCode = activities.EXCLUDED_MIMETYPE;
-              errorDesc = "Excluding due to mime type ("+mimeType+")";
-              continue;
+            String documentURI = StringUtils.EMPTY;
+            if(enableContentMigration) {
+            	String path = document.getPropertyValue(PropertyIds.PATH);
+            	String name = document.getName();
+            	String fullContentPath = path + SLASH + name;
+            	documentURI = fullContentPath;
+            } else {
+            	documentURI = CmisRepositoryConnectorUtils.getDocumentURL(document, session);
             }
 
-            if (!activities.checkLengthIndexable(fileLength))
-            {
-              activities.noDocument(documentIdentifier,versionString);
-              errorCode = activities.EXCLUDED_LENGTH;
-              errorDesc = "Excluding due to length ("+fileLength+")";
-              continue;
-            }
-
-            if (!activities.checkDateIndexable(modifiedDate))
-            {
-              activities.noDocument(documentIdentifier,versionString);
-              errorCode = activities.EXCLUDED_DATE;
-              errorDesc = "Excluding due to date ("+modifiedDate+")";
-              continue;
+            // Do any filtering (which will save us work)
+            if(!enableContentMigration) {
+	            if (!activities.checkURLIndexable(documentURI))
+	            {
+	              activities.noDocument(documentIdentifier,versionString);
+	              errorCode = IProcessActivity.EXCLUDED_URL;
+	              errorDesc = "Excluding due to URL ('"+documentURI+"')";
+	              continue;
+	            }
+	
+	            if (!activities.checkMimeTypeIndexable(mimeType))
+	            {
+	              activities.noDocument(documentIdentifier,versionString);
+	              errorCode = IProcessActivity.EXCLUDED_MIMETYPE;
+	              errorDesc = "Excluding due to mime type ("+mimeType+")";
+	              continue;
+	            }
+	
+	            if (!activities.checkLengthIndexable(fileLength))
+	            {
+	              activities.noDocument(documentIdentifier,versionString);
+	              errorCode = IProcessActivity.EXCLUDED_LENGTH;
+	              errorDesc = "Excluding due to length ("+fileLength+")";
+	              continue;
+	            }
+	
+	            if (!activities.checkDateIndexable(modifiedDate))
+	            {
+	              activities.noDocument(documentIdentifier,versionString);
+	              errorCode = IProcessActivity.EXCLUDED_DATE;
+	              errorDesc = "Excluding due to date ("+modifiedDate+")";
+	              continue;
+	            }
             }
-
+            
             RepositoryDocument rd = new RepositoryDocument();
             rd.setFileName(fileName);
             rd.setMimeType(mimeType);
@@ -1208,8 +1233,9 @@ public class CmisRepositoryConnector ext
                 is = null;
             } catch (CmisObjectNotFoundException e) {
               // Document gone
-              activities.deleteDocument(documentIdentifier);
+            	activities.deleteDocument(documentIdentifier);
               continue;
+
             }
 
             try {
@@ -1224,7 +1250,7 @@ public class CmisRepositoryConnector ext
               String modifiedQuery = CmisRepositoryConnectorUtils.getCmisQueryWithObjectId(cmisQuery);
 
               //filter the fields selected in the query
-              CmisRepositoryConnectorUtils.addValuesOfProperties(cmisObject.getProperties(), rd, modifiedQuery);
+              CmisRepositoryConnectorUtils.addValuesOfProperties(document, rd, modifiedQuery);
               //ingestion
 
               try {

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnectorUtils.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnectorUtils.java?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnectorUtils.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/cmis/CmisRepositoryConnectorUtils.java Sun Sep 10 18:39:07 2017
@@ -55,6 +55,9 @@ public class CmisRepositoryConnectorUtil
     private static final String SELECT_CLAUSE_TERM_SEP = ",";
     private static final String SELECT_PREFIX = "select ";
     private final static String TOKENIZER_SEP = ",\n\t";
+    
+    /** The standard Path property for ManifoldCF used for migrate contents **/
+    private static final String CONTENT_MIGRATION_PATH_PROPERTY = "manifoldcf:path";
 
     public static final String getDocumentURL(final Document document, final Session session)
             throws ManifoldCFException {
@@ -168,7 +171,18 @@ public class CmisRepositoryConnectorUtil
      * @param rd : object that contains the properties to pass to connector
      * @param cmisQuery : cmis query
      */
-    public static void addValuesOfProperties(final List<Property<?>> props, RepositoryDocument rd, String cmisQuery) {
+    public static void addValuesOfProperties(Document document, RepositoryDocument rd, String cmisQuery) {
+    		String primaryPath = StringUtils.EMPTY;
+    		if(document.getPaths() != null) {
+    			primaryPath = document.getPaths().get(0);
+    			try {
+						rd.addField(CONTENT_MIGRATION_PATH_PROPERTY, primaryPath);
+					} catch (ManifoldCFException e) {
+            Logging.connectors.error("Error when adding property[" + CONTENT_MIGRATION_PATH_PROPERTY + "] msg=[" + e.getMessage() + "]", e);
+					}
+    		}
+    		
+    		List<Property<?>> props = document.getProperties();
         Map<String, String> cmisQueryColumns = CmisRepositoryConnectorUtils.getSelectMap(cmisQuery);
         boolean isWildcardQuery = CmisRepositoryConnectorUtils.isWildcardQuery(cmisQuery);
         addValuesOfProperty(props, isWildcardQuery, cmisQueryColumns, rd);

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_en_US.properties
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_en_US.properties?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_en_US.properties (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_en_US.properties Sun Sep 10 18:39:07 2017
@@ -15,7 +15,7 @@
 
 CmisAuthorityConnector.Endpoint=Endpoint:
 CmisAuthorityConnector.RepositoryID=Repository ID:
-CmisAuthorityConnector.UserMapping=User mapping:
+CmisAuthorityConnector.UserMapping=User Mapping
 CmisAuthorityConnector.TheEndpointMustBeNotNull=The endpoint must be not null
 CmisAuthorityConnector.Parameters=Parameters:
 
@@ -41,8 +41,11 @@ CmisRepositoryConnector.TheServerPortMus
 CmisRepositoryConnector.PathMustNotBeNull=Path must be not null
 
 CmisRepositoryConnector.CMISQuery=CMIS Query
+CmisRepositoryConnector.ContentMigration=Enable Content Migration
 
 CmisRepositoryConnector.CMISQueryColon=CMIS Query:
+CmisRepositoryConnector.ContentMigrationColon=Enable Content Migration:
+
 
 CmisRepositoryConnector.ParametersColon=Parameters:
 CmisRepositoryConnector.UsernameEquals=username=
@@ -55,5 +58,4 @@ CmisRepositoryConnector.PathEquals=path=
 CmisRepositoryConnector.RepositoryIdEquals=repositoryId=
 
 CmisAuthorityConnector.Repository=Repository
-CmisAuthorityConnector.UserMapping=User Mapping
 

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_es_ES.properties
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_es_ES.properties?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_es_ES.properties (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/cmis/common_es_ES.properties Sun Sep 10 18:39:07 2017
@@ -16,7 +16,7 @@
 
 CmisAuthorityConnector.Endpoint=Punto final:
 CmisAuthorityConnector.RepositoryID=Identificaciòn de Depósito:
-CmisAuthorityConnector.UserMapping=Trazar un mapa de usuario:
+CmisAuthorityConnector.UserMapping=Trazar un mapa de usuario
 CmisAuthorityConnector.TheEndpointMustBeNotNull=El punto final no debe ser nulo
 CmisAuthorityConnector.Parameters=Parámetros:
 
@@ -42,8 +42,11 @@ CmisRepositoryConnector.TheServerPortMus
 CmisRepositoryConnector.PathMustNotBeNull=El camino debe ser no nulo
 
 CmisRepositoryConnector.CMISQuery=CMIS consulta
+CmisRepositoryConnector.ContentMigration=Habilitar la migración de contenido
 
 CmisRepositoryConnector.CMISQueryColon=CMIS consulta:
+CmisRepositoryConnector.ContentMigrationColon=Habilitar la migración de contenido:
+
 
 CmisRepositoryConnector.ParametersColon=Parámetros:
 CmisRepositoryConnector.UsernameEquals=nombre de usuario=
@@ -56,5 +59,4 @@ CmisRepositoryConnector.PathEquals=camin
 CmisRepositoryConnector.RepositoryIdEquals=Identificaciòn de Depósito=
 
 CmisAuthorityConnector.Repository=Depósito
-CmisAuthorityConnector.UserMapping=Trazar un mapa de usuario
 

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/editSpecification_CMISQuery.html
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/editSpecification_CMISQuery.html?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/editSpecification_CMISQuery.html (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/editSpecification_CMISQuery.html Sun Sep 10 18:39:07 2017
@@ -35,10 +35,28 @@
       </nobr>
     </td>
   </tr>
+  <tr>
+    <td class="description">
+      <nobr>
+        $Encoder.bodyEscape($ResourceBundle.getString('CmisRepositoryConnector.ContentMigrationColon'))
+      </nobr>
+    </td>
+    <td class="value">
+      <nobr>
+        <input type="checkbox" 
+               name="s${SEQNUM}_contentMigration" 
+               value="true" 
+               #if($CONTENTMIGRATION==true) checked 
+               #end
+               />
+      </nobr>
+    </td>
+  </tr>
 </table>
 
 #else
 
 <input type="hidden" name="s${SEQNUM}_cmisQuery" value="$Encoder.attributeEscape($CMISQUERY)" />
+<input type="hidden" name="s${SEQNUM}_contentMigration" value="$CONTENTMIGRATION" />
 
 #end

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/viewSpecification.html
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/viewSpecification.html?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/viewSpecification.html (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/cmis/viewSpecification.html Sun Sep 10 18:39:07 2017
@@ -26,4 +26,14 @@
       $Encoder.bodyEscape($CMISQUERY)
     </td>
   </tr>
+  <tr>
+    <td class="description">
+      <nobr>
+        $Encoder.bodyEscape($ResourceBundle.getString('CmisRepositoryConnector.ContentMigrationColon'))
+      </nobr>
+    </td>
+    <td class="value">
+      $CONTENTMIGRATION
+    </td>
+  </tr>
 </table>

Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/pom.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/pom.xml?rev=1807957&r1=1807956&r2=1807957&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/pom.xml (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/pom.xml Sun Sep 10 18:39:07 2017
@@ -131,7 +131,7 @@
                 <artifactItem>
                   <groupId>org.apache.chemistry.opencmis</groupId>
                   <artifactId>chemistry-opencmis-server-inmemory</artifactId>
-                  <version>0.13.0</version>
+                  <version>1.1.0</version>
                   <type>war</type>
                   <overWrite>false</overWrite>
                   <destFileName>chemistry-opencmis-server-inmemory.war</destFileName>
@@ -257,7 +257,7 @@
     <dependency>
         <groupId>org.apache.chemistry.opencmis</groupId>
         <artifactId>chemistry-opencmis-client-impl</artifactId>
-        <version>0.13.0</version>
+        <version>1.1.0</version>
      </dependency>
      <dependency>
         <groupId>commons-lang</groupId>
@@ -307,7 +307,7 @@
     <dependency>
       <groupId>org.apache.chemistry.opencmis</groupId>
       <artifactId>chemistry-opencmis-server-inmemory</artifactId>
-      <version>0.13.0</version>
+      <version>1.1.0</version>
       <type>war</type>
       <scope>test</scope>
     </dependency>