public static CmisRepositoryCapabilitiesType convert(RepositoryCapabilities capabilities, CmisVersion cmisVersion) {
if (capabilities == null) {
return null;
}
CmisRepositoryCapabilitiesType result = new CmisRepositoryCapabilitiesType();
result.setCapabilityACL(convert(EnumCapabilityACL.class, capabilities.getAclCapability()));
result.setCapabilityAllVersionsSearchable(capabilities.isAllVersionsSearchableSupported());
result.setCapabilityChanges(convert(EnumCapabilityChanges.class, capabilities.getChangesCapability()));
result.setCapabilityContentStreamUpdatability(convert(EnumCapabilityContentStreamUpdates.class,
capabilities.getContentStreamUpdatesCapability()));
result.setCapabilityGetDescendants(capabilities.isGetDescendantsSupported());
result.setCapabilityGetFolderTree(capabilities.isGetFolderTreeSupported());
if (cmisVersion != CmisVersion.CMIS_1_0) {
result.setCapabilityOrderBy(convert(EnumCapabilityOrderBy.class, capabilities.getOrderByCapability()));
}
result.setCapabilityJoin(convert(EnumCapabilityJoin.class, capabilities.getJoinCapability()));
result.setCapabilityMultifiling(capabilities.isMultifilingSupported());
result.setCapabilityPWCSearchable(capabilities.isPwcSearchableSupported());
result.setCapabilityPWCUpdatable(capabilities.isPwcUpdatableSupported());
result.setCapabilityQuery(convert(EnumCapabilityQuery.class, capabilities.getQueryCapability()));
result.setCapabilityRenditions(convert(EnumCapabilityRendition.class, capabilities.getRenditionsCapability()));
result.setCapabilityUnfiling(capabilities.isUnfilingSupported());
result.setCapabilityVersionSpecificFiling(capabilities.isVersionSpecificFilingSupported());
if (cmisVersion != CmisVersion.CMIS_1_0) {
if (capabilities.getCreatablePropertyTypes() != null) {
CreatablePropertyTypes creatablePropertyTypes = capabilities.getCreatablePropertyTypes();
CmisCreatablePropertyTypesType target = new CmisCreatablePropertyTypesType();
result.setCapabilityCreatablePropertyTypes(target);
if (creatablePropertyTypes.canCreate() != null) {
for (PropertyType pt : creatablePropertyTypes.canCreate()) {
target.getCanCreate().add(convert(EnumPropertyType.class, pt));
}
}
convertExtension(creatablePropertyTypes, target);
}
if (capabilities.getNewTypeSettableAttributes() != null) {
NewTypeSettableAttributes newTypeSettableAttributes = capabilities.getNewTypeSettableAttributes();
CmisNewTypeSettableAttributes target = new CmisNewTypeSettableAttributes();
result.setCapabilityNewTypeSettableAttributes(target);
target.setId(newTypeSettableAttributes.canSetId() == null ? true : newTypeSettableAttributes.canSetId());
target.setLocalName(newTypeSettableAttributes.canSetLocalName() == null ? true
: newTypeSettableAttributes.canSetLocalName());
target.setLocalNamespace(newTypeSettableAttributes.canSetLocalNamespace() == null ? true