mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (4.3/Cloud)
74567: Merged DEV to HEAD-BUG-FIX (5.0) 69634 : MNT-11339 : Unable to create relationship between cmis:document and cmis:item - TYPE_BASE is valid CMIS type 73710 : MNT-11339 : Unable to create relationship between cmis:document and cmis:item - Create association between cmis:document and cmis:item test git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@74915 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1706,6 +1706,110 @@ public class CMISTest
|
||||
}, CmisVersion.CMIS_1_1);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* MNT-11339 related test :
|
||||
* Unable to create relationship between cmis:document and cmis:item
|
||||
*/
|
||||
@Test
|
||||
public void testItemRelations()
|
||||
{
|
||||
AuthenticationUtil.pushAuthentication();
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
|
||||
|
||||
final String TEST_NAME = "testItemRelations-";
|
||||
final String FOLDER_NAME = TEST_NAME + "FOLDER" + GUID.generate();
|
||||
final String DOCUMENT_NAME = TEST_NAME + "DOCUMENT" + GUID.generate();
|
||||
final String CLIENT_NAME = "Some Test Client " + GUID.generate();
|
||||
|
||||
try
|
||||
{
|
||||
transactionService.getRetryingTransactionHelper().doInTransaction(
|
||||
new RetryingTransactionCallback<Void>()
|
||||
{
|
||||
@Override
|
||||
public Void execute() throws Throwable
|
||||
{
|
||||
NodeRef companyHomeNodeRef = repositoryHelper.getCompanyHome();
|
||||
|
||||
/* Create folder within companyHome */
|
||||
FileInfo folderInfo = fileFolderService.create(companyHomeNodeRef, FOLDER_NAME, ContentModel.TYPE_FOLDER);
|
||||
nodeService.setProperty(folderInfo.getNodeRef(), ContentModel.PROP_NAME, FOLDER_NAME);
|
||||
assertNotNull(folderInfo);
|
||||
|
||||
// and document
|
||||
FileInfo document = fileFolderService.create(folderInfo.getNodeRef(), DOCUMENT_NAME, ContentModel.TYPE_CONTENT);
|
||||
assertNotNull(document);
|
||||
nodeService.setProperty(document.getNodeRef(), ContentModel.PROP_NAME, DOCUMENT_NAME);
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
withCmisService(new CmisServiceCallback<String>() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public String execute(CmisService cmisService) {
|
||||
List<RepositoryInfo> repositories = cmisService.getRepositoryInfos(null);
|
||||
assertTrue(repositories.size() > 0);
|
||||
RepositoryInfo repo = repositories.get(0);
|
||||
String repositoryId = repo.getId();
|
||||
|
||||
// ensure there are custom type, aspect and association defined
|
||||
TypeDefinition tpdfn = cmisService.getTypeDefinition(repositoryId, "I:sctst:client", null);
|
||||
assertNotNull("the I:sctst:client type is not defined", tpdfn);
|
||||
TypeDefinition aspectDfn = cmisService.getTypeDefinition(repositoryId, "P:sctst:clientRelated", null);
|
||||
assertNotNull("the P:sctst:clientRelated aspect is not defined", aspectDfn);
|
||||
TypeDefinition relDfn = cmisService.getTypeDefinition(repositoryId, "R:sctst:relatedClients", null);
|
||||
assertNotNull("the R:sctst:relatedClients association is not defined", relDfn);
|
||||
|
||||
// create cmis:item within test folder
|
||||
PropertiesImpl properties = new PropertiesImpl();
|
||||
properties.addProperty(new PropertyIdImpl(PropertyIds.OBJECT_TYPE_ID, tpdfn.getId()));
|
||||
properties.addProperty(new PropertyStringImpl(PropertyIds.NAME, CLIENT_NAME));
|
||||
properties.addProperty(new PropertyStringImpl("sctst:clientId", "id" + GUID.generate()));
|
||||
properties.addProperty(new PropertyStringImpl("sctst:clientName", CLIENT_NAME));
|
||||
|
||||
ObjectData folderData = cmisService.getObjectByPath(repositoryId, "/" + FOLDER_NAME, null, null, null, null, null, null, null);
|
||||
|
||||
cmisService.createItem(repositoryId, properties, folderData.getId(), null, null, null, null);
|
||||
|
||||
ObjectData contentData = cmisService.getObjectByPath(repositoryId, "/" + FOLDER_NAME + "/" + DOCUMENT_NAME, null, null, null, null, null, null, null);
|
||||
|
||||
// add test aspect sctst:clientRelated to document
|
||||
Properties props = cmisService.getProperties(repositoryId, contentData.getId(), null, null);
|
||||
|
||||
PropertyData<?> propAspects = props.getProperties().get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS);
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
List aspects = propAspects.getValues();
|
||||
aspects.add("P:sctst:clientRelated");
|
||||
|
||||
properties = new PropertiesImpl();
|
||||
properties.addProperty(new PropertyStringImpl(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, aspects));
|
||||
cmisService.updateProperties(repositoryId, new Holder<String>(contentData.getId()), null, properties, null);
|
||||
// ensure document has sctst:clientRelated aspect applied
|
||||
aspects = cmisService.getProperties(repositoryId, contentData.getId(), null, null).getProperties().get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues();
|
||||
assertTrue("P:sctst:clientRelated excpected", aspects.contains("P:sctst:clientRelated"));
|
||||
|
||||
ObjectData itemData = cmisService.getObjectByPath(repositoryId, "/" + FOLDER_NAME + "/" + CLIENT_NAME, null, null, null, null, null, null, null);
|
||||
// create relationship between cmis:document and cmis:item
|
||||
properties = new PropertiesImpl();
|
||||
properties.addProperty(new PropertyIdImpl(PropertyIds.OBJECT_TYPE_ID, "R:sctst:relatedClients"));
|
||||
properties.addProperty(new PropertyIdImpl(PropertyIds.SOURCE_ID, contentData.getId()));
|
||||
properties.addProperty(new PropertyIdImpl(PropertyIds.TARGET_ID, itemData.getId()));
|
||||
cmisService.createRelationship(repositoryId, properties, null, null, null, null);
|
||||
|
||||
return "";
|
||||
|
||||
};
|
||||
}, CmisVersion.CMIS_1_1);
|
||||
}
|
||||
finally
|
||||
{
|
||||
AuthenticationUtil.popAuthentication();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMNT10529() throws Exception
|
||||
|
Reference in New Issue
Block a user