private PropertyDefinitionTemplate getPropertyDefinition()

in src/main/java/org/apache/jackrabbit/ocm/nodemanagement/impl/NodeTypeManagerImpl.java [220:273]


    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;
    }