Class JsonSchema
java.lang.Object
org.forgerock.opendj.rest2ldap.schema.JsonSchema
Utility methods for obtaining JSON syntaxes and matching rules. See the package documentation for more detail.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumJSON value validation policies. -
Field Summary
FieldsModifier and TypeFieldDescriptionMatching rule option controlling whether JSON string comparisons should be case-sensitive.static final StringThe OID of the case sensitive JSON equality matching rule.static final StringThe OID of the case sensitive JSON query equality matching rule.static final StringThe OID of the case insensitive JSON equality matching rule.static final StringThe OID of the case insensitive JSON query equality matching rule.static final StringThe OID of the jsonFirstComponentCaseExactJsonQueryMatch equality matching rule.static final StringThe OID of the jsonFirstComponentCaseIgnoreJsonQueryMatch equality matching rule.static final StringThe OID of the case sensitive nameAndJsonCaseExactJsonIdEqualityMatch equality matching rule.static final StringThe OID of the case insensitive nameAndJsonCaseIgnoreJsonIdEqualityMatch equality matching rule.static final StringThe OID of the case insensitive nameAndJsonCaseIgnoreJsonQueryFilterMatch equality matching rule.static final StringThe OID of the nameAndJsonEqualityMatchingRule equality matching rule.Matching rule option controlling whether JSON string comparisons should ignore white-space.static final Option<Collection<String>>Matching rule option controlling which JSON fields should be indexed by the matching rule.static final StringThe OID of the JSON attribute syntax.static final StringThe OID of the JSON query attribute syntax.static final StringThe OID of the Name and JSON query filter assertion syntax.static final StringThe OID of the Name and JSON attribute syntax.static final Option<JsonSchema.ValidationPolicy>Schema option controlling syntax validation for JSON based attributes. -
Method Summary
Modifier and TypeMethodDescriptionstatic SchemaBuilderAdds the syntaxes and matching rules required by for JSON attribute support to the provided schema builder.static ObjectbyteStringToJson(ByteString value) Parses the provided byte string as a JSON value.byteStringToNameAndJson(Schema schema, ByteString value) Decodes the provided value as a Name and JSON value.static DnbyteStringToNameWithoutJson(Schema schema, ByteString value) Decodes the provided value as a Name and JSON value but without decoding the JSON value.static MatchingRuleReturns thejsonMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.5".static MatchingRuleReturns thejsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.2".static StringReturns the extensible JSON ordering matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.6:".static MatchingRuleReturns thejsonMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.4".static MatchingRuleReturns thejsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10".static SchemaReturns aSchemacontaining thecore schemaand JSON syntaxes and matching rules.static MatchingRuleReturns thejsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.8".static MatchingRuleReturns thejsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.9".static SyntaxReturns the JSON Query attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.2".static SyntaxReturns the JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.1".static MatchingRuleReturns the "nameAndJsonCaseExactJsonIdEqualityMatch" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.11".static MatchingRuleReturns the "nameAndJsonCaseIgnoreJsonIdEqualityMatch" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10".static MatchingRuleReturns the "1.3.6.1.4.1.36733.2.1.4.12" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.12".static MatchingRuleReturns thenameAndJsonEqualityMatchingRulematching rule having the OID "1.3.6.1.4.1.36733.2.1.4.7".static SyntaxReturns the Name with JSON query filter assertion syntax having the OID "1.3.6.1.4.1.36733.2.1.3.13".static SyntaxReturns the Name with JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.12".static ByteStringjsonToByteString(Object value) Converts a JSONObjectto aByteStringrepresentation.static ByteStringnameAndJsonToByteString(ByteString nameAndJsonValue, Dn newName) static ByteStringnameAndJsonToByteString(Dn name, Object json) static MatchingRuleImplnewJsonEqualityMatchingRuleImpl(Collection<JsonPointer> keys, Options options) Creates a new custom JSON equality matching rule implementation with the provided matching rule name and options.static MatchingRuleImplnewJsonOrderingMatchingRuleImpl(List<JsonPointer> keys, Options options) Creates a new custom JSON ordering matching rule implementation with the provided matching rule name and options.static MatchingRuleImplnewJsonQueryEqualityMatchingRuleImpl(String matchingRuleName, Options options) Creates a new custom JSON query equality matching rule implementation with the provided matching rule name and options.static MatchingRuleImplnewNameAndJsonQueryEqualityMatchingRuleImpl(String matchingRuleName, Options options) Creates a new custom NameAndJson query equality matching rule implementation with provided matching rule name and options.
-
Field Details
-
VALIDATION_POLICY
Schema option controlling syntax validation for JSON based attributes. By default this compatibility option is set toJsonSchema.ValidationPolicy.STRICT. -
CASE_SENSITIVE_STRINGS
Matching rule option controlling whether JSON string comparisons should be case-sensitive. By default this compatibility option is set tofalsemeaning that case will be ignored.This option must be provided when constructing a JSON matching rule using
newJsonQueryEqualityMatchingRuleImpl(java.lang.String, org.forgerock.util.Options), and cannot be overridden at the schema level. -
IGNORE_WHITE_SPACE
Matching rule option controlling whether JSON string comparisons should ignore white-space. By default this compatibility option is set totruemeaning that leading and trailing white-space will be ignored and intermediate white-space will be reduced to a single white-space character.This option must be provided when constructing a JSON matching rule using
newJsonQueryEqualityMatchingRuleImpl(java.lang.String, org.forgerock.util.Options), and cannot be overridden at the schema level. -
INDEXED_FIELD_PATTERNS
Matching rule option controlling which JSON fields should be indexed by the matching rule. By default all fields will be indexed. To restrict the set of indexed fields specify a list whose values are wild-card patterns for matching against JSON pointers. Patterns are JSON pointers where "*" represents zero or more characters in a single path element, and "**" represents any number of path elements. For example:Pattern examples Pattern Matches Doesn't match /aaa/bbb/ccc /aaa/bbb/ccc /aaa/bbb/ccc/ddd
/aaa/bbb/cccc/aaa/b*/ccc /aaa/bbb/ccc
/aaa/bxx/ccc/aaa/xxx/ccc
/aaa/bbb/aaa/**/ddd /aaa/ddd
/aaa/xxx/yyy/ddd/aaa/bbb/ccc /aaa/** /aaa
/aaa/bbb
/aaa/bbb/ccc/aa -
SYNTAX_JSON_OID
The OID of the JSON attribute syntax.- See Also:
-
SYNTAX_JSON_QUERY_OID
The OID of the JSON query attribute syntax.- See Also:
-
SYNTAX_NAME_AND_JSON_WITH_ID_OID
The OID of the Name and JSON attribute syntax.- See Also:
-
EMR_NAME_AND_JSON_OID
The OID of the nameAndJsonEqualityMatchingRule equality matching rule.- See Also:
-
EMR_JSON_FIRST_COMPONENT_CASE_IGNORE_JSON_QUERY_OID
The OID of the jsonFirstComponentCaseIgnoreJsonQueryMatch equality matching rule.- See Also:
-
EMR_JSON_FIRST_COMPONENT_CASE_EXACT_JSON_QUERY_OID
The OID of the jsonFirstComponentCaseExactJsonQueryMatch equality matching rule.- See Also:
-
EMR_NAME_AND_JSON_CASE_IGNORE_JSON_ID_OID
The OID of the case insensitive nameAndJsonCaseIgnoreJsonIdEqualityMatch equality matching rule.- See Also:
-
EMR_NAME_AND_JSON_CASE_EXACT_JSON_ID_OID
The OID of the case sensitive nameAndJsonCaseExactJsonIdEqualityMatch equality matching rule.- See Also:
-
EMR_CASE_IGNORE_JSON_ID_OID
The OID of the case insensitive JSON equality matching rule.- See Also:
-
EMR_CASE_EXACT_JSON_ID_OID
The OID of the case sensitive JSON equality matching rule.- See Also:
-
EMR_CASE_IGNORE_JSON_QUERY_OID
The OID of the case insensitive JSON query equality matching rule.- See Also:
-
EMR_CASE_EXACT_JSON_QUERY_OID
The OID of the case sensitive JSON query equality matching rule.- See Also:
-
SYNTAX_NAME_AND_JSON_QUERY_FILTER_ASSERTION_OID
The OID of the Name and JSON query filter assertion syntax.- See Also:
-
EMR_NAME_AND_JSON_CASE_IGNORE_JSON_QUERY_FILTER_OID
The OID of the case insensitive nameAndJsonCaseIgnoreJsonQueryFilterMatch equality matching rule.- See Also:
-
-
Method Details
-
getInstance
Returns aSchemacontaining thecore schemaand JSON syntaxes and matching rules.- Returns:
- The schema.
-
getNameAndJsonWithIdSyntax
Returns the Name with JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.12". Attribute values of this syntax must be a valid DN, prepended with a JSON object with an_idproperty. Example:attribute: {"_id": "anId", "json": "value"}uid=user.2 attribute: {"_id": "anId", json": "valueForEmptyDn"}By default JSON properties will be ignored by thenameAndJsonEqualityMatchingRulematching rule, although this may be overridden when defining individual attribute types (see:getNameAndJsonCaseIgnoreJsonIdMatchingRule()andgetNameAndJsonCaseExactJsonIdMatchingRule()- Returns:
- The JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.12".
-
getNameAndJsonQueryFilterAssertionSyntax
Returns the Name with JSON query filter assertion syntax having the OID "1.3.6.1.4.1.36733.2.1.3.13". Bytestring matching this syntax are made of a query filter surrounded by parenthesis followed by a DN. Example:("field" eq "value")uid=user.2- Returns:
- The Name with JSON query filter assertion syntax having the OID "1.3.6.1.4.1.36733.2.1.3.13".
-
getJsonSyntax
Returns the JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.1". Attribute values of this syntax must be valid JSON. Use theVALIDATION_POLICYschema option to control the degree of syntax enforcement. By default JSON attributes will support equality matching using thejsonQueryMatchmatching rule, although this may be overridden when defining individual attribute types.- Returns:
- The JSON attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.1".
-
getJsonQuerySyntax
Returns the JSON Query attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.2". Attribute values of this syntax must be valid CREST JSONquery filterstrings as defined inQueryFilterParser.- Returns:
- The JSON Query attribute syntax having the OID "1.3.6.1.4.1.36733.2.1.3.2".
-
getNameAndJsonMatchingRule
Returns thenameAndJsonEqualityMatchingRulematching rule having the OID "1.3.6.1.4.1.36733.2.1.4.7". This matching rule will compare the DN part of the attribute while ignoring the JSON part.- Returns:
- The
nameAndJsonEqualityMatchingRulematching rule having the OID "1.3.6.1.4.1.36733.2.1.4.7".
-
getNameAndJsonCaseIgnoreJsonIdMatchingRule
Returns the "nameAndJsonCaseIgnoreJsonIdEqualityMatch" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10". This matching rule will compare the DN part of the attribute as well as the_idmember of the JSON part. If the_idmember has a string value, the matching rule will use a case insensitive string comparison, and will ignore white space.- Returns:
- The
nameAndJsonCaseIgnoreJsonIdEqualityMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10".
-
getNameAndJsonCaseIgnoreJsonQueryFilterMatchingRule
Returns the "1.3.6.1.4.1.36733.2.1.4.12" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.12". This matching rule will compare the DN part of the attribute as well as the JSON part that matches a query filter. The matching rule's assertion syntax is aCREST JSON query filter. This matching rule will ignore the case when comparing JSON strings as well as ignoring white spaces. In addition, all JSON fields will be indexed if indexing is enabled.- Returns:
- The
nameAndJsonCaseIgnoreJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.12".
-
getNameAndJsonCaseExactJsonIdMatchingRule
Returns the "nameAndJsonCaseExactJsonIdEqualityMatch" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.11". This matching rule will compare the DN part of the attribute as well as the_idmember of the JSON part. If the_idmember has a string value, the matching rule will use a case sensitive string comparison, and will ignore white space.- Returns:
- The "nameAndJsonCaseExactJsonIdEqualityMatch" matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.11".
-
getCaseIgnoreJsonIdMatchingRule
Returns thejsonMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.4". This matching rule will compare the _id member of JSON objects. If the _id member has a string value, the matching rule will use a case insensitive string comparison, and will ignore white space.- Returns:
- The
jsonMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.4".
-
getCaseExactJsonIdMatchingRule
Returns thejsonMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.5". This matching rule will compare the _id member of JSON objects. If the _id member has a string value, the matching rule will use a case sensitive string comparison, and will ignore white space.- Returns:
- The @code jsonMatch} matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.5".
-
getCaseIgnoreJsonQueryMatchingRule
Returns thejsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10". The matching rule's assertion syntax is aCREST JSON query filter. This matching rule will ignore case when comparing JSON strings as well as ignoring white space. In addition, all JSON fields will be indexed if indexing is enabled.- Returns:
- The
jsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.10".
-
getCaseExactJsonQueryMatchingRule
Returns thejsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.2". The matching rule's assertion syntax is aCREST JSON query filter. This matching rule will check the case when comparing JSON strings as well as ignoring ignore white space. In addition, all JSON fields will be indexed if indexing is enabled.- Returns:
- The
jsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.2".
-
getJsonFirstComponentCaseIgnoreJsonQueryMatchingRule
Returns thejsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.9". The matching rule's assertion syntax is aName and JSON. This matching rule will ignore case when comparing JSON strings as well as ignoring ignore white space. In addition, all JSON fields will be indexed if indexing is enabled.- Returns:
- The
jsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.9".
-
getJsonFirstComponentCaseExactJsonQueryMatchingRule
Returns thejsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.8". The matching rule's assertion syntax is aName and JSON. This matching rule will check the case when comparing JSON strings as well as ignoring ignore white space. In addition, all JSON fields will be indexed if indexing is enabled.- Returns:
- The
jsonFirstComponentJsonQueryMatchmatching rule having the OID "1.3.6.1.4.1.36733.2.1.4.8".
-
getCaseIgnoreExtensibleJsonOrderingMatchingRule
Returns the extensible JSON ordering matching rule having the OID "1.3.6.1.4.1.36733.2.1.4.6:".The returned string is expected to be concatenated with a colon (:) and the colon (:) separated list of the JSON pointers referencing the entries' fields which must be taken into consideration for the ordering.
- Returns:
- A string format to build an extensible ordering json matching rule.
-
newJsonEqualityMatchingRuleImpl
public static MatchingRuleImpl newJsonEqualityMatchingRuleImpl(Collection<JsonPointer> keys, Options options) Creates a new custom JSON equality matching rule implementation with the provided matching rule name and options.- Parameters:
keys- The list of JSON fields to use to normalize a JSON object.options- The options controlling the behavior of the matching rule.- Returns:
- The new custom JSON equality matching rule implementation.
- See Also:
-
newJsonOrderingMatchingRuleImpl
public static MatchingRuleImpl newJsonOrderingMatchingRuleImpl(List<JsonPointer> keys, Options options) Creates a new custom JSON ordering matching rule implementation with the provided matching rule name and options.- Parameters:
keys- The list of JSON fields to use to normalize a JSON object.options- The options controlling the behavior of the matching rule.- Returns:
- The new custom JSON ordering matching rule implementation.
- See Also:
-
newJsonQueryEqualityMatchingRuleImpl
public static MatchingRuleImpl newJsonQueryEqualityMatchingRuleImpl(String matchingRuleName, Options options) Creates a new custom JSON query equality matching rule implementation with the provided matching rule name and options. This method should be used when creating custom JSON matching rules whose behavior differs fromgetCaseIgnoreJsonQueryMatchingRule().- Parameters:
matchingRuleName- The name of the matching rule. This will be used as the index ID in attribute indexes so it must not collide with other indexes identifiers.options- The options controlling the behavior of the matching rule.- Returns:
- The new custom JSON query equality matching rule implementation.
- See Also:
-
newNameAndJsonQueryEqualityMatchingRuleImpl
public static MatchingRuleImpl newNameAndJsonQueryEqualityMatchingRuleImpl(String matchingRuleName, Options options) Creates a new custom NameAndJson query equality matching rule implementation with provided matching rule name and options. This method should be used to create custom NameAndJson matching rules that need to index only some JSON fields. This can be done by providing an optionINDEXED_FIELD_PATTERNSthat defines the JSON fields to index.- Parameters:
matchingRuleName- The name of the matching rule. This will be used as the index ID in attributes indexes of the underlying matching rule for the JSON part. So, it must not collide with other indexes identifiers.options- The options controlling the behavior of the matching rule.- Returns:
- a new custom NameAndJson query equality matching rule implementation.
-
addJsonSyntaxesAndMatchingRulesToSchema
Adds the syntaxes and matching rules required by for JSON attribute support to the provided schema builder.- Parameters:
builder- The schema builder to which the schema elements should be added.- Returns:
- The schema builder.
-
byteStringToJson
Parses the provided byte string as a JSON value. Invalid values will result in aLocalizedIllegalArgumentException.- Parameters:
value- The value to be parsed.- Returns:
- The parsed
JSONvalue. - Throws:
LocalizedIllegalArgumentException- Ifvalueis not valid JSON.
-
jsonToByteString
public static ByteString jsonToByteString(Object value) throws com.fasterxml.jackson.core.JsonProcessingException Converts a JSONObjectto aByteStringrepresentation.- Parameters:
value- The JSON object to be converted.- Returns:
- The
ByteStringrepresentation. - Throws:
com.fasterxml.jackson.core.JsonProcessingException- If conversion failed for some reason.
-
byteStringToNameAndJson
Decodes the provided value as a Name and JSON value. Invalid values will result in aLocalizedIllegalArgumentException.- Parameters:
schema- The schema to use to decode the value.value- The value to be decoded.- Returns:
- The decoded Name and JSON value.
- Throws:
LocalizedIllegalArgumentException- Ifvalueis not a valid Name and JSON.
-
byteStringToNameWithoutJson
Decodes the provided value as a Name and JSON value but without decoding the JSON value. Invalid values will result in aLocalizedIllegalArgumentException.- Parameters:
schema- The schema to use to decode the value.value- The value to be decoded.- Returns:
- The decoded name, ignoring the JSON value.
- Throws:
LocalizedIllegalArgumentException- Ifvalueis not a valid Name and JSON.
-
nameAndJsonToByteString
public static ByteString nameAndJsonToByteString(Dn name, Object json) throws com.fasterxml.jackson.core.JsonProcessingException - Parameters:
name- The name part.json- The associated JSON properties (ornull).- Returns:
- The encoded Name and JSON value.
- Throws:
com.fasterxml.jackson.core.JsonProcessingException- If conversion failed for some reason.
-
nameAndJsonToByteString
Encodes the providednewNameand the JSON contained innameAndJsonValueinto aByteString.This is an optimization allowing to change the
Dnof a Name And JSON value without having to fully decode the JSON part.- Parameters:
nameAndJsonValue- The encoded Name And JSON value.newName- The new name.- Returns:
- The encoded Name and JSON value.
-