You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2024/08/22 05:58:12 UTC

(directory-server) 01/02: Partial fix to DIRSERVER_1728: interceptor-subtree

This is an automated email from the ASF dual-hosted git repository.

elecharny pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-server.git

commit 02c37e881ac6df9fd38f5503de5d7de675e22346
Merge: 76a34d8f0d 8b78726806
Author: emmanuel lecharny <el...@apache.org>
AuthorDate: Wed Aug 21 18:06:27 2024 +0200

    Partial fix to DIRSERVER_1728: interceptor-subtree

 .../org/apache/directory/server/i18n/I18n.java     | 14 ++---
 .../apache/directory/server/i18n/errors.properties | 68 ++--------------------
 .../server/core/subtree/SubentryInterceptor.java   | 14 ++---
 3 files changed, 19 insertions(+), 77 deletions(-)

diff --cc i18n/src/main/java/org/apache/directory/server/i18n/I18n.java
index f875fc844b,09098ea214..176ff84f5b
--- a/i18n/src/main/java/org/apache/directory/server/i18n/I18n.java
+++ b/i18n/src/main/java/org/apache/directory/server/i18n/I18n.java
@@@ -366,27 -366,8 +366,33 @@@ public enum I18
  
      // apacheds-interceptors-schema errors           28000 - 28999
      ERR_28000_OBJECT_NOT_FOUND_IN_AT_REGISTRY("ERR_28000_OBJECT_NOT_FOUND_IN_AT_REGISTRY"),
 +    ERR_28001_NULL_FILTER("ERR_28001_NULL_FILTER"),
 +    ERR_28002_CANNOT_MODIFY_ATTRIBUTE("ERR_28002_CANNOT_MODIFY_ATTRIBUTE"),
 +    ERR_28003_CANNOT_ADD_ALREADY_PRESENT_VALUE("ERR_28003_CANNOT_ADD_ALREADY_PRESENT_VALUE"),
 +    ERR_28004_CANNOT_REMOVE_ABSENT_ATTRIBUTE("ERR_28004_CANNOT_REMOVE_ABSENT_ATTRIBUTE"),
 +    ERR_28005_CANNOT_REMOVE_ABSENT_VALUE("ERR_28005_CANNOT_REMOVE_ABSENT_VALUE"),
 +    ERR_28006_ABSTRACT_OBJECT_CLASS_CANNOT_INHERIT_NON_ABSTRACT("ERR_28006_ABSTRACT_OBJECT_CLASS_CANNOT_INHERIT_NON_ABSTRACT"),
 +    ERR_28007_AUXILIARY_OC_MUST_INHERIT_ABSTRACT_OR_AUXILIARY("ERR_28007_AUXILIARY_OC_MUST_INHERIT_ABSTRACT_OR_AUXILIARY"),
 +    ERR_28008_SUPERIOR_MUST_EXIST("ERR_28008_SUPERIOR_MUST_EXIST"),
 +    ERR_28009__ENTRY_WITHOUT_STRUCTURAL_OC("ERR_28009__ENTRY_WITHOUT_STRUCTURAL_OC"),
 +    ERR_28010_ENTRY_HAS_2_STRUCTURAL_OC("ERR_28010_ENTRY_HAS_2_STRUCTURAL_OC"),
 +    ERR_28011_MISSING_ATTRIBUTE_TYPE_PRESENT_IN_RDN("ERR_28011_MISSING_ATTRIBUTE_TYPE_PRESENT_IN_RDN"),
 +    ERR_28012_ATTRIBUTE_NOT_FOUND_IN_REGISTRY("ERR_28012_ATTRIBUTE_NOT_FOUND_IN_REGISTRY"),
 +    ERR_28013_ATTRIBUTE_NOT_DECLARED_IN_OC("ERR_28013_ATTRIBUTE_NOT_DECLARED_IN_OC"),
 +    ERR_28014_MANY_VALUES_FOR_SINGLE_VALUE_ATTRIBUTE("ERR_28014_MANY_VALUES_FOR_SINGLE_VALUE_ATTRIBUTE"),
 +    ERR_28015_MISSING_REQUIRED_ATTRIBUTE("ERR_28015_MISSING_REQUIRED_ATTRIBUTE"),
 +    ERR_28016_INCORRECT_ATTRIBUTE_VALUE("ERR_28016_INCORRECT_ATTRIBUTE_VALUE"),
 +    ERR_28017_REPLACE_OPERATION_FORBIDDEN_ON_SCHEMA_SUBENTRY("ERR_28017_REPLACE_OPERATION_FORBIDDEN_ON_SCHEMA_SUBENTRY"),
 +    ERR_28018_UNDEFINED_MODIFY_OPERATION("ERR_28018_UNDEFINED_MODIFY_OPERATION"),
 +    ERR_28019_UNKOWN_INDEX("ERR_28019_UNKOWN_INDEX"),
  
      // apacheds-interceptors-subtree errors          29000 - 29999
++    ERR_29000_CANNOT_PARSE_SUBTREE_SPECIFICATION("ERR_29000_CANNOT_PARSE_SUBTREE_SPECIFICATION"),
++    ERR_29001_SUBENTRY_WITHOUT_OC("ERR_29001_SUBENTRY_WITHOUT_OC"),
++    ERR_29002_AMINISTRATION_POINT_WITHOUT_ADMINISTRATIVE_ROLE("ERR_29002_AMINISTRATION_POINT_WITHOUT_ADMINISTRATIVE_ROLE"),
++    ERR_29003_CANNOT_PARSE_SUBTREE_SPECIFICATION_FOR("ERR_29003_CANNOT_PARSE_SUBTREE_SPECIFICATION_FOR"),
++    ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS("ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS"),
++
      // apacheds-interceptors-trigger errors          30000 - 30999
      // apacheds-jdbm-partition errors                31000 - 31999
      ERR_31001_ODD_NUMBER_OF_BYTES_IN_SERIALIZED_STRING("ERR_31001_ODD_NUMBER_OF_BYTES_IN_SERIALIZED_STRING"),
@@@ -555,13 -536,23 +561,11 @@@
      ERR_44("ERR_44"),
      ERR_47("ERR_47"),
      ERR_48("ERR_48"),
 -    ERR_49("ERR_49"),
      ERR_50("ERR_50"),
      ERR_51("ERR_51"),
 -    ERR_52("ERR_52"),
      ERR_53("ERR_53"),
- 
 -    ERR_54("ERR_54"),
 -    ERR_55("ERR_55"),
 -    ERR_56("ERR_56"),
 -    ERR_57("ERR_57"),
 -    ERR_58("ERR_58"),
 -    ERR_59("ERR_59"),
 -    ERR_60("ERR_60"),
 -    ERR_61("ERR_61"),
 -    ERR_62("ERR_62"),
      ERR_63("ERR_63"),
      ERR_64("ERR_64"),
--    ERR_71("ERR_71"),
      ERR_72("ERR_72"),
      ERR_73("ERR_73"),
      ERR_74("ERR_74"),
@@@ -646,14 -637,20 +650,8 @@@
      ERR_272_MODIFY_LEAVES_NO_STRUCTURAL_OBJECT_CLASS("ERR_272_MODIFY_LEAVES_NO_STRUCTURAL_OBJECT_CLASS"),
      ERR_273("ERR_273"),
      ERR_274("ERR_274"),
 -    ERR_275("ERR_275"),
 -    ERR_277("ERR_277"),
 -    ERR_278("ERR_278"),
 -    ERR_279("ERR_279"),
 -    ERR_280("ERR_280"),
      ERR_281("ERR_281"),
      ERR_282("ERR_282"),
- 
-     
 -    ERR_283("ERR_283"),
 -    ERR_284("ERR_284"),
 -    ERR_285("ERR_285"),
--    ERR_305("ERR_305"),
--    ERR_306("ERR_306"),
--    ERR_307("ERR_307"),
--    ERR_308("ERR_308"),
      ERR_313("ERR_313"),
      ERR_319("ERR_319"),
      ERR_329("ERR_329"),
diff --cc i18n/src/main/resources/org/apache/directory/server/i18n/errors.properties
index 52cd93f0b4,dd2af03bb5..1aae23a0bb
--- a/i18n/src/main/resources/org/apache/directory/server/i18n/errors.properties
+++ b/i18n/src/main/resources/org/apache/directory/server/i18n/errors.properties
@@@ -354,27 -354,8 +354,33 @@@ ERR_27006_REFERAL_ENTRY_WITHOUT_REF_ATT
  
  # apacheds-interceptors-schema errors           28000 - 28999
  ERR_28000_OBJECT_NOT_FOUND_IN_AT_REGISTRY={0} not found within the attributeType registry
 +ERR_28001_NULL_FILTER=A filter should not be null
 +ERR_28002_CANNOT_MODIFY_ATTRIBUTE_=Cannot modify the attribute : {0}
 +ERR_28003_CANNOT_ADD_ALREADY_PRESENT_VALUE=Cannot add a value which is already present : {0}
 +ERR_28004_CANNOT_REMOVE_ABSENT_ATTRIBUTE=Trying to remove an non-existant attribute: {0}
 +ERR_28005_CANNOT_REMOVE_ABSENT_VALUE=Cannot remove an absent value from attribute : {0}
 +ERR_28006_ABSTRACT_OBJECT_CLASS_CANNOT_INHERIT_NON_ABSTRACT=An ABSTRACT ObjectClass cannot inherit from an objectClass which is not ABSTRACT
 +ERR_28007_AUXILIARY_OC_MUST_INHERIT_ABSTRACT_OR_AUXILIARY=An AUXILiARY ObjectClass cannot inherit from an objectClass which is not ABSTRACT or AUXILIARY
 +ERR_28008_SUPERIOR_MUST_EXIST=Cannot have a superior which does not exist
 +ERR_28009__ENTRY_WITHOUT_STRUCTURAL_OC=Entry {0} does not contain a STRUCTURAL ObjectClass
 +ERR_28010_ENTRY_HAS_2_STRUCTURAL_OC=Entry {0} contains more than one STRUCTURAL ObjectClass: {1}
 +ERR_28011_MISSING_ATTRIBUTE_TYPE_PRESENT_IN_RDN=Entry {0} does not have the {1} attributeType, which is part of the RDN";
 +ERR_28012_ATTRIBUTE_NOT_FOUND_IN_REGISTRY={0} not found in attribute registry!
 +ERR_28013_ATTRIBUTE_NOT_DECLARED_IN_OC=Attribute {0} not declared in objectClasses of entry {1}
 +ERR_28014_MANY_VALUES_FOR_SINGLE_VALUE_ATTRIBUTE=More than one value has been provided for the single-valued attribute: {0}
 +ERR_28015_MISSING_REQUIRED_ATTRIBUTE=Required attributes {0} not found within entry {1}
 +ERR_28016_INCORRECT_ATTRIBUTE_VALUE=Attribute value ''{0}'' for attribute ''{1}'' is syntactically incorrect
 +ERR_28017_REPLACE_OPERATION_FORBIDDEN_ON_SCHEMA_SUBENTRY=Modify REPLACE operations on schema subentries are not allowed\: it''s just silly to destroy and recreate so many \nschema entities that reside in schema operational attributes.  Instead use \na targeted combination of modify ADD and REMOVE operations.
 +ERR_28018_UNDEFINED_MODIFY_OPERATION=Undefined modify operation: {0}
 +ERR_28019_UNKOWN_INDEX=Unknown index into handler array: {0}
  
  # apacheds-interceptors-subtree errors          29000 - 29999
++ERR_29000_CANNOT_PARSE_SUBTREE_SPECIFICATION=failed to parse the new subtreeSpecification
++ERR_29001_SUBENTRY_WITHOUT_OC=A subentry must have an objectClass attribute
++ERR_29002_AMINISTRATION_POINT_WITHOUT_ADMINISTRATIVE_ROLE=Administration point {0} does not contain an administrativeRole attribute! An administrativeRole attribute in the administrative point is required to add a subordinate subentry.
++ERR_29003_CANNOT_PARSE_SUBTREE_SPECIFICATION_FOR=Failed while parsing subtreeSpecification for {0}
++ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS=Will not allow rename operation on entries with administrative descendants.
++
  # apacheds-interceptors-trigger errors          30000 - 30999
  # apacheds-jdbm-partition errors                31000 - 31999
  ERR_31001_ODD_NUMBER_OF_BYTES_IN_SERIALIZED_STRING=The serialized String contains an odd number of bytes
@@@ -541,17 -522,27 +547,13 @@@ ERR_7=Cannot create a digested passwor
  ERR_32=The ModifyTimestamp operational attribute cannot be modified by a user
  ERR_43=The id {0} does not have any OID. It should be a wrong AttributeType.
  ERR_44=Wrong AttributeType, does not have an associated OID : {0}
--# ERR_45=
--# ERR_46=
  ERR_47=The value stored in an Human Readable attribute as a byte[] should be convertible to a String"
  ERR_48=The value stored in a non Human Readable attribute as a String should be convertible to a byte[]
 -ERR_49=A filter should not be null
  ERR_50=A Substring filter should be used only on Human Readable attributes
  ERR_51=A Extensible filter should be used only on Human Readable attributes
 -ERR_52=Cannot modify the attribute : {0}
  ERR_53=The new Attribute or one of its value is incorrect : {0}
- 
 -ERR_54=Cannot add a value which is already present : {0}
 -ERR_55=Trying to remove an non-existant attribute: {0}
 -ERR_56=Cannot remove an absent value from attribute : {0}
 -ERR_57=An ABSTRACT ObjectClass cannot inherit from an objectClass which is not ABSTRACT
 -ERR_58=An AUXILiARY ObjectClass cannot inherit from an objectClass which is not ABSTRACT or AUXILIARY
 -ERR_59=Cannot have a superior which does not exist
 -ERR_60=Entry {0} does not contain a STRUCTURAL ObjectClass
 -ERR_61=Entry {0} contains more than one STRUCTURAL ObjectClass: {1}
 -ERR_62=Entry {0} does not have the {1} attributeType, which is part of the RDN";
  ERR_63=The value stored in a not Human Readable attribute as a String should be convertible to a byte[]
  ERR_64=The value is not valid. It should be a String or a byte[]
--ERR_71=failed to parse the new subtreeSpecification
  ERR_72=failed to parse entryTrigger: {0}
  ERR_73=TriggerSpecification parser failure on ''{0}''. Cannot add Trigger Specifications to TriggerSpecCache.
  ERR_74=SynchWorker failed to synch directory.
@@@ -561,33 -552,33 +563,10 @@@ ERR_86=DitContentRule loading NY
  ERR_87=DitStructureRule loading NYI
  ERR_88=MatchingRuleUse loading NYI
  ERR_89=NameForm loading NYI
--# ERR_92=
--# ERR_93=
--# ERR_94=
--# ERR_95=
--# ERR_96=
--# ERR_97=
--# ERR_98=
--# ERR_99=
--# ERR_100=
--# ERR_101=
--# ERR_102=
--# ERR_103=
--# ERR_104=
--# ERR_105= 
--# ERR_106=
--# ERR_107=
--# ERR_108=
--# ERR_109=
--# ERR_110=
--# ERR_111=
  ERR_113_COULD_NOT_DELETE_FILE_OR_DIRECTORY=Could not delete file or directory {0}
  ERR_115=Failed to delete the working directory.
  ERR_116=Failed to delete\: 
--# ERR_123=
  ERR_128=Failed to identify OID for\: 
--# ERR_129=
--# ERR_130=
  ERR_135=Cannot create a ticket for the {0} KerberosPrincipal, error : {1}
  ERR_136=Cannot create a ticket : {0}
  ERR_137=Cannot encode the Ticket object, the PDU size is {0} when only {1} bytes has been allocated
@@@ -659,26 -650,36 +638,15 @@@ ERR_271=Failed to get SPI
  ERR_272_MODIFY_LEAVES_NO_STRUCTURAL_OBJECT_CLASS=Modify operation leaves no structural objectClass for entry {0}
  ERR_273=Modify operation attempts to delete RDN attribute {0} on entry {1} violates schema constraints
  ERR_274=Modify operation attempts to delete RDN attribute values in use for {0} on entry {1} and violates schema constraints
 -ERR_275={0} not found in attribute registry!
 -ERR_277=Attribute {0} not declared in objectClasses of entry {1}
 -ERR_278=More than one value has been provided for the single-valued attribute: {0}
 -ERR_279=Required attributes {0} not found within entry {1}
 -ERR_280=Attribute value ''{0}'' for attribute ''{1}'' is syntactically incorrect
  ERR_281=The value is not a valid String
  ERR_282=The value stored in an Human Readable attribute is not a String
- 
 -ERR_283=Modify REPLACE operations on schema subentries are not allowed\: it''s just silly to destroy and recreate so many \nschema entities that reside in schema operational attributes.  Instead use \na targeted combination of modify ADD and REMOVE operations.
 -ERR_284=Undefined modify operation: {0}
 -ERR_285=Unknown index into handler array: {0}
 -# ERR_298=
 -# ERR_299=
 -# ERR_300=
--ERR_305=A subentry must have an objectClass attribute
--ERR_306=Administration point {0} does not contain an administrativeRole attribute! An administrativeRole attribute in the administrative point is required to add a subordinate subentry.
--ERR_307=Failed while parsing subtreeSpecification for {0}
--ERR_308=Will not allow rename operation on entries with administrative descendants.
  ERR_313=Invalid operation on Name {0}
--# ERR_318=
  ERR_319=Cannot execute indirect lookup if it is not the next operation.
  ERR_329=Failed to initialize interceptor chain.
  ERR_330=Interceptor not found: {0}
  ERR_331=Unknown interceptor name: {0}
  ERR_332=Other interceptor is using name ''{0}''
  ERR_333=Unexpected exception.
--# ERR_334=
--# ERR_340=
--# ERR_344=
--# ERR_398=
--# ERR_404=
  ERR_414=Cannot permit the addition of an attributeType with an no EQUALITY matchingRule \nand no super type from which to derive an EQUALITY matchingRule.
  ERR_415=Cannot permit the addition of an attributeType with which cannot resolve an EQUALITY matchingRule from it''s super type.
  ERR_416=Cannot permit the addition of an attributeType with no syntax \nand no super type from which to derive a syntax.
@@@ -689,16 -690,16 +657,6 @@@ ERR_433=Got more than one syntaxChecke
  ERR_434=Attribute of second rdn in dn ''{0}'' expected to be CN oid of {1} but was {2}
  ERR_435=Got more than one result for the entity name: {0}
  ERR_438=Bad serialization, tree : [{0}]
--# ERR_457=
--# ERR_458=
--# ERR_459=
--# ERR_460=
--# ERR_461=
--# ERR_462=
--# ERR_463=
--# ERR_469=
--# ERR_470=
--# ERR_471=
  ERR_472=Not a valid value
  ERR_473=expected string to normalize
  ERR_474=expected byte[] to normalize
@@@ -706,9 -707,9 +664,7 @@@ ERR_475=can''t move the root DS
  ERR_476=Unidentified change type value: {0}
  ERR_480=object deserialization stream close() failure
  ERR_482=object serialization stream close() failure
--# ERR_496=
  ERR_498=The prefix ''{0}'' is not an ancestor of this entry ''{1}''
--# ERR_502=
  ERR_503=Config partition cannot be null
  ERR_504=the config partition is not initialized
  ERR_505=system partition doesn''t exist
@@@ -725,8 -726,8 +681,6 @@@ ERR_516=Invalid child subordinate ke
  ERR_517=Argument ''recman'' is null
  ERR_518=Argument ''comparator'' is null
  ERR_519=Argument ''comparator'' must be serializable
--# ERR_520=Argument ''keySerializer'' must be serializable
--# ERR_521=Argument ''valueSerializer'' must be serializable
  ERR_522=Argument ''pageSize'' must be even
  ERR_523=Argument ''key'' is null
  ERR_524=Argument ''value'' is null
@@@ -735,7 -736,7 +689,6 @@@ ERR_526=Argument ''obj2'' is nul
  ERR_527=Platform doesn''t support UTF8 encoding
  ERR_528=MRU cache must contain at least one entry
  ERR_529=Cannot add null listener.
--# ERR_530=
  ERR_531=Internal cache cannot be null.
  ERR_532=key cannot be null.
  ERR_533=value cannot be null.
@@@ -773,7 -774,7 +726,6 @@@ ERR_564=Cannot change setting while tra
  ERR_565=Bad magic on log file
  ERR_566=Unexcepted exception: {0}
  ERR_567=Invalid record manager provider\: {0}\n[{1}\: {2}]
--# ERR_598=
  ERR_599=Error instantiating encoder for {0}
  ERR_601=Error accessing decoder for {0}
  ERR_602=Error instantiating decoder for {0}
@@@ -794,8 -795,8 +746,6 @@@ ERR_616={0} is not a supported encrypti
  ERR_617=Callback not supported
  ERR_618=File is too large {0}
  ERR_619=Could not completely read file {0}
--# ERR_620=
--# ERR_621=
  ERR_622=Cannot encode the AuthorizationDataEntry object, the PDU size is {0} when only {1} bytes has been allocated
  ERR_624=Failed to get catalog context {0}
  ERR_625=Failed to get initial context {0}
@@@ -806,7 -807,7 +756,6 @@@ ERR_629=A ''/'' at the end of a Kerbero
  ERR_630=Failed to connect to the server
  ERR_631=The specified configuration dir {0} doesn''t exist under {1}
  ERR_632=The expected context entry does not exist
--# ERR_645=
  ERR_651=SamSubsystem not enabled with key integrity checker
  ERR_652=Entry has null SAM type
  ERR_653=Could not find property ''{0}''
@@@ -815,21 -816,21 +764,16 @@@ ERR_655=Could not find verifier class '
  ERR_656=No public default constructor on class ''{0}'' for SamType( {1} ) 
  ERR_657=Failed on default constructor invocation for class ''{0}'' for SamType( {1} ) 
  ERR_658=column index max is {0}
--# ERR_665=
--# ERR_673=
  ERR_678=Failed on keystore load which should never really happen.
  ERR_679=Failed to create KeyManagerFactory
  ERR_680=Failed to initialize KeyManagerFactory
  ERR_684=Although ExtendedRequests are SingleReplyRequests they''re not handled using this base class. They have no target entry unlike the rest of the SingleReplyRequests
--# ERR_688=
  ERR_689=Unsupported protocol type {0}
  ERR_690=Failed to add the extended operation of type {0}
  ERR_691=Failed to add the SASL mechanism with the name {0} and implementation class {1}
  ERR_692=Failed to add NTLM provider
--# ERR_693=
  ERR_694=Empty ID: {0}
  ERR_695=Invalid replica ID\: 
--# ERR_696=
  ERR_697=The following schema directory from the installation layout could not be found\:\n\t{0}
  ERR_698=Unknown SchemaObject type: {0}
  ERR_701=Cursor pos ({0}) not in value range [0-{1}]
diff --cc interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
index 6a141a94a7,6a141a94a7..011207fb7d
--- a/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
+++ b/interceptors/subtree/src/main/java/org/apache/directory/server/core/subtree/SubentryInterceptor.java
@@@ -299,7 -299,7 +299,7 @@@ public class SubentryInterceptor extend
  
          if ( oc == null )
          {
--            throw new LdapSchemaViolationException( ResultCodeEnum.OBJECT_CLASS_VIOLATION, I18n.err( I18n.ERR_305 ) );
++            throw new LdapSchemaViolationException( ResultCodeEnum.OBJECT_CLASS_VIOLATION, I18n.err( I18n.ERR_29001_SUBENTRY_WITHOUT_OC ) );
          }
  
          if ( oc.contains( SchemaConstants.ACCESS_CONTROL_SUBENTRY_OC ) )
@@@ -462,7 -462,7 +462,7 @@@
          if ( ( administrativeRole == null ) || ( administrativeRole.size() <= 0 ) )
          {
              LOG.error( "The entry on {} is not an AdministrativePoint", apDn );
--            throw new LdapNoSuchAttributeException( I18n.err( I18n.ERR_306, apDn ) );
++            throw new LdapNoSuchAttributeException( I18n.err( I18n.ERR_29002_AMINISTRATION_POINT_WITHOUT_ADMINISTRATIVE_ROLE, apDn ) );
          }
      }
  
@@@ -481,7 -481,7 +481,7 @@@
          }
          catch ( Exception e )
          {
--            String msg = I18n.err( I18n.ERR_307, entry.getDn() );
++            String msg = I18n.err( I18n.ERR_29003_CANNOT_PARSE_SUBTREE_SPECIFICATION_FOR, entry.getDn() );
              LOG.warn( msg );
              throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, msg );
          }
@@@ -1130,7 -1130,7 +1130,7 @@@
              }
              catch ( Exception e )
              {
--                String msg = I18n.err( I18n.ERR_71 );
++                String msg = I18n.err( I18n.ERR_29000_CANNOT_PARSE_SUBTREE_SPECIFICATION );
                  LOG.error( msg, e );
                  throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, msg );
              }
@@@ -1394,7 -1394,7 +1394,7 @@@
              // can't be moved.
              if ( hasAdministrativeDescendant( moveContext, oldDn ) )
              {
--                String msg = I18n.err( I18n.ERR_308 );
++                String msg = I18n.err( I18n.ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS );
                  LOG.warn( msg );
                  throw new LdapSchemaViolationException( ResultCodeEnum.NOT_ALLOWED_ON_RDN, msg );
              }
@@@ -1509,7 -1509,7 +1509,7 @@@
          {
              if ( hasAdministrativeDescendant( moveAndRenameContext, oldDn ) )
              {
--                String msg = I18n.err( I18n.ERR_308 );
++                String msg = I18n.err( I18n.ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS );
                  LOG.warn( msg );
                  throw new LdapSchemaViolationException( ResultCodeEnum.NOT_ALLOWED_ON_RDN, msg );
              }
@@@ -1619,7 -1619,7 +1619,7 @@@
          {
              if ( hasAdministrativeDescendant( renameContext, oldDn ) )
              {
--                String msg = I18n.err( I18n.ERR_308 );
++                String msg = I18n.err( I18n.ERR_29004_CANNOT_RENAME_ENTRIES_WITH_ADMINISTRATIVE_DESCENDANTS );
                  LOG.warn( msg );
                  throw new LdapSchemaViolationException( ResultCodeEnum.NOT_ALLOWED_ON_RDN, msg );
              }