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
380 ■■■■■ changed files
opendj3-server-dev/src/messages/messages/access_control.properties 4 ●●●● 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 211 ●●●● 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
@@ -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 \
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;
          }
        }
        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,71 +410,35 @@
     * @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;
            }
            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.
                LocalizableMessage message =
                    WARN_ACI_SYNTAX_ROLEDN_NOT_SUPPORTED.get(expr);
                throw new AciException(message);
            }
            throw new AciException(WARN_ACI_SYNTAX_ROLEDN_NOT_SUPPORTED.get(expr));
            case GROUPDN:
            {
                rule = GroupDN.decode(expr, op);
                break;
            }
            return GroupDN.decode(expr, op);
            case IP:
            {
                rule=IP.decode(expr, op);
                break;
            }
            return IP.decode(expr, op);
            case DNS:
            {
                rule = DNS.decode(expr, op);
                break;
            }
            return DNS.decode(expr, op);
            case DAYOFWEEK:
            {
                rule = DayOfWeek.decode(expr, op);
                break;
            }
            return DayOfWeek.decode(expr, op);
            case TIMEOFDAY:
            {
                rule=TimeOfDay.decode(expr, op);
                break;
            }
            return TimeOfDay.decode(expr, op);
            case AUTHMETHOD:
            {
                rule = AuthMethod.decode(expr, op);
                break;
            }
            return AuthMethod.decode(expr, op);
            case USERATTR:
            {
                rule = UserAttr.decode(expr, op);
                break;
            }
            return UserAttr.decode(expr, op);
            case SSF:
            {
                rule = SSF.decode(expr, op);
                break;
            }
            default:  {
            return SSF.decode(expr, op);
        default:
                throw new AciException(WARN_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD.get(keyword));
            }
        }
        return rule;
    }
    /**
     * Evaluate the results of a complex bind rule. If the boolean
@@ -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;
    private EnumEvalResult evalComplex(EnumEvalResult left, EnumEvalResult right) {
        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;
          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
        } 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;