}
@SuppressWarnings("deprecation")
@Nonnull
protected GenericDescriptors createDescriptors() {
final ValueFactory valueFactory = new SimpleValueFactory();
final Value trueValue = valueFactory.createValue(true);
final Value falseValue = valueFactory.createValue(false);
GenericDescriptors gd = new GenericDescriptors()
.put(IDENTIFIER_STABILITY, valueFactory.createValue(Repository.IDENTIFIER_STABILITY_METHOD_DURATION), true, true)
.put(LEVEL_1_SUPPORTED, trueValue, true, true)
.put(LEVEL_2_SUPPORTED, trueValue, true, true)
.put(OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_AUTOCREATED_DEFINITIONS_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_INHERITANCE, valueFactory.createValue(NODE_TYPE_MANAGEMENT_INHERITANCE_SINGLE), true, true)
.put(NODE_TYPE_MANAGEMENT_MULTIPLE_BINARY_PROPERTIES_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_MULTIVALUED_PROPERTIES_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_ORDERABLE_CHILD_NODES_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_OVERRIDES_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_PRIMARY_ITEM_NAME_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_PROPERTY_TYPES,
new Value[]{
valueFactory.createValue(PropertyType.TYPENAME_STRING),
valueFactory.createValue(PropertyType.TYPENAME_BINARY),
valueFactory.createValue(PropertyType.TYPENAME_LONG),
valueFactory.createValue(PropertyType.TYPENAME_LONG),
valueFactory.createValue(PropertyType.TYPENAME_DOUBLE),
valueFactory.createValue(PropertyType.TYPENAME_DECIMAL),
valueFactory.createValue(PropertyType.TYPENAME_DATE),
valueFactory.createValue(PropertyType.TYPENAME_BOOLEAN),
valueFactory.createValue(PropertyType.TYPENAME_NAME),
valueFactory.createValue(PropertyType.TYPENAME_PATH),
valueFactory.createValue(PropertyType.TYPENAME_REFERENCE),
valueFactory.createValue(PropertyType.TYPENAME_WEAKREFERENCE),
valueFactory.createValue(PropertyType.TYPENAME_URI),
valueFactory.createValue(PropertyType.TYPENAME_UNDEFINED)
}, false, true)
.put(NODE_TYPE_MANAGEMENT_RESIDUAL_DEFINITIONS_SUPPORTED, trueValue, true, true)
// SNS are not supported (OAK-1224)
.put(NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED, falseValue, true, true)
.put(NODE_TYPE_MANAGEMENT_VALUE_CONSTRAINTS_SUPPORTED, trueValue, true, true)
.put(NODE_TYPE_MANAGEMENT_UPDATE_IN_USE_SUPORTED, falseValue, true, true)
.put(OPTION_ACCESS_CONTROL_SUPPORTED, trueValue, true, true)
.put(OPTION_JOURNALED_OBSERVATION_SUPPORTED, falseValue, true, true)
.put(OPTION_LIFECYCLE_SUPPORTED, falseValue, true, true)
// locking support added via JCR layer
.put(OPTION_LOCKING_SUPPORTED, falseValue, true, true)
.put(OPTION_OBSERVATION_SUPPORTED, trueValue, true, true)
.put(OPTION_NODE_AND_PROPERTY_WITH_SAME_NAME_SUPPORTED,
supportsSameNameNodeAndProperties() ? trueValue : falseValue, true, true)
.put(OPTION_QUERY_SQL_SUPPORTED, falseValue, true, true)
.put(OPTION_RETENTION_SUPPORTED, falseValue, true, true)
.put(OPTION_SHAREABLE_NODES_SUPPORTED, falseValue, true, true)
// todo: let plugin set the descriptor
.put(OPTION_SIMPLE_VERSIONING_SUPPORTED, falseValue, true, true)
.put(OPTION_TRANSACTIONS_SUPPORTED, falseValue, true, true)
.put(OPTION_UNFILED_CONTENT_SUPPORTED, falseValue, true, true)
.put(OPTION_UPDATE_MIXIN_NODE_TYPES_SUPPORTED, trueValue, true, true)
.put(OPTION_UPDATE_PRIMARY_NODE_TYPE_SUPPORTED, trueValue, true, true)
.put(OPTION_VERSIONING_SUPPORTED, trueValue, true, true)
// TODO OAK-118
.put(OPTION_WORKSPACE_MANAGEMENT_SUPPORTED, falseValue, true, true)
// xml export support added via JCR layer
.put(OPTION_XML_EXPORT_SUPPORTED, falseValue, true, true)
// xml import support added via JCR layer
.put(OPTION_XML_IMPORT_SUPPORTED, falseValue, true, true)
// TODO OAK-827
.put(OPTION_ACTIVITIES_SUPPORTED, falseValue, true, true)
// TODO OAK-1403
.put(OPTION_BASELINES_SUPPORTED, falseValue, true, true)
.put(QUERY_FULL_TEXT_SEARCH_SUPPORTED, falseValue, true, true)
.put(QUERY_JOINS, valueFactory.createValue(QUERY_JOINS_NONE), true, true)
.put(QUERY_LANGUAGES, new Value[0], false, true)
.put(QUERY_STORED_QUERIES_SUPPORTED, falseValue, true, true)
.put(QUERY_XPATH_DOC_ORDER, falseValue, true, true)
.put(QUERY_XPATH_POS_INDEX, falseValue, true, true)
.put(REP_NAME_DESC, valueFactory.createValue("Apache Jackrabbit Oak"), true, true)
.put(REP_VERSION_DESC, valueFactory.createValue(getVersion()), true, true)
.put(REP_VENDOR_DESC, valueFactory.createValue("The Apache Software Foundation"), true, true)
.put(REP_VENDOR_URL_DESC, valueFactory.createValue("http://www.apache.org/"), true, true)
.put(SPEC_NAME_DESC, valueFactory.createValue("Content Repository for Java Technology API"), true, true)
.put(SPEC_VERSION_DESC, valueFactory.createValue("2.0"), true, true)
.put(WRITE_SUPPORTED, trueValue, true, true);
// jackrabbit API specific descriptors
gd.put(JackrabbitRepository.OPTION_USER_MANAGEMENT_SUPPORTED, falseValue, true, false);
gd.put(JackrabbitRepository.OPTION_PRINCIPAL_MANAGEMENT_SUPPORTED, falseValue, true, false);
gd.put(JackrabbitRepository.OPTION_PRIVILEGE_MANAGEMENT_SUPPORTED, falseValue, true, false);