Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/MultiFilingTest.java URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/MultiFilingTest.java?rev=936938&r1=936937&r2=936938&view=diff ============================================================================== --- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/MultiFilingTest.java (original) +++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/MultiFilingTest.java Thu Apr 22 16:27:57 2010 @@ -48,237 +48,237 @@ import org.junit.Test; public class MultiFilingTest extends AbstractServiceTst { - private static Log LOG = LogFactory.getLog(MultiFilingTest.class); - private static final String DOCUMENT_TYPE_ID = UnitTestTypeSystemCreator.COMPLEX_TYPE; - private static final String FOLDER_TYPE_ID = InMemoryFolderTypeDefinition.getRootFolderType().getId(); - private static final String UNFILED_DOC_NAME = "Unfiled document"; - private static final String RENAMED_DOC_NAME = "My Renamed Document"; - - private String fId1; - private String fId2; - private String fId11; - - @Before - public void setUp() throws Exception { - super.setUp(); - } - - @After - public void tearDown() throws Exception { - super.tearDown(); - } - - @Test - public void testCreateUnfiledDocument() { - LOG.debug("Begin testCreatUnfiledDocument()"); - String docId = createUnfiledDocument(); - String docId2 = getDocument(docId); - assertEquals(docId, docId2); - - // get object parents, must be empty - List<ObjectParentData> res = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, - IncludeRelationships.NONE, null, true, null); - - assertNotNull(res); - assertEquals(res.size(), 0); - - LOG.debug("End testCreatUnfiledDocument()"); - } - - @Test - public void testMakeFiledDocumentUnfiled() { - LOG.debug("Begin testMakeFiledDocumentUnfiled()"); - - String docId = createDocument("Filed document", fRootFolderId, DOCUMENT_TYPE_ID, true); - - fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fRootFolderId, null); - List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, - IncludeRelationships.NONE, null, true, null); - assertEquals(0, parents.size()); - - LOG.debug("End testMakeFiledDocumentUnfiled()"); - } - - @Test - public void testAddDocumentToFolder() { - LOG.debug("Begin testAddDocumentToFolder()"); - String docId = createUnfiledDocument(); - addDocumentToFolder(docId); - LOG.debug("End testAddDocumentToFolder()"); - } - - @Test - public void testRemoveDocumentFromFolder() { - LOG.debug("Begin testRemoveDocumentFromFolder()"); - - String docId = createUnfiledDocument(); - removeDocumentFromFolder(docId); - LOG.debug("End testRemoveDocumentFromFolder()"); - } - - @Test - public void testMoveMultiFiledDocument() { - LOG.debug("begin testMoveMultiFiledDocument()"); - String docId = createUnfiledDocument(); - prepareMultiFiledDocument(docId); - String newFolderId = createFolder("folder2.1", fId2, FOLDER_TYPE_ID); - - Holder<String> idHolder = new Holder<String>(docId); - fObjSvc.moveObject(fRepositoryId, idHolder, newFolderId, fId11, null); - List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, - IncludeRelationships.NONE, null, true, null); - assertEquals(3, parents.size()); - boolean foundNewParent = false; - boolean foundOldParent = false; - for (ObjectParentData parentData : parents) { - if (parentData.getObject().getId().equals(newFolderId)) - foundNewParent = true; - if (parentData.getObject().getId().equals(fId11)) - foundOldParent = true; - } - assertTrue("After move new target should be a parent", foundNewParent); - assertFalse("After move old source should no longer be a parent", foundOldParent); - LOG.debug("End testMoveMultiFiledDocument()"); - } - - @Test - public void testRenameMultiFiledDocument() { - LOG.debug("begin testRenameMultiFiledDocument()"); - String docId = createUnfiledDocument(); - prepareMultiFiledDocument(docId); - renameDocumentAndCheckResult(docId); - LOG.debug("End testRenameMultiFiledDocument()"); - } - - @Test - public void testRenameMultiFiledDocumentWithNameConflict() { - LOG.debug("begin testRenameMultiFiledDocument()"); - String docId = createUnfiledDocument(); - prepareMultiFiledDocument(docId); - // create a document with the new name in one of the folders - createDocument(RENAMED_DOC_NAME, fId11, DOCUMENT_TYPE_ID, true); - // try to rename which should fail now - try { - renameDocumentAndCheckResult(docId); - fail("A rename to an existing name in one of the filed folders should fail"); - } catch (Exception e) { - assertTrue(e instanceof CmisConstraintException); - } - LOG.debug("End testRenameMultiFiledDocument()"); - } - - @Test - public void testAddVersionedDocumentToFolder() { - LOG.debug("Begin testAddVersionedDocumentToFolder()"); - String docId = createVersionedDocument(); - addDocumentToFolder(docId); - LOG.debug("End testAddVersionedDocumentToFolder()"); - } - - @Test - public void testRemoveVersionedDocumentFromFolder() { - LOG.debug("Begin testRemoveVersionedDocumentFromFolder()"); - - String docId = createVersionedDocument(); - removeDocumentFromFolder(docId); - LOG.debug("End testRemoveVersionedDocumentFromFolder()"); - } - - private void createFolders() { - fId1 = createFolder("folder1", fRootFolderId, FOLDER_TYPE_ID); - fId2 = createFolder("folder2", fRootFolderId, FOLDER_TYPE_ID); - fId11 = createFolder("folder1.1", fId1, FOLDER_TYPE_ID); - } - - private void addDocumentToFolder(String docId) { - - List<String> folderIds = prepareMultiFiledDocument(docId); - - // get object parents, must contain all folders - List<ObjectParentData> res = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, - IncludeRelationships.NONE, null, true, null); - assertEquals(3, res.size()); - for (ObjectParentData opd : res) { - assertTrue(folderIds.contains(opd.getObject().getId())); - assertEquals(BaseTypeId.CMIS_FOLDER, opd.getObject().getBaseTypeId()); - assertEquals(UNFILED_DOC_NAME, opd.getRelativePathSegment()); - } - - // try version specific filing, should fail - try { - fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId1, false, null); - fail("Adding not all versions to a folder should fail."); - } catch (Exception e) { - assertTrue(e instanceof CmisNotSupportedException); - } - } - - private void removeDocumentFromFolder(String docId) { - prepareMultiFiledDocument(docId); - - fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId1, null); - List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, - IncludeRelationships.NONE, null, true, null); - assertEquals(2, parents.size()); - for (ObjectParentData opd : parents) { - assertFalse(fId1.equals(opd.getObject().getId())); - } - - fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId2, null); - parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, true, - null); - assertEquals(1, parents.size()); - for (ObjectParentData opd : parents) { - assertFalse(fId1.equals(opd.getObject().getId())); - } - - fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId11, null); - parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, true, - null); - assertEquals(0, parents.size()); - } - - private String createUnfiledDocument() { - return createDocument(UNFILED_DOC_NAME, null, DOCUMENT_TYPE_ID, true); - } - - private List<String> prepareMultiFiledDocument(String docId) { - createFolders(); - - // add the document to three folders - fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId1, true, null); - fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId2, true, null); - fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId11, true, null); - - List<String> folderIds = new ArrayList<String>(); - folderIds.add(fId1); - folderIds.add(fId2); - folderIds.add(fId11); - - return folderIds; - } - - private void renameDocumentAndCheckResult(String docId) { - Holder<String> idHolder = new Holder<String>(docId); - List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); - properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, RENAMED_DOC_NAME)); - Properties newProps = fFactory.createPropertiesData(properties); - Holder<String> changeTokenHolder = new Holder<String>(); - fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, null); - docId = idHolder.getValue(); - ObjectData res = fObjSvc.getObject(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, false, - false, null); - assertNotNull(res); - Map<String, PropertyData<?>> propMap = res.getProperties().getProperties(); - PropertyData<?> pd = propMap.get(PropertyIds.NAME); - assertNotNull(pd); - assertEquals(RENAMED_DOC_NAME, pd.getFirstValue()); - } + private static Log LOG = LogFactory.getLog(MultiFilingTest.class); + private static final String DOCUMENT_TYPE_ID = UnitTestTypeSystemCreator.COMPLEX_TYPE; + private static final String FOLDER_TYPE_ID = InMemoryFolderTypeDefinition.getRootFolderType().getId(); + private static final String UNFILED_DOC_NAME = "Unfiled document"; + private static final String RENAMED_DOC_NAME = "My Renamed Document"; + + private String fId1; + private String fId2; + private String fId11; + + @Before + public void setUp() throws Exception { + super.setUp(); + } + + @After + public void tearDown() throws Exception { + super.tearDown(); + } + + @Test + public void testCreateUnfiledDocument() { + LOG.debug("Begin testCreatUnfiledDocument()"); + String docId = createUnfiledDocument(); + String docId2 = getDocument(docId); + assertEquals(docId, docId2); + + // get object parents, must be empty + List<ObjectParentData> res = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, + IncludeRelationships.NONE, null, true, null); + + assertNotNull(res); + assertEquals(res.size(), 0); + + LOG.debug("End testCreatUnfiledDocument()"); + } + + @Test + public void testMakeFiledDocumentUnfiled() { + LOG.debug("Begin testMakeFiledDocumentUnfiled()"); + + String docId = createDocument("Filed document", fRootFolderId, DOCUMENT_TYPE_ID, true); + + fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fRootFolderId, null); + List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, + IncludeRelationships.NONE, null, true, null); + assertEquals(0, parents.size()); + + LOG.debug("End testMakeFiledDocumentUnfiled()"); + } + + @Test + public void testAddDocumentToFolder() { + LOG.debug("Begin testAddDocumentToFolder()"); + String docId = createUnfiledDocument(); + addDocumentToFolder(docId); + LOG.debug("End testAddDocumentToFolder()"); + } + + @Test + public void testRemoveDocumentFromFolder() { + LOG.debug("Begin testRemoveDocumentFromFolder()"); + + String docId = createUnfiledDocument(); + removeDocumentFromFolder(docId); + LOG.debug("End testRemoveDocumentFromFolder()"); + } + + @Test + public void testMoveMultiFiledDocument() { + LOG.debug("begin testMoveMultiFiledDocument()"); + String docId = createUnfiledDocument(); + prepareMultiFiledDocument(docId); + String newFolderId = createFolder("folder2.1", fId2, FOLDER_TYPE_ID); + + Holder<String> idHolder = new Holder<String>(docId); + fObjSvc.moveObject(fRepositoryId, idHolder, newFolderId, fId11, null); + List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, + IncludeRelationships.NONE, null, true, null); + assertEquals(3, parents.size()); + boolean foundNewParent = false; + boolean foundOldParent = false; + for (ObjectParentData parentData : parents) { + if (parentData.getObject().getId().equals(newFolderId)) + foundNewParent = true; + if (parentData.getObject().getId().equals(fId11)) + foundOldParent = true; + } + assertTrue("After move new target should be a parent", foundNewParent); + assertFalse("After move old source should no longer be a parent", foundOldParent); + LOG.debug("End testMoveMultiFiledDocument()"); + } + + @Test + public void testRenameMultiFiledDocument() { + LOG.debug("begin testRenameMultiFiledDocument()"); + String docId = createUnfiledDocument(); + prepareMultiFiledDocument(docId); + renameDocumentAndCheckResult(docId); + LOG.debug("End testRenameMultiFiledDocument()"); + } + + @Test + public void testRenameMultiFiledDocumentWithNameConflict() { + LOG.debug("begin testRenameMultiFiledDocument()"); + String docId = createUnfiledDocument(); + prepareMultiFiledDocument(docId); + // create a document with the new name in one of the folders + createDocument(RENAMED_DOC_NAME, fId11, DOCUMENT_TYPE_ID, true); + // try to rename which should fail now + try { + renameDocumentAndCheckResult(docId); + fail("A rename to an existing name in one of the filed folders should fail"); + } catch (Exception e) { + assertTrue(e instanceof CmisConstraintException); + } + LOG.debug("End testRenameMultiFiledDocument()"); + } + + @Test + public void testAddVersionedDocumentToFolder() { + LOG.debug("Begin testAddVersionedDocumentToFolder()"); + String docId = createVersionedDocument(); + addDocumentToFolder(docId); + LOG.debug("End testAddVersionedDocumentToFolder()"); + } + + @Test + public void testRemoveVersionedDocumentFromFolder() { + LOG.debug("Begin testRemoveVersionedDocumentFromFolder()"); + + String docId = createVersionedDocument(); + removeDocumentFromFolder(docId); + LOG.debug("End testRemoveVersionedDocumentFromFolder()"); + } + + private void createFolders() { + fId1 = createFolder("folder1", fRootFolderId, FOLDER_TYPE_ID); + fId2 = createFolder("folder2", fRootFolderId, FOLDER_TYPE_ID); + fId11 = createFolder("folder1.1", fId1, FOLDER_TYPE_ID); + } + + private void addDocumentToFolder(String docId) { + + List<String> folderIds = prepareMultiFiledDocument(docId); + + // get object parents, must contain all folders + List<ObjectParentData> res = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, + IncludeRelationships.NONE, null, true, null); + assertEquals(3, res.size()); + for (ObjectParentData opd : res) { + assertTrue(folderIds.contains(opd.getObject().getId())); + assertEquals(BaseTypeId.CMIS_FOLDER, opd.getObject().getBaseTypeId()); + assertEquals(UNFILED_DOC_NAME, opd.getRelativePathSegment()); + } + + // try version specific filing, should fail + try { + fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId1, false, null); + fail("Adding not all versions to a folder should fail."); + } catch (Exception e) { + assertTrue(e instanceof CmisNotSupportedException); + } + } + + private void removeDocumentFromFolder(String docId) { + prepareMultiFiledDocument(docId); + + fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId1, null); + List<ObjectParentData> parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, + IncludeRelationships.NONE, null, true, null); + assertEquals(2, parents.size()); + for (ObjectParentData opd : parents) { + assertFalse(fId1.equals(opd.getObject().getId())); + } + + fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId2, null); + parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, true, + null); + assertEquals(1, parents.size()); + for (ObjectParentData opd : parents) { + assertFalse(fId1.equals(opd.getObject().getId())); + } + + fMultiSvc.removeObjectFromFolder(fRepositoryId, docId, fId11, null); + parents = fNavSvc.getObjectParents(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, true, + null); + assertEquals(0, parents.size()); + } + + private String createUnfiledDocument() { + return createDocument(UNFILED_DOC_NAME, null, DOCUMENT_TYPE_ID, true); + } + + private List<String> prepareMultiFiledDocument(String docId) { + createFolders(); + + // add the document to three folders + fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId1, true, null); + fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId2, true, null); + fMultiSvc.addObjectToFolder(fRepositoryId, docId, fId11, true, null); + + List<String> folderIds = new ArrayList<String>(); + folderIds.add(fId1); + folderIds.add(fId2); + folderIds.add(fId11); + + return folderIds; + } + + private void renameDocumentAndCheckResult(String docId) { + Holder<String> idHolder = new Holder<String>(docId); + List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); + properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, RENAMED_DOC_NAME)); + Properties newProps = fFactory.createPropertiesData(properties); + Holder<String> changeTokenHolder = new Holder<String>(); + fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, null); + docId = idHolder.getValue(); + ObjectData res = fObjSvc.getObject(fRepositoryId, docId, "*", false, IncludeRelationships.NONE, null, false, + false, null); + assertNotNull(res); + Map<String, PropertyData<?>> propMap = res.getProperties().getProperties(); + PropertyData<?> pd = propMap.get(PropertyIds.NAME); + assertNotNull(pd); + assertEquals(RENAMED_DOC_NAME, pd.getFirstValue()); + } - private String createVersionedDocument() { + private String createVersionedDocument() { - return createDocument(UNFILED_DOC_NAME, null, UnitTestTypeSystemCreator.VERSION_DOCUMENT_TYPE_ID, - VersioningState.MAJOR, true); + return createDocument(UNFILED_DOC_NAME, null, UnitTestTypeSystemCreator.VERSION_DOCUMENT_TYPE_ID, + VersioningState.MAJOR, true); - } + } }
Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java?rev=936938&r1=936937&r2=936938&view=diff ============================================================================== --- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java (original) +++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/NavigationServiceTest.java Thu Apr 22 16:27:57 2010 @@ -45,186 +45,186 @@ import static org.junit.Assert.*; * @author Jens */ public class NavigationServiceTest extends AbstractServiceTst { - private static Log log = LogFactory.getLog(NavigationServiceTest.class); - private static final int NUM_ROOT_FOLDERS = 10; - private String fLevel1FolderId; - - @Before - public void setUp() throws Exception { - super.setUp(); - } - - @After - public void tearDown() throws Exception { - super.tearDown(); - } - - @Test - public void testGetChildren() { - log.info("starting testGetChildren() ..."); - createLevel1Folders(); - - log.info("test getting all objects with getChildren"); - BigInteger maxItems = BigInteger.valueOf(NUM_ROOT_FOLDERS * 2); - BigInteger skipCount = BigInteger.valueOf(0); - ObjectInFolderList result = fNavSvc.getChildren(fRepositoryId, fRootFolderId, "*", null, false, - IncludeRelationships.NONE, null, true, maxItems, skipCount, null); - List<ObjectInFolderData> folders = result.getObjects(); - log.info(" found " + folders.size() + " folders in getChildren()"); - for (ObjectInFolderData folder : folders) { - log.info(" found folder id " + folder.getObject().getId() + " path segment " + folder.getPathSegment()); - } - assertEquals(NUM_ROOT_FOLDERS, folders.size()); - - log.info("test paging with getChildren"); - maxItems = BigInteger.valueOf(3); - skipCount = BigInteger.valueOf(3); - result = fNavSvc.getChildren(fRepositoryId, fRootFolderId, "*", null, false, IncludeRelationships.NONE, null, - true, maxItems, skipCount, null); - folders = result.getObjects(); - log.info(" found " + folders.size() + " folders in getChildren()"); - for (ObjectInFolderData folder : folders) { - log.info(" found folder id " + folder.getObject().getId() + " path segment " + folder.getPathSegment()); - } - assertEquals(3, folders.size()); - assertEquals("Folder 3", folders.get(0).getPathSegment()); - log.info("... testGetChildren() finished."); - } - - @Test - public void testGetFolderTree() { - log.info("starting testGetFolderTree() ..."); - createFolderHierachy(3, 5); - - log.info("test getting all objects with getFolderTree"); - BigInteger depth = BigInteger.valueOf(-1); - Boolean includePathSegments = true; - String propertyFilter = "*"; - String renditionFilter = null; - Boolean includeAllowableActions = false; - String objectId = fRootFolderId; - - List<ObjectInFolderContainer> tree = fNavSvc.getFolderTree(fRepositoryId, objectId, depth, propertyFilter, - includeAllowableActions, IncludeRelationships.NONE, renditionFilter, includePathSegments, null); - - log.info("Descendants for object id " + objectId + " are: "); - for (ObjectInFolderContainer folder : tree) { - logFolderContainer(folder, 0); - } - - log.info("... testGetFolderTree() finished."); - } - - private void logFolderContainer(ObjectInFolderContainer folder, int depth) { - StringBuilder prefix = new StringBuilder(); - for (int i = 0; i < depth; i++) - prefix.append(" "); - - log.info(prefix + "name: " + folder.getObject().getPathSegment()); - List<ObjectInFolderContainer> children = folder.getChildren(); - if (null != children) { - for (ObjectInFolderContainer child : children) { - logFolderContainer(child, depth + 1); - } - } - } - - @Test - public void testGetDescendants() { - log.info("starting testGetDescendants() ..."); - final int numLevels = 3; - final int childrenPerLevel = 3; - int objCount = createFolderHierachy(numLevels, childrenPerLevel); - - log.info("test getting all objects with getDescendants"); - List<ObjectInFolderContainer> result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger - .valueOf(-1), "*", Boolean.TRUE, IncludeRelationships.NONE, null, Boolean.TRUE, null); - - for (ObjectInFolderContainer obj : result) { - log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " - + obj.getObject().getPathSegment()); - } - int sizeOfDescs = getSizeOfDescendants(result); - assertEquals(objCount, sizeOfDescs); - - log.info("test getting one level with getDescendants"); - result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger.valueOf(1), "*", Boolean.TRUE, - IncludeRelationships.NONE, null, Boolean.TRUE, null); - - for (ObjectInFolderContainer obj : result) { - log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " - + obj.getObject().getPathSegment()); - } - sizeOfDescs = getSizeOfDescendants(result); - assertEquals(childrenPerLevel, sizeOfDescs); - - log.info("test getting two levels with getDescendants"); - result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger.valueOf(2), "*", Boolean.TRUE, - IncludeRelationships.NONE, null, Boolean.TRUE, null); - - for (ObjectInFolderContainer obj : result) { - log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " - + obj.getObject().getPathSegment()); - } - sizeOfDescs = getSizeOfDescendants(result); - assertEquals(childrenPerLevel * childrenPerLevel + childrenPerLevel, sizeOfDescs); - - log.info("... testGetDescendants() finished."); - } - - @Test - public void testGetFolderParent() { - log.info("starting testGetFolderParent() ..."); - createLevel1Folders(); - String folderId = fLevel1FolderId; - - ObjectData result = fNavSvc.getFolderParent(fRepositoryId, folderId, null, null); - log.info(" found parent for id \'" + folderId + "\' is \'" + result.getId() + "\'"); - assertEquals(fRootFolderId, result.getId()); // should be root folder - - folderId = fRootFolderId; - try { - result = fNavSvc.getFolderParent(fRepositoryId, folderId, null, null); - log.info(" found parent for id " + folderId + " is " + result.getId()); - fail("Should not be possible to get parent for root folder"); - } catch (Exception e) { - assertEquals(CmisInvalidArgumentException.class, e.getClass()); - log.info(" getParent() for root folder raised expected exception"); - } - log.info("... testGetFolderParent() finished."); - } - - private int getSizeOfDescendants(List<ObjectInFolderContainer> objs) { - int sum = 0; - if (null != objs) { - sum = objs.size(); - for (ObjectInFolderContainer obj : objs) { - if (null != obj.getChildren()) - sum += getSizeOfDescendants(obj.getChildren()); - } - } - return sum; - } - - private void createLevel1Folders() { - for (int i = 0; i < NUM_ROOT_FOLDERS; i++) { - List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); - properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, "Folder " + i)); - properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, InMemoryFolderTypeDefinition - .getRootFolderType().getId())); - Properties props = fFactory.createPropertiesData(properties); - String id = fObjSvc.createFolder(fRepositoryId, props, fRootFolderId, null, null, null, null); - if (i == 3) // store one - fLevel1FolderId = id; - } - } - - private int createFolderHierachy(int levels, int childrenPerLevel) { - - ObjectGenerator gen = new ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepositoryId); - gen.createFolderHierachy(levels, childrenPerLevel, fRootFolderId); - int objCount = gen.getObjectsInTotal(); - return objCount; - } + private static Log log = LogFactory.getLog(NavigationServiceTest.class); + private static final int NUM_ROOT_FOLDERS = 10; + private String fLevel1FolderId; + + @Before + public void setUp() throws Exception { + super.setUp(); + } + + @After + public void tearDown() throws Exception { + super.tearDown(); + } + + @Test + public void testGetChildren() { + log.info("starting testGetChildren() ..."); + createLevel1Folders(); + + log.info("test getting all objects with getChildren"); + BigInteger maxItems = BigInteger.valueOf(NUM_ROOT_FOLDERS * 2); + BigInteger skipCount = BigInteger.valueOf(0); + ObjectInFolderList result = fNavSvc.getChildren(fRepositoryId, fRootFolderId, "*", null, false, + IncludeRelationships.NONE, null, true, maxItems, skipCount, null); + List<ObjectInFolderData> folders = result.getObjects(); + log.info(" found " + folders.size() + " folders in getChildren()"); + for (ObjectInFolderData folder : folders) { + log.info(" found folder id " + folder.getObject().getId() + " path segment " + folder.getPathSegment()); + } + assertEquals(NUM_ROOT_FOLDERS, folders.size()); + + log.info("test paging with getChildren"); + maxItems = BigInteger.valueOf(3); + skipCount = BigInteger.valueOf(3); + result = fNavSvc.getChildren(fRepositoryId, fRootFolderId, "*", null, false, IncludeRelationships.NONE, null, + true, maxItems, skipCount, null); + folders = result.getObjects(); + log.info(" found " + folders.size() + " folders in getChildren()"); + for (ObjectInFolderData folder : folders) { + log.info(" found folder id " + folder.getObject().getId() + " path segment " + folder.getPathSegment()); + } + assertEquals(3, folders.size()); + assertEquals("Folder 3", folders.get(0).getPathSegment()); + log.info("... testGetChildren() finished."); + } + + @Test + public void testGetFolderTree() { + log.info("starting testGetFolderTree() ..."); + createFolderHierachy(3, 5); + + log.info("test getting all objects with getFolderTree"); + BigInteger depth = BigInteger.valueOf(-1); + Boolean includePathSegments = true; + String propertyFilter = "*"; + String renditionFilter = null; + Boolean includeAllowableActions = false; + String objectId = fRootFolderId; + + List<ObjectInFolderContainer> tree = fNavSvc.getFolderTree(fRepositoryId, objectId, depth, propertyFilter, + includeAllowableActions, IncludeRelationships.NONE, renditionFilter, includePathSegments, null); + + log.info("Descendants for object id " + objectId + " are: "); + for (ObjectInFolderContainer folder : tree) { + logFolderContainer(folder, 0); + } + + log.info("... testGetFolderTree() finished."); + } + + private void logFolderContainer(ObjectInFolderContainer folder, int depth) { + StringBuilder prefix = new StringBuilder(); + for (int i = 0; i < depth; i++) + prefix.append(" "); + + log.info(prefix + "name: " + folder.getObject().getPathSegment()); + List<ObjectInFolderContainer> children = folder.getChildren(); + if (null != children) { + for (ObjectInFolderContainer child : children) { + logFolderContainer(child, depth + 1); + } + } + } + + @Test + public void testGetDescendants() { + log.info("starting testGetDescendants() ..."); + final int numLevels = 3; + final int childrenPerLevel = 3; + int objCount = createFolderHierachy(numLevels, childrenPerLevel); + + log.info("test getting all objects with getDescendants"); + List<ObjectInFolderContainer> result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger + .valueOf(-1), "*", Boolean.TRUE, IncludeRelationships.NONE, null, Boolean.TRUE, null); + + for (ObjectInFolderContainer obj : result) { + log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " + + obj.getObject().getPathSegment()); + } + int sizeOfDescs = getSizeOfDescendants(result); + assertEquals(objCount, sizeOfDescs); + + log.info("test getting one level with getDescendants"); + result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger.valueOf(1), "*", Boolean.TRUE, + IncludeRelationships.NONE, null, Boolean.TRUE, null); + + for (ObjectInFolderContainer obj : result) { + log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " + + obj.getObject().getPathSegment()); + } + sizeOfDescs = getSizeOfDescendants(result); + assertEquals(childrenPerLevel, sizeOfDescs); + + log.info("test getting two levels with getDescendants"); + result = fNavSvc.getDescendants(fRepositoryId, fRootFolderId, BigInteger.valueOf(2), "*", Boolean.TRUE, + IncludeRelationships.NONE, null, Boolean.TRUE, null); + + for (ObjectInFolderContainer obj : result) { + log.info(" found folder id " + obj.getObject().getObject().getId() + " path segment " + + obj.getObject().getPathSegment()); + } + sizeOfDescs = getSizeOfDescendants(result); + assertEquals(childrenPerLevel * childrenPerLevel + childrenPerLevel, sizeOfDescs); + + log.info("... testGetDescendants() finished."); + } + + @Test + public void testGetFolderParent() { + log.info("starting testGetFolderParent() ..."); + createLevel1Folders(); + String folderId = fLevel1FolderId; + + ObjectData result = fNavSvc.getFolderParent(fRepositoryId, folderId, null, null); + log.info(" found parent for id \'" + folderId + "\' is \'" + result.getId() + "\'"); + assertEquals(fRootFolderId, result.getId()); // should be root folder + + folderId = fRootFolderId; + try { + result = fNavSvc.getFolderParent(fRepositoryId, folderId, null, null); + log.info(" found parent for id " + folderId + " is " + result.getId()); + fail("Should not be possible to get parent for root folder"); + } catch (Exception e) { + assertEquals(CmisInvalidArgumentException.class, e.getClass()); + log.info(" getParent() for root folder raised expected exception"); + } + log.info("... testGetFolderParent() finished."); + } + + private int getSizeOfDescendants(List<ObjectInFolderContainer> objs) { + int sum = 0; + if (null != objs) { + sum = objs.size(); + for (ObjectInFolderContainer obj : objs) { + if (null != obj.getChildren()) + sum += getSizeOfDescendants(obj.getChildren()); + } + } + return sum; + } + + private void createLevel1Folders() { + for (int i = 0; i < NUM_ROOT_FOLDERS; i++) { + List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); + properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, "Folder " + i)); + properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, InMemoryFolderTypeDefinition + .getRootFolderType().getId())); + Properties props = fFactory.createPropertiesData(properties); + String id = fObjSvc.createFolder(fRepositoryId, props, fRootFolderId, null, null, null, null); + if (i == 3) // store one + fLevel1FolderId = id; + } + } + + private int createFolderHierachy(int levels, int childrenPerLevel) { + + ObjectGenerator gen = new ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepositoryId); + gen.createFolderHierachy(levels, childrenPerLevel, fRootFolderId); + int objCount = gen.getObjectsInTotal(); + return objCount; + } } Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java?rev=936938&r1=936937&r2=936938&view=diff ============================================================================== --- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java (original) +++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/ObjectCreator.java Thu Apr 22 16:27:57 2010 @@ -43,140 +43,140 @@ import org.apache.chemistry.opencmis.com public class ObjectCreator { - private BindingsObjectFactory fFactory; - private ObjectService fObjSvc; - private String fRepositoryId; - - public ObjectCreator(BindingsObjectFactory factory, ObjectService objSvc, String repositoryId) { - fObjSvc = objSvc; - fFactory = factory; - fRepositoryId = repositoryId; - } - - public String createDocument(String name, String typeId, String folderId, VersioningState versioningState, - Map<String, String> propsToSet) { - ContentStream contentStream = null; - List<String> policies = null; - Acl addACEs = null; - Acl removeACEs = null; - ExtensionsData extension = null; - - Properties props = createStringDocumentProperties(name, typeId, propsToSet); - - contentStream = createContent(); - - String id = null; - id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies, addACEs, - removeACEs, extension); - if (null == id) - junit.framework.Assert.fail("createDocument failed."); - - return id; - } - - public Properties createStringDocumentProperties(String name, String typeId, Map<String, String> propsToSet) { - List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); - properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name)); - properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId)); - if (null != propsToSet) - for (Entry<String, String> propToSet : propsToSet.entrySet()) { - properties.add(fFactory.createPropertyStringData(propToSet.getKey(), propToSet.getValue())); - } - Properties props = fFactory.createPropertiesData(properties); - return props; - } - - public ContentStream createContent() { - ContentStreamImpl content = new ContentStreamImpl(); - content.setFileName("data.txt"); - content.setMimeType("text/plain"); - int len = 32 * 1024; - byte[] b = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a, - 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a }; // 32 - // Bytes - ByteArrayOutputStream ba = new ByteArrayOutputStream(len); - try { - for (int i = 0; i < 1024; i++) - ba.write(b); - } catch (IOException e) { - throw new RuntimeException("Failed to fill content stream with data", e); - } - content.setStream(new ByteArrayInputStream(ba.toByteArray())); - content.setLength(BigInteger.valueOf(len)); - return content; - } - - public ContentStream createAlternateContent() { - ContentStreamImpl content = new ContentStreamImpl(); - content.setFileName("data.txt"); - content.setMimeType("text/plain"); - int len = 32 * 1024; - byte[] b = { 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, - 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61 }; // 32 - // Bytes - ByteArrayOutputStream ba = new ByteArrayOutputStream(len); - try { - for (int i = 0; i < 1024; i++) - ba.write(b); - } catch (IOException e) { - throw new RuntimeException("Failed to fill content stream with data", e); - } - content.setStream(new ByteArrayInputStream(ba.toByteArray())); - content.setLength(BigInteger.valueOf(len)); - return content; - } - - /** - * Compare two streams and return true if they are equal - * - * @param csd1 - * @param csd2 - * @return - */ - public boolean verifyContent(ContentStream csd1, ContentStream csd2) { - if (!csd1.getFileName().equals(csd2.getFileName())) - return false; - if (!csd1.getBigLength().equals(csd2.getBigLength())) - return false; - if (!csd1.getMimeType().equals(csd2.getMimeType())) - return false; - long len = csd1.getBigLength().longValue(); - InputStream s1 = csd1.getStream(); - InputStream s2 = csd2.getStream(); - try { - for (int i = 0; i < len; i++) { - int val1 = s1.read(); - int val2 = s2.read(); - if (val1 != val2) - return false; - } - } catch (IOException e) { - e.printStackTrace(); - return false; - } - return true; - } - - public void updateProperty(String id, String propertyId, String propertyValue) { - Properties properties = getUpdatePropertyList(propertyId, propertyValue); - - Holder<String> idHolder = new Holder<String>(id); - Holder<String> changeTokenHolder = new Holder<String>(); - fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, properties, null); - } - - public Properties getUpdatePropertyList(String propertyId, String propertyValue) { - List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); - properties.add(fFactory.createPropertyStringData(propertyId, propertyValue)); - Properties newProps = fFactory.createPropertiesData(properties); - return newProps; - } - - public boolean verifyProperty(String id, String propertyId, String propertyValue) { - Properties props = fObjSvc.getProperties(fRepositoryId, id, "*", null); - Map<String, PropertyData<?>> propsMap = props.getProperties(); - PropertyString pd = (PropertyString) propsMap.get(propertyId); - return propertyValue.equals(pd.getFirstValue()); - } + private BindingsObjectFactory fFactory; + private ObjectService fObjSvc; + private String fRepositoryId; + + public ObjectCreator(BindingsObjectFactory factory, ObjectService objSvc, String repositoryId) { + fObjSvc = objSvc; + fFactory = factory; + fRepositoryId = repositoryId; + } + + public String createDocument(String name, String typeId, String folderId, VersioningState versioningState, + Map<String, String> propsToSet) { + ContentStream contentStream = null; + List<String> policies = null; + Acl addACEs = null; + Acl removeACEs = null; + ExtensionsData extension = null; + + Properties props = createStringDocumentProperties(name, typeId, propsToSet); + + contentStream = createContent(); + + String id = null; + id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies, addACEs, + removeACEs, extension); + if (null == id) + junit.framework.Assert.fail("createDocument failed."); + + return id; + } + + public Properties createStringDocumentProperties(String name, String typeId, Map<String, String> propsToSet) { + List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); + properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name)); + properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, typeId)); + if (null != propsToSet) + for (Entry<String, String> propToSet : propsToSet.entrySet()) { + properties.add(fFactory.createPropertyStringData(propToSet.getKey(), propToSet.getValue())); + } + Properties props = fFactory.createPropertiesData(properties); + return props; + } + + public ContentStream createContent() { + ContentStreamImpl content = new ContentStreamImpl(); + content.setFileName("data.txt"); + content.setMimeType("text/plain"); + int len = 32 * 1024; + byte[] b = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x0c, 0x0a }; // 32 + // Bytes + ByteArrayOutputStream ba = new ByteArrayOutputStream(len); + try { + for (int i = 0; i < 1024; i++) + ba.write(b); + } catch (IOException e) { + throw new RuntimeException("Failed to fill content stream with data", e); + } + content.setStream(new ByteArrayInputStream(ba.toByteArray())); + content.setLength(BigInteger.valueOf(len)); + return content; + } + + public ContentStream createAlternateContent() { + ContentStreamImpl content = new ContentStreamImpl(); + content.setFileName("data.txt"); + content.setMimeType("text/plain"); + int len = 32 * 1024; + byte[] b = { 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, + 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61 }; // 32 + // Bytes + ByteArrayOutputStream ba = new ByteArrayOutputStream(len); + try { + for (int i = 0; i < 1024; i++) + ba.write(b); + } catch (IOException e) { + throw new RuntimeException("Failed to fill content stream with data", e); + } + content.setStream(new ByteArrayInputStream(ba.toByteArray())); + content.setLength(BigInteger.valueOf(len)); + return content; + } + + /** + * Compare two streams and return true if they are equal + * + * @param csd1 + * @param csd2 + * @return + */ + public boolean verifyContent(ContentStream csd1, ContentStream csd2) { + if (!csd1.getFileName().equals(csd2.getFileName())) + return false; + if (!csd1.getBigLength().equals(csd2.getBigLength())) + return false; + if (!csd1.getMimeType().equals(csd2.getMimeType())) + return false; + long len = csd1.getBigLength().longValue(); + InputStream s1 = csd1.getStream(); + InputStream s2 = csd2.getStream(); + try { + for (int i = 0; i < len; i++) { + int val1 = s1.read(); + int val2 = s2.read(); + if (val1 != val2) + return false; + } + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + + public void updateProperty(String id, String propertyId, String propertyValue) { + Properties properties = getUpdatePropertyList(propertyId, propertyValue); + + Holder<String> idHolder = new Holder<String>(id); + Holder<String> changeTokenHolder = new Holder<String>(); + fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, properties, null); + } + + public Properties getUpdatePropertyList(String propertyId, String propertyValue) { + List<PropertyData<?>> properties = new ArrayList<PropertyData<?>>(); + properties.add(fFactory.createPropertyStringData(propertyId, propertyValue)); + Properties newProps = fFactory.createPropertiesData(properties); + return newProps; + } + + public boolean verifyProperty(String id, String propertyId, String propertyValue) { + Properties props = fObjSvc.getProperties(fRepositoryId, id, "*", null); + Map<String, PropertyData<?>> propsMap = props.getProperties(); + PropertyString pd = (PropertyString) propsMap.get(propertyId); + return propertyValue.equals(pd.getFirstValue()); + } }
