public static TypeDefinition convert(CmisTypeDefinitionType typeDefinition) {
if (typeDefinition == null) {
return null;
}
AbstractTypeDefinition result = null;
if (typeDefinition instanceof CmisTypeFolderDefinitionType) {
result = new FolderTypeDefinitionImpl();
} else if (typeDefinition instanceof CmisTypeDocumentDefinitionType) {
result = new DocumentTypeDefinitionImpl();
((DocumentTypeDefinitionImpl) result).setContentStreamAllowed(convert(ContentStreamAllowed.class,
((CmisTypeDocumentDefinitionType) typeDefinition).getContentStreamAllowed()));
((DocumentTypeDefinitionImpl) result).setIsVersionable(((CmisTypeDocumentDefinitionType) typeDefinition)
.isVersionable());
} else if (typeDefinition instanceof CmisTypeRelationshipDefinitionType) {
result = new RelationshipTypeDefinitionImpl();
((RelationshipTypeDefinitionImpl) result)
.setAllowedSourceTypes(((CmisTypeRelationshipDefinitionType) typeDefinition)
.getAllowedSourceTypes());
((RelationshipTypeDefinitionImpl) result)
.setAllowedTargetTypes(((CmisTypeRelationshipDefinitionType) typeDefinition)
.getAllowedTargetTypes());
} else if (typeDefinition instanceof CmisTypePolicyDefinitionType) {
result = new PolicyTypeDefinitionImpl();
} else {
throw new CmisRuntimeException("Type '" + typeDefinition.getId() + "' does not match a base type!");
}
result.setBaseTypeId(convert(BaseTypeId.class, typeDefinition.getBaseId()));
result.setDescription(typeDefinition.getDescription());
result.setDisplayName(typeDefinition.getDisplayName());
result.setId(typeDefinition.getId());
result.setIsControllableAcl(typeDefinition.isControllableACL());
result.setIsControllablePolicy(typeDefinition.isControllablePolicy());
result.setIsCreatable(typeDefinition.isCreatable());
result.setIsFileable(typeDefinition.isFileable());
result.setIsFulltextIndexed(typeDefinition.isFulltextIndexed());
result.setIsIncludedInSupertypeQuery(typeDefinition.isIncludedInSupertypeQuery());
result.setIsQueryable(typeDefinition.isQueryable());
result.setLocalName(typeDefinition.getLocalName());
result.setLocalNamespace(typeDefinition.getLocalNamespace());
result.setParentTypeId(typeDefinition.getParentId());
result.setQueryName(typeDefinition.getQueryName());
for (CmisPropertyDefinitionType propertyDefinition : typeDefinition.getPropertyDefinition()) {
result.addPropertyDefinition(convert(propertyDefinition));
}
// handle extensions
convertExtension(typeDefinition, result);