You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/01/14 16:44:27 UTC

svn commit: r899248 - /directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java

Author: kayyagari
Date: Thu Jan 14 15:44:27 2010
New Revision: 899248

URL: http://svn.apache.org/viewvc?rev=899248&view=rev
Log:
added support for loading the test LDIF entries from the configured file system location

Modified:
    directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java

Modified: directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=899248&r1=899247&r2=899248&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java (original)
+++ directory/apacheds/branches/apacheds-cidit/default-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java Thu Jan 14 15:44:27 2010
@@ -22,6 +22,7 @@
 
 
 import java.io.File;
+import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -61,6 +62,8 @@
 import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
 import org.apache.directory.shared.ldap.filter.PresenceNode;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.message.AliasDerefMode;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.SchemaManager;
@@ -89,7 +92,21 @@
     
     /** the parent directory of the config partition's working directory */
     private File workDir;
-    
+
+    /** LDIF file filter */
+    private FilenameFilter ldifFilter = new FilenameFilter()
+    {
+        public boolean accept( File file, String name )
+        {
+            if( file.isDirectory() )
+            {
+                return true;
+            }
+            
+            return file.getName().toLowerCase().endsWith( ".ldif" );
+        }
+    };
+
     private static final Logger LOG = LoggerFactory.getLogger( ConfigPartitionReader.class );
 
 
@@ -277,8 +294,8 @@
         EntryAttribute testEntryAttr = dsEntry.get( "ads-dsTestEntries" );
         if ( testEntryAttr != null )
         {
-            //process the test entries, should this be a FS location?
-            //dirService.setTestEntries( testEntries );
+            String entryFilePath = testEntryAttr.getString();
+            dirService.setTestEntries( getTestEntries( entryFilePath ) );
         }
 
         if ( !isEnabled( dsEntry ) )
@@ -590,6 +607,44 @@
         return journal;
     }
     
+
+    private List<LdifEntry> getTestEntries( String entryFilePath ) throws Exception
+    {
+        List<LdifEntry> entries = new ArrayList<LdifEntry>();
+        
+        File file = new File( entryFilePath );
+        if( !file.exists() )
+        {
+            LOG.warn( "LDIF test entry file path doesn't exist {}", entryFilePath );
+        }
+        else
+        {
+            LOG.info( "parsing the LDIF file(s) present at the path {}", entryFilePath );
+            loadEntries( file, entries );
+        }
+        
+        return entries;
+    }
+    
+    
+    private void loadEntries( File ldifFile, List<LdifEntry> entries ) throws Exception
+    {
+        if( ldifFile.isDirectory() )
+        {
+            File[] files = ldifFile.listFiles( ldifFilter );
+            for( File f : files )
+            {
+                loadEntries( f, entries );
+            }
+        }
+        else
+        {
+            LdifReader reader = new LdifReader();
+            entries.addAll( reader.parseLdifFile( ldifFile.getAbsolutePath() ) );
+            reader.close();
+        }
+    }
+    
     
     /**
      * internal class used for holding the Interceptor classname and order configuration