}
private PropertyDefinitionTemplate getPropertyDefinition(final javax.jcr.nodetype.NodeTypeManager ntm,
final ValueFactory valueFactory,
final PropertyDefDescriptor field) throws RepositoryException {
final PropertyDefinitionTemplate pdt = ntm.createPropertyDefinitionTemplate();
if (field.getJcrName() != null) {
pdt.setName(field.getJcrName());
} else {
pdt.setName(field.getFieldName());
}
if (field.getJcrType() != null) {
try {
pdt.setRequiredType(PropertyType.valueFromName(field.getJcrType()));
} catch (IllegalArgumentException e) {
log.warn("Invalid property type '{}' for '{}'. Set default to String type", field.getJcrType(), field.getJcrName());
pdt.setRequiredType(PropertyType.STRING);
}
} else {
log.info("No property type set for {}. Setting 'String' type.", field.getJcrName());
pdt.setRequiredType(PropertyType.STRING);
}
int onParentVersion = OnParentVersionAction.IGNORE;
if (field.getJcrOnParentVersion() != null &&
field.getJcrOnParentVersion().length() > 0) {
onParentVersion = OnParentVersionAction.valueFromName(field.getJcrOnParentVersion());
}
pdt.setOnParentVersion(onParentVersion);
pdt.setAutoCreated(field.isJcrAutoCreated());
pdt.setAvailableQueryOperators(new String[0]);
pdt.setFullTextSearchable(true);
pdt.setMandatory(field.isJcrMandatory());
pdt.setMultiple(field.isJcrMultiple());
pdt.setOnParentVersion(onParentVersion);
pdt.setProtected(field.isJcrProtected());
pdt.setQueryOrderable(true);
if (field instanceof FieldDescriptor) {
FieldDescriptor f = (FieldDescriptor) field;
if (f.getJcrDefaultValue() != null) {
if (pdt.getRequiredType() == PropertyType.STRING) {
Value[] vals = {valueFactory.createValue(f.getJcrDefaultValue())};
pdt.setDefaultValues(vals);
} else {
log.warn("Can only set default value for String properties. Skip for field '{}'", field.getJcrName());
}
}
pdt.setValueConstraints(f.getJcrValueConstraints());
}
return pdt;
}