Directory ApacheDS
  1. Directory ApacheDS
  2. DIRSERVER-1300

Only adding from LDIF is possible with injectEntries() in IntegrationUtils

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.5.4
    • Fix Version/s: 1.5.5
    • Component/s: core-integ
    • Labels:
      None

      Description

      The method org.apache.directory.server.core.integ.IntegrationUtils.injectEntries(DirectoryService, String) only supports adding entries - it assumes that there are no changetype: something-other-than-add entries in the LDIF. This greatly complicates modifying the intergration testing server's schema.

      So the following LDIF cannot be currently processed by injectEntries:

      version: 1
      dn: cn=schema
      changetype: modify
      add: attributeTypes
      attributeTypes: ( 1.3.6.1.4.1.12345.1.1 NAME 'customAttr1'
      DESC 'custom attribute 1'
      EQUALITY caseIgnoreMatch
      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
      SINGLE-VALUE )
      attributeTypes: ( 1.3.6.1.4.1.12345.1.2 NAME 'customAttr2'
      DESC 'custom attribute 2'
      EQUALITY caseIgnoreMatch
      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
      SINGLE-VALUE )
      -
      add: objectClasses
      objectClasses: ( .3.6.1.4.1.12345.2.1
      NAME 'customClass1'
      SUP top
      STRUCTURAL
      MUST ( cn $ customAttr1 )
      MAY ( customAttr2 ) )

      I've tracked down the problem and found out it's quite simple to add support for the remaining change types:

      Index: src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java
      ===================================================================
      — src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java (revision 731909)
      +++ src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java (working copy)
      @@ -99,8 +99,19 @@

      for ( LdifEntry entry : entries )
      {

      • service.getAdminSession().add(
      • new DefaultServerEntry( service.getRegistries(), entry.getEntry() ) );
        + if ( entry.isChangeAdd() )
        + { + service.getAdminSession().add( new DefaultServerEntry( service.getRegistries(), entry.getEntry() ) ); + + }

        + else if ( entry.isChangeModify() )
        +

        { + service.getAdminSession().modify( entry.getDn(), entry.getModificationItems() ); + }

        + else
        +

        { + throw new NamingException( "Unsupported changetype found in LDIF: " + entry.getChangeType() ); + }

        }
        }

      I'll attach the patch in a minute.

        Activity

          People

          • Assignee:
            Unassigned
            Reporter:
            Aleksander Adamowski PZU
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development