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/24 15:20:42 UTC
svn commit: r1809522 - in
/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src:
main/java/org/apache/manifoldcf/agents/output/cmisoutput/
test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/
Author: piergiorgio
Date: Sun Sep 24 15:20:41 2017
New Revision: 1809522
URL: http://svn.apache.org/viewvc?rev=1809522&view=rev
Log:
second iteration dedicated to integration tests of the CMIS Output Connector (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/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/APISanityHSQLDBIT.java
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseHSQLDB.java
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseITHSQLDB.java
manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BasePostgresql.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=1809522&r1=1809521&r2=1809522&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 24 15:20:41 2017
@@ -32,7 +32,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
-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.ObjectId;
@@ -54,6 +53,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisPermissionDeniedException;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
+import org.apache.chemistry.opencmis.commons.impl.jaxb.EnumBaseObjectTypeIds;
import org.apache.commons.lang.StringUtils;
import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
@@ -79,8 +79,6 @@ public class CmisOutputConnector extends
protected final static String ACTIVITY_READ = "read document";
protected static final String RELATIONSHIP_CHILD = "child";
- private static final String CMIS_FOLDER_BASE_TYPE = "cmis:folder";
-
// Tab name properties
private static final String CMIS_SERVER_TAB_PROPERTY = "CmisOutputConnector.Server";
@@ -141,8 +139,6 @@ public class CmisOutputConnector extends
private static final String CMIS_PROPERTY_PREFIX = "cmis:";
- private static final String CMIS_DOCUMENT_TYPE = "cmis:document";
-
/** Document accepted */
private final static int DOCUMENT_STATUS_ACCEPTED = 0;
@@ -162,8 +158,6 @@ public class CmisOutputConnector extends
/** 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
*/
@@ -859,7 +853,7 @@ public class CmisOutputConnector extends
// check if it is a base folder content type
baseTypeId = dropZoneResult.getPropertyByQueryName(PropertyIds.BASE_TYPE_ID).getFirstValue().toString();
- if (StringUtils.isNotEmpty(baseTypeId) && StringUtils.equals(baseTypeId, CMIS_FOLDER_BASE_TYPE)) {
+ if (StringUtils.isNotEmpty(baseTypeId) && StringUtils.equals(baseTypeId, EnumBaseObjectTypeIds.CMIS_FOLDER.value())) {
String objectId = dropZoneResult.getPropertyValueById(PropertyIds.OBJECT_ID);
parentDropZoneFolder = (Folder) session.getObject(objectId);
isDropZoneFolder = true;
@@ -888,7 +882,6 @@ public class CmisOutputConnector extends
boolean isDropZoneFolder = isDropZoneFolder(cmisQuery);
long startTime = System.currentTimeMillis();
- Document injectedDocument = null;
String resultDescription = StringUtils.EMPTY;
Folder leafParent = null;
String fileName = StringUtils.EMPTY;
@@ -937,7 +930,7 @@ public class CmisOutputConnector extends
}
//Agnostic metadata
- properties.put(PropertyIds.OBJECT_TYPE_ID, CMIS_DOCUMENT_TYPE);
+ properties.put(PropertyIds.OBJECT_TYPE_ID, EnumBaseObjectTypeIds.CMIS_DOCUMENT.value());
properties.put(PropertyIds.NAME, fileName);
properties.put(PropertyIds.CREATION_DATE, creationDate);
properties.put(PropertyIds.LAST_MODIFICATION_DATE, lastModificationDate);
@@ -955,7 +948,7 @@ public class CmisOutputConnector extends
// create a major version
leafParent = getOrCreateLeafParent(parentDropZoneFolder, creationDate, Boolean.valueOf(createTimestampTree), primaryPath);
- injectedDocument = leafParent.createDocument(properties, contentStream, VersioningState.MAJOR);
+ leafParent.createDocument(properties, contentStream, VersioningState.NONE);
resultDescription = DOCUMENT_STATUS_ACCEPTED_DESC;
return DOCUMENT_STATUS_ACCEPTED;
@@ -1007,7 +1000,7 @@ public class CmisOutputConnector extends
leafParent = dayFolder;
} else if(StringUtils.isNotEmpty(primaryPath)) {
- String[] primaryPathArray = StringUtils.split(primaryPath, CMIS_PATH_SEP);
+ String[] primaryPathArray = StringUtils.split(primaryPath, CmisOutputConnectorUtils.SLASH);
leafParent = folder;
for (int i = 0; i < primaryPathArray.length - 1; i++) {
String pathSegment = primaryPathArray[i];
@@ -1051,13 +1044,18 @@ public class CmisOutputConnector extends
String result = StringUtils.EMPTY;
//append the prefix for the relative path in the target repo
- String parentDropZonePath = parentDropZoneFolder.getPath();
- String fullDocumentURIinTargetRepo = parentDropZonePath + documentURI;
try {
- if(session.existsPath(fullDocumentURIinTargetRepo)) {
- session.deleteByPath(fullDocumentURIinTargetRepo);
- result = DOCUMENT_DELETION_STATUS_ACCEPTED;
- } else {
+ if(parentDropZoneFolder != null && StringUtils.isNotEmpty(documentURI)) {
+ String parentDropZonePath = parentDropZoneFolder.getPath();
+ String fullDocumentURIinTargetRepo = parentDropZonePath + documentURI;
+
+ if(session.existsPath(fullDocumentURIinTargetRepo)) {
+ session.deleteByPath(fullDocumentURIinTargetRepo);
+ result = DOCUMENT_DELETION_STATUS_ACCEPTED;
+ } else {
+ result = DOCUMENT_DELETION_STATUS_REJECTED;
+ }
+ } else {
result = DOCUMENT_DELETION_STATUS_REJECTED;
}
} catch (Exception e) {
@@ -1067,7 +1065,6 @@ public class CmisOutputConnector extends
activities.recordActivity(startTime, ACTIVITY_DELETE, null, documentURI, null, result);
}
}
-
}
\ No newline at end of file
Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/APISanityHSQLDBIT.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/APISanityHSQLDBIT.java?rev=1809522&r1=1809521&r2=1809522&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/APISanityHSQLDBIT.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/APISanityHSQLDBIT.java Sun Sep 24 15:20:41 2017
@@ -29,6 +29,7 @@ import java.util.Map;
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.ObjectId;
import org.apache.chemistry.opencmis.client.api.QueryResult;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.client.api.SessionFactory;
@@ -38,6 +39,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.ContentStream;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
+import org.apache.chemistry.opencmis.commons.impl.jaxb.EnumBaseObjectTypeIds;
import org.apache.chemistry.opencmis.commons.spi.ObjectService;
import org.apache.commons.lang.StringUtils;
import org.apache.manifoldcf.agents.output.cmisoutput.CmisOutputConfig;
@@ -62,6 +64,8 @@ public class APISanityHSQLDBIT extends B
private Session cmisSourceClientSession = null;
private Session cmisTargetClientSession = null;
+ private static final String CMIS_QUERY_TARGET_DEFAULT_VALUE = "SELECT * FROM cmis:folder WHERE cmis:name='Target'";
+
private Session getCmisSourceClientSession(){
// default factory implementation
SessionFactory factory = SessionFactoryImpl.newInstance();
@@ -153,7 +157,7 @@ public class APISanityHSQLDBIT extends B
//creating a new folder
- Folder newSourceRepoFolder = createTestFolder(cmisSourceClientSession);
+ Folder newSourceRepoFolder = createTestFolderInTheSource(cmisSourceClientSession);
String name = StringUtils.EMPTY;
for(int i=1; i<=2; i++){
name = "testdata" + String.valueOf(i) + ".txt";
@@ -161,7 +165,7 @@ public class APISanityHSQLDBIT extends B
}
//Creating the target folder in the target repo
- createTestFolder(cmisTargetClientSession);
+ createTestFolderInTheTarget(cmisTargetClientSession);
}
catch (Exception e)
@@ -170,8 +174,8 @@ public class APISanityHSQLDBIT extends B
throw e;
}
}
-
- private Folder createTestFolder(Session session) {
+
+ private Folder createTestFolderInTheSource(Session session) {
Folder root = session.getRootFolder();
ItemIterable<QueryResult> results = session.query(CmisOutputConfig.CMIS_QUERY_DEFAULT_VALUE, false);
for (QueryResult result : results) {
@@ -181,13 +185,31 @@ public class APISanityHSQLDBIT extends B
}
Map<String, Object> folderProperties = new HashMap<String, Object>();
- folderProperties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder");
+ folderProperties.put(PropertyIds.OBJECT_TYPE_ID, EnumBaseObjectTypeIds.CMIS_FOLDER.value());
folderProperties.put(PropertyIds.NAME, "Apache ManifoldCF");
//Creating sample contents on the source repo
Folder newFolder = root.createFolder(folderProperties);
return newFolder;
}
+
+ private Folder createTestFolderInTheTarget(Session session) {
+ Folder root = session.getRootFolder();
+ ItemIterable<QueryResult> results = session.query(CMIS_QUERY_TARGET_DEFAULT_VALUE, false);
+ for (QueryResult result : results) {
+ String repositoryId = cmisSourceClientSession.getRepositoryInfo().getId();
+ String folderId = result.getPropertyById(PropertyIds.OBJECT_ID).getFirstValue().toString();
+ cmisSourceClientSession.getBinding().getObjectService().deleteTree(repositoryId, folderId, true, null, false, null);
+ }
+
+ Map<String, Object> folderProperties = new HashMap<String, Object>();
+ folderProperties.put(PropertyIds.OBJECT_TYPE_ID, EnumBaseObjectTypeIds.CMIS_FOLDER.value());
+ folderProperties.put(PropertyIds.NAME, "Target");
+
+ //Creating sample contents on the source repo
+ Folder newFolder = root.createFolder(folderProperties);
+ return newFolder;
+ }
@After
public void removeTestArea()
@@ -226,7 +248,7 @@ public class APISanityHSQLDBIT extends B
connectionObject.addChild(connectionObject.getChildCount(),child);
child = new ConfigurationNode("max_connections");
- child.setValue("10");
+ child.setValue("1");
connectionObject.addChild(connectionObject.getChildCount(),child);
child = new ConfigurationNode("configuration");
@@ -306,7 +328,7 @@ public class APISanityHSQLDBIT extends B
connectionObject.addChild(connectionObject.getChildCount(),child);
child = new ConfigurationNode("max_connections");
- child.setValue("10");
+ child.setValue("1");
connectionObject.addChild(connectionObject.getChildCount(),child);
child = new ConfigurationNode("configuration");
@@ -356,7 +378,7 @@ public class APISanityHSQLDBIT extends B
//cmisQuery
ConfigurationNode cmisOutputCmisQueryNode = new ConfigurationNode("_PARAMETER_");
cmisOutputCmisQueryNode.setAttribute("name", CmisOutputConfig.CMIS_QUERY_PARAM);
- cmisOutputCmisQueryNode.setValue(CmisOutputConfig.CMIS_QUERY_DEFAULT_VALUE);
+ cmisOutputCmisQueryNode.setValue(CMIS_QUERY_TARGET_DEFAULT_VALUE);
child.addChild(child.getChildCount(), cmisOutputCmisQueryNode);
//createTimestampTree
@@ -500,10 +522,7 @@ public class APISanityHSQLDBIT extends B
if(targetRepoNumberOfContents != 4)
throw new ManifoldCFException("Wrong number of documents stored in the CMIS Target repo - expected 4, saw "+new Long(targetRepoNumberOfContents).toString());
- // We also need to make sure the new document was indexed. Have to think about how to do this though.
- // MHL
- //System.out.println("Starting delete...");
- // Delete a file, and recrawl
+ // Delete a content and recrawl
removeDocument(cmisSourceClientSession, "testdata2.txt");
// Now, start the job, and wait until it completes.
@@ -513,6 +532,7 @@ public class APISanityHSQLDBIT extends B
// Check to be sure we actually processed the right number of documents.
// The test data area has 3 documents and one directory, and we have to count the root directory too.
count = getJobDocumentsProcessed(jobIDString);
+ waitJobInactive(jobIDString, 240000L);
if (count != 4)
throw new ManifoldCFException("Wrong number of documents processed after delete - expected 4, saw "+new Long(count).toString());
@@ -619,13 +639,11 @@ public class APISanityHSQLDBIT extends B
public void removeDocument(Session session, String name){
String cmisQuery = StringUtils.replace(CMIS_TEST_QUERY_CHANGE_DOC, REPLACER, name);
ItemIterable<QueryResult> results = session.query(cmisQuery, false);
- String objectId = StringUtils.EMPTY;
+ String objectId = null;
for (QueryResult result : results) {
objectId = result.getPropertyById(PropertyIds.OBJECT_ID).getFirstValue().toString();
}
- String repositoryId = session.getRepositoryInfo().getId();
- ObjectService objectService = session.getBinding().getObjectService();
- objectService.deleteObject(repositoryId, objectId, true, null);
+ session.getObject(objectId).delete();
}
protected void waitJobInactive(String jobIDString, long maxTime)
Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseHSQLDB.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseHSQLDB.java?rev=1809522&r1=1809521&r2=1809522&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseHSQLDB.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseHSQLDB.java Sun Sep 24 15:20:41 2017
@@ -20,16 +20,26 @@ package org.apache.manifoldcf.agents.out
/** This is a testing base class that is responsible for setting up/tearing down the agents framework. */
-public class BaseHSQLDB extends org.apache.manifoldcf.agents.tests.BaseHSQLDB
+public class BaseHSQLDB extends org.apache.manifoldcf.crawler.tests.BaseHSQLDB
{
protected String[] getConnectorNames()
{
- return new String[]{"CMIS"};
+ return new String[]{"Test Connector"};
}
protected String[] getConnectorClasses()
{
+ return new String[]{"org.apache.manifoldcf.crawler.tests.TestingRepositoryConnector"};
+ }
+
+ protected String[] getOutputNames()
+ {
+ return new String[]{"CMIS"};
+ }
+
+ protected String[] getOutputClasses()
+ {
return new String[]{"org.apache.manifoldcf.agents.output.cmisoutput.CmisOutputConnector"};
}
Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseITHSQLDB.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseITHSQLDB.java?rev=1809522&r1=1809521&r2=1809522&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseITHSQLDB.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BaseITHSQLDB.java Sun Sep 24 15:20:41 2017
@@ -22,6 +22,7 @@ import org.apache.commons.lang.StringUti
import org.apache.manifoldcf.crawler.connectors.cmis.tests.CMISServer;
import org.junit.After;
import org.junit.Before;
+import org.junit.Test;
/** Tests that run the "agents daemon" should be derived from this
*
Modified: manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BasePostgresql.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BasePostgresql.java?rev=1809522&r1=1809521&r2=1809522&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BasePostgresql.java (original)
+++ manifoldcf/branches/CONNECTORS-1356-2.7.1/connectors/cmis/connector/src/test/java/org/apache/manifoldcf/agents/output/cmisoutput/tests/BasePostgresql.java Sun Sep 24 15:20:41 2017
@@ -20,7 +20,7 @@ package org.apache.manifoldcf.agents.out
/** This is a testing base class that is responsible for setting up/tearing down the agents framework. */
-public class BasePostgresql extends org.apache.manifoldcf.agents.tests.BasePostgresql
+public class BasePostgresql extends org.apache.manifoldcf.crawler.tests.BasePostgresql
{
protected String[] getConnectorNames()