mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
13.25.2014 549a31d40afdc9267d86009f40812c1dee4ee1cf
OPENDJ-1620 Unexpected log severity for some actions/commands


AciSyntax.java:
In valueIsAcceptable(), fixed first error by replacing call logger.error() with logger.warn().

Importer.java:
In endWriteTask(), fixed second error by replacing call logger.error() with logger.debug().

ReplicationDomain.java:
In initialize(), fixed third error by replacing call logger.error() with logger.debug().

BindRule.java:
Code cleanup

access_control*.properties:
Renamed ERR_ACI_* to WARN_ACI_* to match what the code was doing in OpenDJ 2.x.
12 files modified
444 ■■■■■ changed files
opendj3-server-dev/src/messages/messages/access_control.properties 36 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_de.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_es.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_fr.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_ja.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_ko.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_zh_CN.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control_zh_TW.properties 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/authorization/dseecompat/BindRule.java 243 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java 28 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/replication/service/ReplicationDomain.java 17 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/schema/AciSyntax.java 92 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/access_control.properties
@@ -47,14 +47,14 @@
#
# ORDINAL is an integer unique among other ordinals in this file
#
WARN_ACI_SYNTAX_GENERAL_PARSE_FAILED_1=The provided string  "%s" could \
WARN_ACI_SYNTAX_GENERAL_PARSE_FAILED_1=The provided string "%s" could \
 not be parsed as a valid Access Control Instruction (ACI) because it failed \
 general ACI syntax evaluation
WARN_ACI_SYNTAX_INVAILD_VERSION_2=The provided Access Control \
 Instruction (ACI) version value  "%s" is invalid, only the version 3.0 is \
 Instruction (ACI) version value "%s" is invalid, only the version 3.0 is \
 supported
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=The provided Access \
 Control Instruction access type value  "%s" is invalid. A valid access type \
 Control Instruction access type value "%s" is invalid. A valid access type \
 value is either allow or deny
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=The provided Access Control \
 Instruction (ACI) rights values "%s" are invalid. The rights must be a list \
@@ -63,10 +63,10 @@
 Instruction (ACI) rights keyword values "%s" are invalid. The valid rights \
 keyword values are one or more of the following: read, write, add, delete, \
 search, compare or the single value all
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=The provided Access \
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=The provided Access \
 Control Instruction (ACI) bind rule value "%s" is invalid because it is \
 missing a close parenthesis that corresponded to the initial open parenthesis
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=The provided Access Control \
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=The provided Access Control \
 Instruction (ACI) bind rule value "%s" is invalid. A valid bind rule value \
 must be in the following form: keyword operator "expression"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=The provided Access \
@@ -74,7 +74,7 @@
 keyword value is one of the following: userdn, groupdn, roledn, userattr,ip, \
 dns, dayofweek, timeofday or authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=The provided Access \
 Control Instruction (ACI) bind rule operator value  "%s" is invalid. A valid \
 Control Instruction (ACI) bind rule operator value "%s" is invalid. A valid \
 bind rule operator value is either '=' or "!="
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=The provided Access \
 Control Instruction (ACI) bind rule expression value corresponding to the \
@@ -84,14 +84,14 @@
 Access Control Instruction (ACI) bind rule boolean operator value "%s" is \
 invalid. A valid bind rule boolean operator value is either "OR" or "AND"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_OPERATOR_COMBO_12=The \
 provided Access Control Instruction (ACI) bind rule keyword string  "%s" is \
 provided Access Control Instruction (ACI) bind rule keyword string "%s" is \
 invalid for the bind rule operator string "%s"
WARN_ACI_SYNTAX_INVALID_USERDN_URL_13=The provided Access Control \
 Instruction (ACI) bind rule userdn expression failed to URL decode for the \
 following reason: %s
WARN_ACI_SYNTAX_INVALID_GROUPDN_EXPRESSION_16=The provided Access \
 Control Instruction (ACI) bind rule groupdn expression value "%s" is invalid. \
 A valid groupdn keyword expression  value requires one or more LDAP URLs in \
 A valid groupdn keyword expression value requires one or more LDAP URLs in \
 the following format: ldap:///groupdn [|| ldap:///groupdn] ... [|| \
 ldap:///groupdn]
WARN_ACI_SYNTAX_INVALID_GROUPDN_URL_17=The provided Access Control \
@@ -157,15 +157,15 @@
 Access Control Instruction (ACI) target keyword value "%s" was seen multiple \
 times in the ACI "%s"
WARN_ACI_SYNTAX_INVALID_TARGETS_OPERATOR_38=The provided Access \
 Control Instruction (ACI) target keyword operator value  "%s" is invalid. A \
 Control Instruction (ACI) target keyword operator value "%s" is invalid. A \
 valid target keyword operator value is either '=' or "!="
WARN_ACI_SYNTAX_INVALID_TARGETSCOPE_EXPRESSION_39=The provided Access \
 Control Instruction (ACI) targetscope expression operator value  "%s" is \
 Control Instruction (ACI) targetscope expression operator value "%s" is \
 invalid. A valid targetscope expression value is one of the following: one, \
 onelevel, subtree or subordinate
WARN_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION_40=The provided \
 Access Control Instruction (ACI) target expression value "%s" is invalid. A \
 valid target keyword expression  value requires a LDAP URL in the following \
 valid target keyword expression value requires a LDAP URL in the following \
 format: ldap:///distinguished_name_pattern
WARN_ACI_SYNTAX_TARGET_DN_NOT_DESCENDENTOF_41=The provided Access \
 Control Instruction (ACI) target expression DN value "%s" is invalid. The \
@@ -231,23 +231,23 @@
WARN_ACI_LOCALHOST_DOESNT_MATCH_CANONICAL_VALUE_61=The provided Access \
 Control Instruction (ACI) bind rule dns expression value "%s" references \
 hostname %s, but the canonical representation for that hostname is configured \
 to be %s.  The server will attempt to automatically interpret the correct \
 to be %s. The server will attempt to automatically interpret the correct \
 localhost value
WARN_ACI_HOSTNAME_DOESNT_MATCH_CANONICAL_VALUE_62=The provided Access \
 Control Instruction (ACI) bind rule dns expression value "%s" references \
 hostname %s, which resolves to IP address %s, but the canonical hostname for \
 that IP address is %s.  This likely means that the provided hostname will \
 that IP address is %s. This likely means that the provided hostname will \
 never match any clients
WARN_ACI_ERROR_CHECKING_CANONICAL_HOSTNAME_63=An error occurred while \
 attempting to determine whether hostname %s referenced in dns expression bind \
 rule "%s" used the correct canonical representation:  %s.  This likely means \
 rule "%s" used the correct canonical representation: %s. This likely means \
 that the provided hostname will never match any clients
INFO_ACI_ADD_LIST_GLOBAL_ACIS_66=Added %s Global Access Control Instruction \
 (ACI) attribute types to the access control evaluation engine
INFO_ACI_HANDLER_FAIL_PROCESS_GLOBAL_ACI_67=An unexpected error occurred \
 while processing the ds-cfg-global-aci attribute in configuration entry %s
INFO_ACI_HANDLER_FAIL_PROCESS_ACI_68=An unexpected error occurred while \
 processing the  aci attributes in the configuration system
 processing the aci attributes in the configuration system
WARN_PATTERN_DN_CONSECUTIVE_WILDCARDS_IN_VALUE_69=The pattern DN %s is \
 not valid because it contains two consecutive wildcards in an attribute value
WARN_PATTERN_DN_TYPE_CONTAINS_SUBSTRINGS_70=The pattern DN %s is not \
@@ -265,7 +265,7 @@
 expression contains invalid or duplicate tokens
WARN_ACI_SYNTAX_ROLEDN_NOT_SUPPORTED_75=The provided Access Control \
 Instruction (ACI) expression value "%s" is invalid because it contains the \
 roledn keyword, which is not supported,  replace it with the groupdn keyword
 roledn keyword, which is not supported, replace it with the groupdn keyword
WARN_ACI_SERVER_DECODE_FAILED_76=Failed to decode the Access Control \
 Instruction (ACI)%s
WARN_ACI_ENTER_LOCKDOWN_MODE_77=The server is being put into lockdown \
@@ -297,7 +297,7 @@
 the IPv4 address expression "%s" format was invalid
WARN_ACI_SYNTAX_INVALID_IPV4_VALUE_85=The provided Access Control \
 Instruction (ACI) bind rule IP address expression failed to parse because the \
 IPv4 address expression "%s" contains an invalid value.  All values of the \
 IPv4 address expression "%s" contains an invalid value. All values of the \
 address must be between 0 and 255
WARN_ACI_SYNTAX_IPV4_NOT_NUMERIC_86=The provided Access Control \
 Instruction (ACI) bind rule IP address expression failed to parse because the \
@@ -332,7 +332,7 @@
 extop keyword expression value requires one or more valid extended operation \
 request OID strings in the following format: oid [|| oid1] ... [|| oidN]
WARN_ACI_ATTRIBUTE_NOT_INDEXED_96=Backend %s does not have a \
 presence index defined for attribute type %s.  Access control initialization \
 presence index defined for attribute type %s. Access control initialization \
 may take a very long time to complete in this backend
WARN_ACI_SYNTAX_INVALID_SSF_FORMAT_97=The provided Access Control \
 Instruction (ACI) bind rule SSF expression "%s" failed to parse for \
opendj3-server-dev/src/messages/messages/access_control_de.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=Der angegebene Zugriffstypwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) ist ung\u00fcltig. Ein g\u00fcltiger Zugriffstypwert ist entweder "zulassen" oder "verweigern"
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=Die angegebenen Berechtigungswerte "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) sind ung\u00fcltig. Die Berechtigungen m\u00fcssen eine Liste bestehend aus 1 bis 6 durch Komma getrennte und in Klammern eingeschlossene Schl\u00fcsselw\u00f6rter sein
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=Die angegebenen Berechtigungsschl\u00fcsselwortwerte "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) sind ung\u00fcltig. Die g\u00fcltigen Berechtigungsschl\u00fcsselwortwerte sind eine oder mehrere der folgenden Werte: Lesen, Schreiben, Hinzuf\u00fcgen, Entfernen, Suchen, Vergleichen oder der Einzelwert Alle
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=Der angegebene Verbindungsregelwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) ist ung\u00fcltig, da die zur \u00f6ffnenden Klammer geh\u00f6rende schlie\u00dfende Klammer fehlt
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=Der angegebene Verbindungsregelwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) ist ung\u00fcltig. Die Form von g\u00fcltigen Verbindungsregelwerten ist: Schl\u00fcsselwort Operator "Ausdruck"
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=Der angegebene Verbindungsregelwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) ist ung\u00fcltig, da die zur \u00f6ffnenden Klammer geh\u00f6rende schlie\u00dfende Klammer fehlt
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=Der angegebene Verbindungsregelwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI) ist ung\u00fcltig. Die Form von g\u00fcltigen Verbindungsregelwerten ist: Schl\u00fcsselwort Operator "Ausdruck"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=Der angegebene Schl\u00fcsselwortwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI)-Verbindungsregel ist ung\u00fcltig. Ein g\u00fcltiger Schl\u00fcsselwortwert ist einer der folgenden Werte: userdn, groupdn, roledn, userattr, ip, dns, dayofweek, timeofday oder authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=Der angegebene Operatorwert "%s" f\u00fcr die Zugriffssteuerungsanweisung (ACI)-Verbindungsregel ist ung\u00fcltig. Ein g\u00fcltiger Operatorwert f\u00fcr die Verbindungsregel ist entweder '=' oder "!="
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=Der angegebene Ausdruckswert f\u00fcr die Zugriffssteuerungsanweisung (ACI)-Verbindungsregel, der dem Schl\u00fcsselwortwert "%s" entspricht, besitzt keinen Ausdruck. Die Form von g\u00fcltigen Verbindungsregelwerten ist: Schl\u00fcsselwort Operator "Ausdruck"
opendj3-server-dev/src/messages/messages/access_control_es.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=El valor de tipo de acceso de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) "%s" proporcionado no es v\u00e1lido. Un valor v\u00e1lido de tipo de acceso s\u00f3lo puede ser permitir o denegar
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=Los valores de derechos de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) "%s" proporcionados no son v\u00e1lidos Los derechos deben formar una lista de 1 a 6 palabras clave separadas por comas y escritas entre par\u00e9ntesis
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=Los valores de palabra clave de los derechos de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) "%s" proporcionados no son v\u00e1lidos Pueden emplearse uno o m\u00e1s de los siguientes valores v\u00e1lidos de palabra clave de los derechos: read, write, add, delete, search, compare o el valor all
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=El valor "%s" de la regla enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) proporcionado no es v\u00e1lido porque le falta el par\u00e9ntesis de cierre que corresponde al par\u00e9ntesis inicial de apertura
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=El valor "%s" de la regla enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) proporcionado no es v\u00e1lido. Un valor de la regla de enlace debe tener el siguiente formato: operador de palabra clave "expresi\u00f3n"
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=El valor "%s" de la regla enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) proporcionado no es v\u00e1lido porque le falta el par\u00e9ntesis de cierre que corresponde al par\u00e9ntesis inicial de apertura
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=El valor "%s" de la regla enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) proporcionado no es v\u00e1lido. Un valor de la regla de enlace debe tener el siguiente formato: operador de palabra clave "expresi\u00f3n"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=El valor de palabra clave de la regla de enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) "%s" proporcionado no es v\u00e1lido. Puede emplearse uno de los siguientes valores v\u00e1lidos de palabra clave: userdn, groupdn, roledn, userattr, ip, dns, dayofweek, timeofday o authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=El valor de operador de la regla de enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) "%s" proporcionado no es v\u00e1lido. Un valor v\u00e1lido de operador de la regla de enlace s\u00f3lo puede ser '=' o "!="
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=El valor de expresi\u00f3n de la regla de enlace de la instrucci\u00f3n de control de acceso (ACI, Access Control Instruction) proporcionado que se corresponde con el valor de palabra clave "%s" carece de expresi\u00f3n Un valor de la regla de enlace debe tener el siguiente formato: operador de palabra clave "expresi\u00f3n"
opendj3-server-dev/src/messages/messages/access_control_fr.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=La valeur de type d'acc\u00e8s de l'instruction de contr\u00f4le d'acc\u00e8s(ACI) fournie ("%s") n'est pas valide. Les valeurs de type d'acc\u00e8s valides sont allow et deny
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=Les valeurs de droits de l'instruction de contr\u00f4le d'acc\u00e8s\u00a0(ACI) fournie ("%s") ne sont pas valides. Les droits doivent \u00eatre entr\u00e9s sous la forme d'une liste de\u00a01 \u00e0 6\u00a0mots-cl\u00e9s s\u00e9par\u00e9s par des virgules et plac\u00e9s entre parenth\u00e8ses
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=Les valeurs de mots-cl\u00e9s de droits de l'instruction de contr\u00f4le d'acc\u00e8s\u00a0(ACI) fournie ("%s") ne sont pas valides. Les valeurs de mots-cl\u00e9s de droits valides sont un ou plusieurs des termes suivants\u00a0: read, write, add, delete, search, compare ou uniquement la valeur all
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=La valeur de la r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie "%s" est invalide car il manque une parenth\u00e8se de fermeture correspondant \u00e0 la parenth\u00e8se d'ouverture initiale
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=La valeur de la r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie "%s" est invalide. Pour \u00eatre valide, la valeur de la r\u00e8gle de liaison doit avoir le format suivant\u00a0: mot-cl\u00e9 op\u00e9rateur "expression"
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=La valeur de la r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie "%s" est invalide car il manque une parenth\u00e8se de fermeture correspondant \u00e0 la parenth\u00e8se d'ouverture initiale
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=La valeur de la r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie "%s" est invalide. Pour \u00eatre valide, la valeur de la r\u00e8gle de liaison doit avoir le format suivant\u00a0: mot-cl\u00e9 op\u00e9rateur "expression"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=La valeur de mot-cl\u00e9 de r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie ("%s") n'est pas valide. Les valeurs de mot-cl\u00e9 valides sont les suivantes\u00a0: userdn, groupdn, roledn, userattr, ip, dns, dayofweek, timeofday ou authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=La valeur d'op\u00e9rateur de r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie ("%s") n'est pas valide. Les valeurs d'op\u00e9rateur valides sont '=' et '!='
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=Il manque une expression dans la valeur d'expression de r\u00e8gle de liaison de l'instruction de contr\u00f4le d'acc\u00e8s (ACI) fournie correspondant au mot-cl\u00e9 "%s". Pour \u00eatre valide, la valeur de la r\u00e8gle de liaison doit avoir le format suivant\u00a0: mot-cl\u00e9 op\u00e9rateur "expression"
opendj3-server-dev/src/messages/messages/access_control_ja.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6709\u52b9\u306a\u30a2\u30af\u30bb\u30b9\u30bf\u30a4\u30d7\u5024\u306f\u3001allow \u307e\u305f\u306f deny \u3067\u3059
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u6a29\u9650\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6a29\u9650\u306f\u3001\u30b3\u30f3\u30de\u3067\u533a\u5207\u3063\u305f 1 \u304b\u3089 6 \u500b\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u306e\u30ea\u30b9\u30c8\u3092\u4e38\u62ec\u5f27\u3067\u56f2\u3093\u3060\u5f62\u5f0f\u3067\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u6a29\u9650\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6a29\u9650\u306e\u6709\u52b9\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u5024\u306f\u3001read\u3001write\u3001add\u3001delete\u3001search\u3001compare \u306e\u3046\u3061 1 \u3064\u4ee5\u4e0a\u3001\u307e\u305f\u306f all \u306e\u307f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6700\u521d\u306e\u958b\u59cb\u62ec\u5f27\u306b\u5bfe\u5fdc\u3059\u308b\u9589\u3058\u62ec\u5f27\u304c\u3042\u308a\u307e\u305b\u3093
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002 \u6709\u52b9\u306a\u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024\u306f\u3001\u6b21\u306e\u5f62\u5f0f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: \u30ad\u30fc\u30ef\u30fc\u30c9\u6f14\u7b97\u5b50 "\u5f0f"
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6700\u521d\u306e\u958b\u59cb\u62ec\u5f27\u306b\u5bfe\u5fdc\u3059\u308b\u9589\u3058\u62ec\u5f27\u304c\u3042\u308a\u307e\u305b\u3093
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002 \u6709\u52b9\u306a\u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024\u306f\u3001\u6b21\u306e\u5f62\u5f0f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: \u30ad\u30fc\u30ef\u30fc\u30c9\u6f14\u7b97\u5b50 "\u5f0f"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u6709\u52b9\u306a\u30ad\u30fc\u30ef\u30fc\u30c9\u5024\u306f\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: userdn\u3001groupdn\u3001roledn\u3001userattr\u3001ip\u3001dns\u3001dayofweek\u3001timeofday\u3001\u307e\u305f\u306f authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u306e\u6f14\u7b97\u5b50\u5024 "%s" \u306f\u7121\u52b9\u3067\u3059\u3002\u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u306e\u6709\u52b9\u306a\u6f14\u7b97\u5b50\u5024\u306f\u3001'=' \u307e\u305f\u306f "!=" \u306e\u3044\u305a\u308c\u304b\u3067\u3059
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=\u6307\u5b9a\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u547d\u4ee4 (ACI) \u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u5024 "%s" \u306b\u5bfe\u5fdc\u3059\u308b\u5f0f\u306e\u5024\u306b\u5f0f\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u6709\u52b9\u306a\u30d0\u30a4\u30f3\u30c9\u30eb\u30fc\u30eb\u5024\u306f\u3001\u6b21\u306e\u5f62\u5f0f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: \u30ad\u30fc\u30ef\u30fc\u30c9\u6f14\u7b97\u5b50 "\u5f0f"
opendj3-server-dev/src/messages/messages/access_control_ko.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=\uc81c\uacf5\ub41c \uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839 \uc561\uc138\uc2a4 \uc720\ud615 \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \uc561\uc138\uc2a4 \uc720\ud615 \uac12\uc740 allow \ub610\ub294 deny\uc785\ub2c8\ub2e4.
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \uad8c\ud55c \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uad8c\ud55c\uc740 1 - 6\uac1c\uc758 \ud0a4\uc6cc\ub4dc \ubaa9\ub85d\uc73c\ub85c \uc27c\ud45c\ub85c \uad6c\ubd84\ub418\uace0 \uad04\ud638\ub85c \ubb36\uc5ec \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \uad8c\ud55c \ud0a4\uc6cc\ub4dc \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \uad8c\ud55c \ud0a4\uc6cc\ub4dc \uac12\uc740 read, write, add, delete, search, compare \uc911 \ud558\ub098 \uc774\uc0c1\uc774\uac70\ub098 \ub2e8\uc77c \uac12 all\uc785\ub2c8\ub2e4.
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \uac12 \"%s\"\uc740(\ub294) \uccab \ubc88\uc9f8 \uc5ec\ub294 \uad04\ud638\uc5d0 \ud574\ub2f9\ud558\ub294 \ub2eb\ub294 \uad04\ud638\uac00 \uc5c6\uc73c\ubbc0\ub85c \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \ubc14\uc778\ub4dc \uaddc\uce59 \uac12\uc740 \ud0a4\uc6cc\ub4dc \uc5f0\uc0b0\uc790 "\ud45c\ud604\uc2dd" \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \uac12 \"%s\"\uc740(\ub294) \uccab \ubc88\uc9f8 \uc5ec\ub294 \uad04\ud638\uc5d0 \ud574\ub2f9\ud558\ub294 \ub2eb\ub294 \uad04\ud638\uac00 \uc5c6\uc73c\ubbc0\ub85c \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \ubc14\uc778\ub4dc \uaddc\uce59 \uac12\uc740 \ud0a4\uc6cc\ub4dc \uc5f0\uc0b0\uc790 "\ud45c\ud604\uc2dd" \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \ud0a4\uc6cc\ub4dc \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \ud0a4\uc6cc\ub4dc \uac12\uc740 userdn, groupdn, roledn, userattr, ip, dns, dayofweek, timeofday \ub610\ub294 authmethod \uc911 \ud558\ub098\uc785\ub2c8\ub2e4.
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=\uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \uc5f0\uc0b0\uc790 \uac12 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \ubc14\uc778\ub4dc \uaddc\uce59 \uc5f0\uc0b0\uc790 \uac12\uc740 '=' \ub610\ub294 "!="\uc785\ub2c8\ub2e4.
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=\ud0a4\uc6cc\ub4dc \uac12 \"%s\"\uc5d0 \ud574\ub2f9\ub418\ub294 \uc81c\uacf5\ub41c ACI(\uc561\uc138\uc2a4 \uc81c\uc5b4 \uba85\ub839) \ubc14\uc778\ub4dc \uaddc\uce59 \ud45c\ud604\uc2dd \uac12\uc5d0 \ud45c\ud604\uc2dd\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \ubc14\uc778\ub4dc \uaddc\uce59 \uac12\uc740 \ud0a4\uc6cc\ub4dc \uc5f0\uc0b0\uc790 "\ud45c\ud604\uc2dd" \ud615\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
opendj3-server-dev/src/messages/messages/access_control_zh_CN.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4\u8bbf\u95ee\u7c7b\u578b\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u8bbf\u95ee\u7c7b\u578b\u503c\u4e3a allow \u6216 deny
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u6743\u9650\u503c "%s" \u65e0\u6548\u3002\u6743\u9650\u5fc5\u987b\u662f 1 \u5230 6 \u4e2a\u5305\u542b\u5728\u5706\u62ec\u53f7\u4e2d\u5e76\u7528\u9017\u53f7\u5206\u9694\u7684\u5173\u952e\u5b57\u5217\u8868
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u6743\u9650\u5173\u952e\u5b57\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u6743\u9650\u5173\u952e\u5b57\u503c\u662f\u4e0b\u5217\u4e00\u4e2a\u6216\u591a\u4e2a\u5173\u952e\u5b57\uff1aread\u3001write\u3001add\u3001delete\u3001search\u3001compare \u6216\u5355\u4e2a\u503c all
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u503c "%s" \u65e0\u6548\uff0c\u56e0\u4e3a\u5b83\u7f3a\u5c11\u4e0e\u8d77\u59cb\u5de6\u5706\u62ec\u53f7\u5bf9\u5e94\u7684\u53f3\u5706\u62ec\u53f7
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u7ed1\u5b9a\u89c4\u5219\u503c\u5fc5\u987b\u91c7\u7528\u4ee5\u4e0b\u683c\u5f0f\uff1a\u5173\u952e\u5b57 \u8fd0\u7b97\u7b26 "\u8868\u8fbe\u5f0f"
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u503c "%s" \u65e0\u6548\uff0c\u56e0\u4e3a\u5b83\u7f3a\u5c11\u4e0e\u8d77\u59cb\u5de6\u5706\u62ec\u53f7\u5bf9\u5e94\u7684\u53f3\u5706\u62ec\u53f7
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u7ed1\u5b9a\u89c4\u5219\u503c\u5fc5\u987b\u91c7\u7528\u4ee5\u4e0b\u683c\u5f0f\uff1a\u5173\u952e\u5b57 \u8fd0\u7b97\u7b26 "\u8868\u8fbe\u5f0f"
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u5173\u952e\u5b57\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u5173\u952e\u5b57\u503c\u662f\u4e0b\u5217\u5173\u952e\u5b57\u4e4b\u4e00\uff1auserdn\u3001groupdn\u3001roledn\u3001userattr\u3001ip\u3001dns\u3001dayofweek\u3001timeofday \u6216 authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=\u63d0\u4f9b\u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u8fd0\u7b97\u7b26\u503c "%s" \u65e0\u6548\u3002\u6709\u6548\u7684\u7ed1\u5b9a\u89c4\u5219\u8fd0\u7b97\u7b26\u503c\u662f '=' \u6216 "!="
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=\u63d0\u4f9b\u7684\u5bf9\u5e94\u4e8e\u5173\u952e\u5b57\u503c "%s" \u7684\u8bbf\u95ee\u63a7\u5236\u6307\u4ee4 (Access Control Instruction, ACI) \u7ed1\u5b9a\u89c4\u5219\u8868\u8fbe\u5f0f\u503c\u7f3a\u5c11\u8868\u8fbe\u5f0f\u3002\u6709\u6548\u7684\u7ed1\u5b9a\u89c4\u5219\u503c\u5fc5\u987b\u91c7\u7528\u4ee5\u4e0b\u683c\u5f0f\uff1a\u5173\u952e\u5b57 \u8fd0\u7b97\u7b26 "\u8868\u8fbe\u5f0f"
opendj3-server-dev/src/messages/messages/access_control_zh_TW.properties
@@ -52,8 +52,8 @@
WARN_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION_3=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4\u5b58\u53d6\u985e\u578b\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u5b58\u53d6\u985e\u578b\u503c\u70ba\u4e0d\u662f\u5141\u8a31\u5c31\u662f\u62d2\u7d55
WARN_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX_4=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u6b0a\u9650\u503c\u300c%s\u300d\u7121\u6548\u3002\u6b0a\u9650\u5fc5\u9808\u662f\u653e\u5728\u62ec\u5f27\u4e2d 1 \u81f3 6 \u500b\u4ee5\u9017\u865f\u5206\u9694\u7684\u95dc\u9375\u5b57\u6e05\u55ae
WARN_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD_5=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u6b0a\u9650\u95dc\u9375\u5b57\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u6b0a\u9650\u95dc\u9375\u5b57\u503c\u70ba\u4e0b\u5217\u5176\u4e2d\u4e00\u6216\u591a\u500b\u503c\uff1a\u8b80\u53d6\u3001\u5beb\u5165\u3001\u589e\u52a0\u3001\u522a\u9664\u3001\u641c\u5c0b\u3001\u6bd4\u8f03\uff0c\u6216\u4e0a\u8ff0\u5168\u90e8\u503c
ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u503c\u300c%s\u300d\u7121\u6548\uff0c\u56e0\u70ba\u8a72\u503c\u7f3a\u5c11\u8207\u5de6\u62ec\u5f27\u5c0d\u61c9\u7684\u53f3\u62ec\u5f27
ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u9023\u7d50\u898f\u5247\u503c\u5fc5\u9808\u70ba\u4e0b\u5217\u5f62\u5f0f\uff1akeyword operator "expression" (\u95dc\u9375\u5b57 \u904b\u7b97\u5b50 "\u8868\u793a\u5f0f")
WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN_6=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u503c\u300c%s\u300d\u7121\u6548\uff0c\u56e0\u70ba\u8a72\u503c\u7f3a\u5c11\u8207\u5de6\u62ec\u5f27\u5c0d\u61c9\u7684\u53f3\u62ec\u5f27
WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX_7=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u9023\u7d50\u898f\u5247\u503c\u5fc5\u9808\u70ba\u4e0b\u5217\u5f62\u5f0f\uff1akeyword operator "expression" (\u95dc\u9375\u5b57 \u904b\u7b97\u5b50 "\u8868\u793a\u5f0f")
WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_8=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u95dc\u9375\u5b57\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u95dc\u9375\u5b57\u503c\u70ba\u4e0b\u5217\u5176\u4e2d\u4e00\u9805\uff1auserdn\u3001groupdn\u3001roledn\u3001userattr\u3001ip\u3001dns\u3001dayofweek\u3001timeofday \u6216 authmethod
WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR_9=\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u904b\u7b97\u5b50\u503c\u300c%s\u300d\u7121\u6548\u3002\u6709\u6548\u7684\u9023\u7d50\u898f\u5247\u904b\u7b97\u5b50\u503c\u4e0d\u662f\u300c=\u300d\u5c31\u662f\u300c!=\u300d
WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION_10=\u5c0d\u61c9\u65bc\u95dc\u9375\u5b57\u503c\u300c%s\u300d\u4e4b\u63d0\u4f9b\u7684\u5b58\u53d6\u63a7\u5236\u6307\u4ee4 (ACI) \u9023\u7d50\u898f\u5247\u8868\u793a\u5f0f\u503c\u7f3a\u5c11\u8868\u793a\u5f0f\u3002\u6709\u6548\u7684\u9023\u7d50\u898f\u5247\u503c\u5fc5\u9808\u70ba\u4e0b\u5217\u5f62\u5f0f\uff1akeyword operator "expression" (\u95dc\u9375\u5b57 \u904b\u7b97\u5b50 "\u8868\u793a\u5f0f")
opendj3-server-dev/src/server/org/opends/server/authorization/dseecompat/BindRule.java
@@ -36,65 +36,48 @@
import org.forgerock.i18n.LocalizableMessage;
/**
 * This class represents a single bind rule of an ACI permission-bind rule
 * pair.
 * This class represents a single bind rule of an ACI permission-bind rule pair.
 */
public class BindRule {
    /** This hash table holds the keyword bind rule mapping. */
    private final HashMap<String, KeywordBindRule> keywordRuleMap =
                                    new HashMap<String, KeywordBindRule>();
    private final HashMap<String, KeywordBindRule> keywordRuleMap = new HashMap<String, KeywordBindRule>();
    /** True is a boolean "not" was seen. */
    private boolean negate=false;
    private boolean negate;
    /** Complex bind rules have left and right values. */
    private BindRule left = null;
    private BindRule right = null;
    private BindRule left;
    private BindRule right;
    /**
     * Enumeration of the boolean type of the complex bind rule ("and" or "or").
     */
    private EnumBooleanTypes booleanType = null;
    /** Enumeration of the boolean type of the complex bind rule ("and" or "or"). */
    private EnumBooleanTypes booleanType;
    /** The keyword of a simple bind rule. */
    private EnumBindRuleKeyword keyword = null;
    private EnumBindRuleKeyword keyword;
    /** Regular expression group position of a bind rule keyword. */
    private static final int keywordPos = 1;
    /** Regular expression group position of a bind rule operation. */
    private static final int opPos = 2;
    /** Regular expression group position of a bind rule expression. */
    private static final int expressionPos = 3;
    /**
     * Regular expression group position of the remainder part of an operand.
     */
    /** Regular expression group position of the remainder part of an operand. */
    private static final int remainingOperandPos = 1;
    /** Regular expression group position of the remainder of the bind rule. */
    private static final int remainingBindrulePos = 2;
    /** Regular expression for valid bind rule operator group. */
    private static final String opRegGroup = "([!=<>]+)";
    /**
     * Regular expression for the expression part of a partially parsed
     * bind rule.
     */
    private static final String expressionRegex =
                                  "\"([^\"]+)\"" + ZERO_OR_MORE_WHITESPACE;
    /** Regular expression for the expression part of a partially parsed bind rule. */
    private static final String expressionRegex = "\"([^\"]+)\"" + ZERO_OR_MORE_WHITESPACE;
    /** Regular expression for a single bind rule. */
    private static final String bindruleRegex =
        WORD_GROUP_START_PATTERN + ZERO_OR_MORE_WHITESPACE +
        opRegGroup + ZERO_OR_MORE_WHITESPACE + expressionRegex;
    /**
     * Regular expression of the remainder part of a partially parsed bind rule.
     */
    /** Regular expression of the remainder part of a partially parsed bind rule. */
    private static final String remainingBindruleRegex =
        ZERO_OR_MORE_WHITESPACE_START_PATTERN + WORD_GROUP +
        ZERO_OR_MORE_WHITESPACE + "(.*)$";
@@ -152,8 +135,7 @@
     * @param right The right bind rule.
     * @param booleanType The boolean type enumeration ("and" or "or").
     */
    private BindRule(BindRule left, BindRule right,
            EnumBooleanTypes booleanType) {
    private BindRule(BindRule left, BindRule right, EnumBooleanTypes booleanType) {
        this.booleanType = booleanType;
        this.left = left;
        this.right = right;
@@ -172,9 +154,8 @@
     * @return A BindRule class representing the bind rule.
     * @throws AciException If the string is an invalid bind rule.
     */
    public static BindRule decode (String input)
    throws AciException {
        if ((input == null) || (input.length() == 0))
    public static BindRule decode (String input) throws AciException {
        if (input == null || input.length() == 0)
        {
          return null;
        }
@@ -202,8 +183,7 @@
            }
            if (numClose == numOpen)
            {
              //We found the associated closed parenthesis
              //the parenthesis are removed
              // We found the associated closed parenthesis the parenthesis are removed
              String bindruleStr1 = bindruleStr.substring(1, currentPos);
              bindrule_1 = BindRule.decode(bindruleStr1);
              break;
@@ -215,33 +195,26 @@
           * Raise an exception otherwise.
           */
          if (numOpen > numClose) {
              LocalizableMessage message =
                  ERR_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN.get(input);
              throw new AciException(message);
              throw new AciException(WARN_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN.get(input));
          }
          /*
           * If there are remaining chars => there MUST be an
           * operand (AND / OR)
           * If there are remaining chars => there MUST be an operand (AND / OR)
           * otherwise there is a syntax error
           */
          if (currentPos < (bindruleArray.length - 1))
          if (currentPos < bindruleArray.length - 1)
          {
            String remainingBindruleStr =
                bindruleStr.substring(currentPos + 1);
            return createBindRule(bindrule_1, remainingBindruleStr);
          }
          else
          {
            return bindrule_1;
          }
          return bindrule_1;
        }
        else
        {
          StringBuilder b=new StringBuilder(bindruleStr);
          /*
           * TODO Verify by unit test that this negation
           * is correct. This code handles a simple bind rule negation such
           * as:
           * is correct. This code handles a simple bind rule negation such as:
           *
           *  not userdn="ldap:///anyone"
           */
@@ -257,8 +230,7 @@
            bindrule_1.setNegate(negate);
            if (bindruleEndIndex < bindruleStr.length())
            {
              String remainingBindruleStr =
                  bindruleStr.substring(bindruleEndIndex);
              String remainingBindruleStr = bindruleStr.substring(bindruleEndIndex);
              return createBindRule(bindrule_1, remainingBindruleStr);
            }
            else {
@@ -266,9 +238,7 @@
            }
          }
          else {
              LocalizableMessage message =
                  ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX.get(input);
              throw new AciException(message);
              throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX.get(input));
          }
        }
    }
@@ -281,36 +251,27 @@
     * @return A BindRule determined by the matcher.
     * @throws AciException If the bind rule matcher found errors.
     */
    private static BindRule parseAndCreateBindrule(Matcher bindruleMatcher)
    throws AciException {
    private static BindRule parseAndCreateBindrule(Matcher bindruleMatcher) throws AciException {
        String keywordStr = bindruleMatcher.group(keywordPos);
        String operatorStr = bindruleMatcher.group(opPos);
        String expression = bindruleMatcher.group(expressionPos);
        EnumBindRuleKeyword keyword;
        EnumBindRuleType operator;
        // Get the Keyword
        keyword = EnumBindRuleKeyword.createBindRuleKeyword(keywordStr);
        final EnumBindRuleKeyword keyword = EnumBindRuleKeyword.createBindRuleKeyword(keywordStr);
        if (keyword == null)
        {
            LocalizableMessage message =
                WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD.get(keywordStr);
            throw new AciException(message);
            throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD.get(keywordStr));
        }
        // Get the operator
        operator = EnumBindRuleType.createBindruleOperand(operatorStr);
        final EnumBindRuleType operator = EnumBindRuleType.createBindruleOperand(operatorStr);
        if (operator == null) {
            LocalizableMessage message =
                WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR.get(operatorStr);
            throw new AciException(message);
            throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR.get(operatorStr));
        }
        //expression can't be null
        if (expression == null) {
            LocalizableMessage message =
                WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION.get(operatorStr);
            throw new AciException(message);
            throw new AciException(WARN_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION.get(operatorStr));
        }
        validateOperation(keyword, operator);
        KeywordBindRule rule = decode(expression, keyword, operator);
@@ -330,23 +291,17 @@
     */
    private static BindRule createBindRule(BindRule bindrule,
            String remainingBindruleStr) throws AciException {
        Pattern remainingBindrulePattern =
            Pattern.compile(remainingBindruleRegex);
        Matcher remainingBindruleMatcher =
            remainingBindrulePattern.matcher(remainingBindruleStr);
        Pattern remainingBindrulePattern = Pattern.compile(remainingBindruleRegex);
        Matcher remainingBindruleMatcher = remainingBindrulePattern.matcher(remainingBindruleStr);
        if (remainingBindruleMatcher.find()) {
            String remainingOperand =
                remainingBindruleMatcher.group(remainingOperandPos);
            String remainingBindrule =
                remainingBindruleMatcher.group(remainingBindrulePos);
            EnumBooleanTypes operand =
                EnumBooleanTypes.createBindruleOperand(remainingOperand);
            if ((operand == null)
                    || ((operand != EnumBooleanTypes.AND_BOOLEAN_TYPE) &&
                            (operand != EnumBooleanTypes.OR_BOOLEAN_TYPE))) {
            String remainingOperand = remainingBindruleMatcher.group(remainingOperandPos);
            String remainingBindrule = remainingBindruleMatcher.group(remainingBindrulePos);
            EnumBooleanTypes operand = EnumBooleanTypes.createBindruleOperand(remainingOperand);
            if (operand == null
                    || (operand != EnumBooleanTypes.AND_BOOLEAN_TYPE
                            && operand != EnumBooleanTypes.OR_BOOLEAN_TYPE)) {
                LocalizableMessage message =
                        WARN_ACI_SYNTAX_INVALID_BIND_RULE_BOOLEAN_OPERATOR
                                .get(remainingOperand);
                        WARN_ACI_SYNTAX_INVALID_BIND_RULE_BOOLEAN_OPERATOR.get(remainingOperand);
                throw new AciException(message);
            }
            StringBuilder ruleExpr=new StringBuilder(remainingBindrule);
@@ -358,15 +313,11 @@
             */
            boolean negate=determineNegation(ruleExpr);
            remainingBindrule=ruleExpr.toString();
            BindRule bindrule_2 =
                BindRule.decode(remainingBindrule);
            BindRule bindrule_2 = BindRule.decode(remainingBindrule);
            bindrule_2.setNegate(negate);
            return new BindRule(bindrule, bindrule_2, operand);
        } else {
            LocalizableMessage message = ERR_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX.get(
                remainingBindruleStr);
            throw new AciException(message);
        }
        throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX.get(remainingBindruleStr));
    }
    /**
@@ -430,8 +381,8 @@
        case DNS:
        case AUTHMETHOD:
        case DAYOFWEEK:
            if ((op != EnumBindRuleType.EQUAL_BINDRULE_TYPE)
                    && (op != EnumBindRuleType.NOT_EQUAL_BINDRULE_TYPE)) {
            if (op != EnumBindRuleType.EQUAL_BINDRULE_TYPE
                    && op != EnumBindRuleType.NOT_EQUAL_BINDRULE_TYPE) {
                throw new AciException(
                    WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_OPERATOR_COMBO.get(keyword, op));
            }
@@ -459,70 +410,34 @@
     * @throws AciException If the expr string contains a invalid
     * bind rule.
     */
    private static KeywordBindRule decode(String expr,
                                          EnumBindRuleKeyword keyword,
                                          EnumBindRuleType op)
    private static KeywordBindRule decode(String expr, EnumBindRuleKeyword keyword, EnumBindRuleType op)
            throws AciException  {
        KeywordBindRule rule ;
        switch (keyword) {
            case USERDN:
            {
                rule = UserDN.decode(expr, op);
                break;
            }
            case ROLEDN:
            {
                //The roledn keyword is not supported. Throw an exception with
                //a message if it is seen in the ACI.
                LocalizableMessage message =
                    WARN_ACI_SYNTAX_ROLEDN_NOT_SUPPORTED.get(expr);
                throw new AciException(message);
            }
            case GROUPDN:
            {
                rule = GroupDN.decode(expr, op);
                break;
            }
            case IP:
            {
                rule=IP.decode(expr, op);
                break;
            }
            case DNS:
            {
                rule = DNS.decode(expr, op);
                break;
            }
            case DAYOFWEEK:
            {
                rule = DayOfWeek.decode(expr, op);
                break;
            }
            case TIMEOFDAY:
            {
                rule=TimeOfDay.decode(expr, op);
                break;
            }
            case AUTHMETHOD:
            {
                rule = AuthMethod.decode(expr, op);
                break;
            }
            case USERATTR:
            {
                rule = UserAttr.decode(expr, op);
                break;
            }
            case SSF:
            {
                rule = SSF.decode(expr, op);
                break;
            }
            default:  {
                throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD.get(keyword));
            }
        case USERDN:
            return UserDN.decode(expr, op);
        case ROLEDN:
            //The roledn keyword is not supported. Throw an exception with
            //a message if it is seen in the ACI.
            throw new AciException(WARN_ACI_SYNTAX_ROLEDN_NOT_SUPPORTED.get(expr));
        case GROUPDN:
            return GroupDN.decode(expr, op);
        case IP:
            return IP.decode(expr, op);
        case DNS:
            return DNS.decode(expr, op);
        case DAYOFWEEK:
            return DayOfWeek.decode(expr, op);
        case TIMEOFDAY:
            return TimeOfDay.decode(expr, op);
        case AUTHMETHOD:
            return AuthMethod.decode(expr, op);
        case USERATTR:
            return UserAttr.decode(expr, op);
        case SSF:
            return SSF.decode(expr, op);
        default:
            throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD.get(keyword));
        }
        return rule;
    }
    /**
@@ -534,16 +449,15 @@
     * @param right The right bind result to evaluate.
     * @return The result of the complex evaluation.
     */
    private EnumEvalResult evalComplex(EnumEvalResult left,
                                       EnumEvalResult right) {
        EnumEvalResult ret=EnumEvalResult.FALSE;
        if(booleanType == EnumBooleanTypes.AND_BOOLEAN_TYPE) {
           if((left == EnumEvalResult.TRUE) && (right == EnumEvalResult.TRUE))
                ret=EnumEvalResult.TRUE;
        } else if((left == EnumEvalResult.TRUE) ||
                  (right == EnumEvalResult.TRUE))
            ret=EnumEvalResult.TRUE;
       return ret;
    private EnumEvalResult evalComplex(EnumEvalResult left, EnumEvalResult right) {
        if (booleanType == EnumBooleanTypes.AND_BOOLEAN_TYPE) {
          if (left == EnumEvalResult.TRUE && right == EnumEvalResult.TRUE) {
            return EnumEvalResult.TRUE;
          }
        } else if (left == EnumEvalResult.TRUE || right == EnumEvalResult.TRUE) {
          return EnumEvalResult.TRUE;
        }
       return EnumEvalResult.FALSE;
    }
    /**
@@ -561,8 +475,9 @@
        if(this.booleanType == null) {
            KeywordBindRule rule=keywordRuleMap.get(keyword.toString());
            ret = rule.evaluate(evalCtx);
        }  else
            ret=evalComplex(left.evaluate(evalCtx),right.evaluate(evalCtx));
        } else {
            ret = evalComplex(left.evaluate(evalCtx),right.evaluate(evalCtx));
        }
        return EnumEvalResult.negateIfNeeded(ret, negate);
    }
opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
@@ -1874,7 +1874,7 @@
          }
          if (!isCanceled)
          {
            logger.error(NOTE_JEB_IMPORT_LDIF_DN_CLOSE, indexMgr.getDNCount());
            logger.info(NOTE_JEB_IMPORT_LDIF_DN_CLOSE, indexMgr.getDNCount());
          }
        }
        else
@@ -2960,27 +2960,23 @@
    {
      totalEntries = suffix.getID2Entry().getRecordCount();
      LocalizableMessage message = null;
      switch (rebuildConfig.getRebuildMode())
      {
      case ALL:
        message = NOTE_JEB_REBUILD_ALL_START.get(totalEntries);
        logger.info(NOTE_JEB_REBUILD_ALL_START, totalEntries);
        break;
      case DEGRADED:
        message = NOTE_JEB_REBUILD_DEGRADED_START.get(totalEntries);
        logger.info(NOTE_JEB_REBUILD_DEGRADED_START, totalEntries);
        break;
      default:
        if (!rebuildConfig.isClearDegradedState())
        if (!rebuildConfig.isClearDegradedState()
            && logger.isInfoEnabled())
        {
          String indexes = Utils.joinAsString(", ", rebuildConfig.getRebuildList());
          message = NOTE_JEB_REBUILD_START.get(indexes, totalEntries);
          logger.info(NOTE_JEB_REBUILD_START, indexes, totalEntries);
        }
        break;
      }
      if ( message != null )
      {
        logger.info(message);
      }
    }
    /**
@@ -3716,16 +3712,14 @@
        long freeMemory = runtime.freeMemory() / MB;
        EnvironmentStats envStats =
            rootContainer.getEnvironmentStats(new StatsConfig());
        long nCacheMiss =
            envStats.getNCacheMiss() - prevEnvStats.getNCacheMiss();
        long nCacheMiss = envStats.getNCacheMiss() - prevEnvStats.getNCacheMiss();
        float cacheMissRate = 0;
        if (deltaCount > 0)
        {
          cacheMissRate = nCacheMiss / (float) deltaCount;
        }
        logger.info(NOTE_JEB_REBUILD_CACHE_AND_MEMORY_REPORT, freeMemory,
                cacheMissRate);
        logger.info(NOTE_JEB_REBUILD_CACHE_AND_MEMORY_REPORT, freeMemory, cacheMissRate);
        prevEnvStats = envStats;
      }
      catch (DatabaseException e)
@@ -3826,8 +3820,7 @@
        {
          cacheMissRate = nCacheMiss / (float) deltaCount;
        }
        logger.info(NOTE_JEB_IMPORT_CACHE_AND_MEMORY_REPORT, freeMemory,
                cacheMissRate);
        logger.info(NOTE_JEB_IMPORT_CACHE_AND_MEMORY_REPORT, freeMemory, cacheMissRate);
        long evictPasses = environmentStats.getNEvictPasses();
        long evictNodes = environmentStats.getNNodesExplicitlyEvicted();
        long evictBinsStrip = environmentStats.getNBINsStripped();
@@ -3941,8 +3934,7 @@
        {
          cacheMissRate = nCacheMiss / (float) deltaCount;
        }
        logger.info(NOTE_JEB_IMPORT_CACHE_AND_MEMORY_REPORT, freeMemory,
                cacheMissRate);
        logger.info(NOTE_JEB_IMPORT_CACHE_AND_MEMORY_REPORT, freeMemory, cacheMissRate);
        long evictPasses = environmentStats.getNEvictPasses();
        long evictNodes = environmentStats.getNNodesExplicitlyEvicted();
        long evictBinsStrip = environmentStats.getNBINsStripped();
opendj3-server-dev/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -39,11 +39,12 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.admin.std.meta.ReplicationDomainCfgDefn.AssuredType;
import org.opends.server.admin.std.server.ReplicationDomainCfg;
import org.opends.server.api.DirectoryThread;
import org.opends.server.backends.task.Task;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.replication.common.*;
import org.opends.server.replication.protocol.*;
import org.opends.server.tasks.InitializeTargetTask;
@@ -51,7 +52,6 @@
import org.opends.server.types.Attribute;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.forgerock.opendj.ldap.ResultCode;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.replication.common.AssuredMode.*;
@@ -2239,18 +2239,15 @@
   *                          task has initially been created (this server,
   *                          or the remote server).
   */
  private void initialize(InitializeTargetMsg initTargetMsgReceived,
      int requesterServerId)
  private void initialize(InitializeTargetMsg initTargetMsgReceived, int requesterServerId)
  {
    InitializeTask initFromTask = null;
    if (logger.isTraceEnabled())
    {
      logger.trace("[IE] Entering initialize - domain=" + this);
    }
    InitializeTask initFromTask = null;
    int source = initTargetMsgReceived.getSenderID();
    ImportExportContext ieCtx = importExportContext.get();
    try
    {
@@ -2265,8 +2262,7 @@
      if (initTargetMsgReceived.getInitiatorID() != getServerId())
      {
        /*
        The initTargetMsgReceived is for an import initiated by the remote
        server.
        The initTargetMsgReceived is for an import initiated by the remote server.
        Test and set if no import already in progress
        */
        ieCtx = acquireIEContext(true);
@@ -2281,7 +2277,6 @@
      // Launch the import
      importBackend(new ReplInputStream(this));
    }
    catch (DirectoryException e)
    {
@@ -2389,7 +2384,7 @@
      }
      finally
      {
        logger.error(NOTE_FULL_UPDATE_ENGAGED_FROM_REMOTE_END,
        logger.info(NOTE_FULL_UPDATE_ENGAGED_FROM_REMOTE_END,
            getBaseDNString(), initTargetMsgReceived.getSenderID(), getServerId(),
            (ieCtx.getException() != null ? ieCtx.getException().getLocalizedMessage() : ""));
        releaseIEContext();
opendj3-server-dev/src/server/org/opends/server/schema/AciSyntax.java
@@ -26,25 +26,20 @@
 */
package org.opends.server.schema;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.api.AttributeSyntax;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.DN;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import static org.opends.messages.SchemaMessages.*;
import org.forgerock.i18n.LocalizableMessageBuilder;
import static org.opends.server.schema.SchemaConstants.*;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.admin.std.server.AttributeSyntaxCfg;
import org.opends.server.api.AttributeSyntax;
import org.opends.server.authorization.dseecompat.Aci;
import org.opends.server.authorization.dseecompat.AciException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.DN;
import static org.opends.messages.SchemaMessages.*;
import static org.opends.server.schema.SchemaConstants.*;
/**
 * This class implements the access control information (aci) attribute syntax.
@@ -54,14 +49,12 @@
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The default equality matching rule for this syntax.
  /** The default equality matching rule for this syntax. */
  private MatchingRule defaultEqualityMatchingRule;
  // The default substring matching rule for this syntax.
  /** The default substring matching rule for this syntax. */
  private MatchingRule defaultSubstringMatchingRule;
  /**
   * Creates a new instance of this syntax.  Note that the only thing that
   * should be done here is to invoke the default constructor for the
@@ -73,67 +66,56 @@
    super();
  }
  /**
   * {@inheritDoc}
   */
  public void initializeSyntax(AttributeSyntaxCfg configuration)
         throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void initializeSyntax(AttributeSyntaxCfg configuration) throws ConfigException
  {
    defaultEqualityMatchingRule =
         DirectoryServer.getMatchingRule(EMR_CASE_IGNORE_IA5_OID);
    defaultEqualityMatchingRule = DirectoryServer.getMatchingRule(EMR_CASE_IGNORE_IA5_OID);
    if (defaultEqualityMatchingRule == null)
    {
      logger.error(ERR_ATTR_SYNTAX_UNKNOWN_EQUALITY_MATCHING_RULE, EMR_CASE_IGNORE_IA5_OID, SYNTAX_ACI_NAME);
    }
    defaultSubstringMatchingRule =
         DirectoryServer.getMatchingRule(SMR_CASE_IGNORE_IA5_OID);
    defaultSubstringMatchingRule = DirectoryServer.getMatchingRule(SMR_CASE_IGNORE_IA5_OID);
    if (defaultSubstringMatchingRule == null)
    {
      logger.error(ERR_ATTR_SYNTAX_UNKNOWN_SUBSTRING_MATCHING_RULE, SMR_CASE_IGNORE_IA5_OID, SYNTAX_ACI_NAME);
    }
  }
  /**
   * Retrieves the common name for this attribute syntax.
   *
   * @return  The common name for this attribute syntax.
   */
  @Override
  public String getName()
  {
    return SYNTAX_ACI_NAME;
  }
  /**
   * Retrieves the OID for this attribute syntax.
   *
   * @return  The OID for this attribute syntax.
   */
  @Override
  public String getOID()
  {
    return SYNTAX_ACI_OID;
  }
  /**
   * Retrieves a description for this attribute syntax.
   *
   * @return  A description for this attribute syntax.
   */
  @Override
  public String getDescription()
  {
    return SYNTAX_ACI_DESCRIPTION;
  }
  /**
   * Retrieves the default equality matching rule that will be used for
   * attributes with this syntax.
@@ -142,13 +124,12 @@
   *          attributes with this syntax, or <CODE>null</CODE> if equality
   *          matches will not be allowed for this type by default.
   */
  @Override
  public MatchingRule getEqualityMatchingRule()
  {
    return defaultEqualityMatchingRule;
  }
  /**
   * Retrieves the default ordering matching rule that will be used for
   * attributes with this syntax.
@@ -157,14 +138,13 @@
   *          attributes with this syntax, or <CODE>null</CODE> if ordering
   *          matches will not be allowed for this type by default.
   */
  @Override
  public MatchingRule getOrderingMatchingRule()
  {
    // We don't have an orderingMatchingRule
    return null;
  }
  /**
   * Retrieves the default substring matching rule that will be used for
   * attributes with this syntax.
@@ -173,13 +153,12 @@
   *          attributes with this syntax, or <CODE>null</CODE> if substring
   *          matches will not be allowed for this type by default.
   */
  @Override
  public MatchingRule getSubstringMatchingRule()
  {
    return defaultSubstringMatchingRule;
  }
  /**
   * Retrieves the default approximate matching rule that will be used for
   * attributes with this syntax.
@@ -188,14 +167,13 @@
   *          attributes with this syntax, or <CODE>null</CODE> if approximate
   *          matches will not be allowed for this type by default.
   */
  @Override
  public MatchingRule getApproximateMatchingRule()
  {
    // we don't have an approximateMatchingRule
    return null;
  }
  /**
   * Indicates whether the provided value is acceptable for use in an attribute
   * with this syntax.  If it is not, then the reason may be appended to the
@@ -208,39 +186,33 @@
   * @return  <CODE>true</CODE> if the provided value is acceptable for use with
   *          this syntax, or <CODE>false</CODE> if not.
   */
  public boolean valueIsAcceptable(ByteSequence value,
                                   LocalizableMessageBuilder invalidReason)
  @Override
  public boolean valueIsAcceptable(ByteSequence value, LocalizableMessageBuilder invalidReason)
  {
    try
    {
      Aci.decode(value, DN.rootDN());
      return true;
    }
    catch (AciException e)
    {
      logger.traceException(e);
      logger.error(e.getMessageObject());
      logger.warn(e.getMessageObject());
      invalidReason.append(e.getMessageObject());
      return false;
    }
    return true;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isBEREncodingRequired()
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isHumanReadable()
  {
    return true;