public static CmisTypeDefinitionType convert(TypeDefinition typeDefinition) {
if (typeDefinition == null) {
return null;
}
CmisTypeDefinitionType result = null;
if (typeDefinition instanceof DocumentTypeDefinition) {
result = new CmisTypeDocumentDefinitionType();
DocumentTypeDefinition docTypeDefintion = (DocumentTypeDefinition) typeDefinition;
((CmisTypeDocumentDefinitionType) result).setVersionable(convertBoolean(docTypeDefintion.isVersionable(),
false));
((CmisTypeDocumentDefinitionType) result).setContentStreamAllowed(convert(EnumContentStreamAllowed.class,
docTypeDefintion.getContentStreamAllowed()));
} else if (typeDefinition instanceof FolderTypeDefinition) {
result = new CmisTypeFolderDefinitionType();
} else if (typeDefinition instanceof RelationshipTypeDefinition) {
result = new CmisTypeRelationshipDefinitionType();
RelationshipTypeDefinition relationshipTypeDefinition = (RelationshipTypeDefinition) typeDefinition;
if (relationshipTypeDefinition.getAllowedSourceTypeIds() != null) {
for (String type : relationshipTypeDefinition.getAllowedSourceTypeIds()) {
((CmisTypeRelationshipDefinitionType) result).getAllowedSourceTypes().add(type);
}
}
if (relationshipTypeDefinition.getAllowedTargetTypeIds() != null) {
for (String type : relationshipTypeDefinition.getAllowedTargetTypeIds()) {
((CmisTypeRelationshipDefinitionType) result).getAllowedTargetTypes().add(type);
}
}
} else if (typeDefinition instanceof PolicyTypeDefinition) {
result = new CmisTypePolicyDefinitionType();
} else {
return null;
}
result.setBaseId(convert(EnumBaseObjectTypeIds.class, typeDefinition.getBaseTypeId()));
result.setControllableACL(convertBoolean(typeDefinition.isControllableAcl(), false));
result.setControllablePolicy(convertBoolean(typeDefinition.isControllablePolicy(), false));
result.setCreatable(convertBoolean(typeDefinition.isCreatable(), false));
result.setDescription(typeDefinition.getDescription());
result.setDisplayName(typeDefinition.getDisplayName());
result.setFileable(convertBoolean(typeDefinition.isFileable(), false));
result.setFulltextIndexed(convertBoolean(typeDefinition.isFulltextIndexed(), false));
result.setId(typeDefinition.getId());
result.setIncludedInSupertypeQuery(convertBoolean(typeDefinition.isIncludedInSupertypeQuery(), false));
result.setLocalName(typeDefinition.getLocalName());
result.setLocalNamespace(typeDefinition.getLocalNamespace());
result.setParentId(typeDefinition.getParentTypeId());
result.setQueryable(convertBoolean(typeDefinition.isQueryable(), false));
result.setQueryName(typeDefinition.getQueryName());
if (typeDefinition.getPropertyDefinitions() != null) {
for (PropertyDefinition<?> propDef : typeDefinition.getPropertyDefinitions().values()) {
result.getPropertyDefinition().add(convert(propDef));
}
}
// handle extensions
convertExtension(typeDefinition, result);