04-28-2010 12:50 PM
Folder root = cmisSession.getRootFolder();
Map<String,String> newFolderProps = new HashMap<String, String>();
newFolderProps.put(PropertyIds.CMIS_OBJECT_TYPE_ID, "cmis:folder");
newFolderProps.put(PropertyIds.CMIS_NAME, "Test Folder 1");
//Method 1
Folder newFolder = root.createFolder(newFolderProps, null, null, null, cmisSession.getDefaultContext());
//Method 2
ObjectId rootId = cmisSession.createObjectId(root.getId());
ObjectId newFolderId = cmisSession.createFolder(newFolderProps, rootId, null, null, null);
Folder newFolder = (Folder)cmisSession.getObject(newFolderId);Exception in thread "main" org.apache.opencmis.commons.exceptions.CmisInvalidArgumentException: Type Id property required
at org.apache.opencmis.client.provider.spi.webservices.AbstractWebServicesService.convertException(AbstractWebServicesService.java:83)
at org.apache.opencmis.client.provider.spi.webservices.ObjectServiceImpl.createFolder(ObjectServiceImpl.java:166)
at org.apache.opencmis.client.runtime.PersistentFolderImpl.createFolder(PersistentFolderImpl.java:178)
at OpenCMISTest.runTest(OpenCMISTest.java:138)
at OpenCMISTest.main(OpenCMISTest.java:120)04-28-2010 01:31 PM
public PropertiesData convertProperties(Map<String, ?> properties, ObjectType type, Set<Updatability> updatabilityFilter) {
…
// get the type
if (type == null) {
Object typeId = properties.get(PropertyIds.CMIS_OBJECT_TYPE_ID);
if (!(typeId instanceof String)) {
throw new IllegalArgumentException("Type or type property must be set!");
}
type = session.getTypeDefinition(typeId.toString());
}
…
// the big loop
for (Map.Entry<String, ?> property : properties.entrySet()) {
…
String id = property.getKey();
Object value = property.getValue();
…
// get the property definition
PropertyDefinition<?> definition = type.getPropertyDefintions().get(id);
..
// check updatability
if (updatabilityFilter != null) {
if (!updatabilityFilter.contains(definition.getUpdatability())) {
continue;
}
}
…
}I can see that the definition reports the updatability as "READONLY" for the type property and thus it gets skipped, meaning that later on it complains that "cmis04-29-2010 05:52 AM
04-29-2010 06:34 AM
ArrayList<Property<?>> propertyData = new ArrayList<Property<?>>();
//Necessary properties
propertyData.add(session.getProvider().getObjectFactory().createPropertyStringData(PropertyIds.CMIS_NAME, "folderName"));
propertyData.add(session.getProvider().getObjectFactory().createPropertyIdData(PropertyIds.CMIS_OBJECT_TYPE_ID, "cmis:folder"));
//Create folder
session.getProvider().getObjectService().createFolder(
session.getRepositoryInfo().getId(), //Repository ID
session.getProvider().getObjectFactory().createPropertiesData(propertyData), //Properties
parentFolderId, //Parent folder ID
null, //Policies
null, //AccessControlList add
null, //AccessControlList remove
null); //ExtensionsData
The id of the folder is returned.04-29-2010 09:20 AM
04-29-2010 09:45 AM
04-29-2010 09:47 AM
04-30-2010 04:59 AM
04-30-2010 05:50 AM
05-04-2010 09:43 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.