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

                 Key: DIRSERVER-1300
                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1300
             Project: Directory ApacheDS
          Issue Type: Bug
          Components: core-integ
    Affects Versions: 1.5.4
            Reporter: Aleksander Adamowski


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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to