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 2010/10/11 15:15:45 UTC

svn commit: r1021335 - /directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java

Author: elecharny
Date: Mon Oct 11 13:15:45 2010
New Revision: 1021335

URL: http://svn.apache.org/viewvc?rev=1021335&view=rev
Log:
Created the readPartitons method

Modified:
    directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java

Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java?rev=1021335&r1=1021334&r2=1021335&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ConfigPartitionReader.java Mon Oct 11 13:15:45 2010
@@ -57,6 +57,7 @@ import java.util.TreeSet;
 import javax.naming.directory.SearchControls;
 
 import org.apache.directory.server.changepw.ChangePasswordServer;
+import org.apache.directory.server.config.beans.BTreePartitionBean;
 import org.apache.directory.server.config.beans.ChangeLogBean;
 import org.apache.directory.server.config.beans.DnsServerBean;
 import org.apache.directory.server.config.beans.InterceptorBean;
@@ -1240,7 +1241,14 @@ public class ConfigPartitionReader
     }
     
     
-    private Map<String, Partition> createPartitions( DN dirServiceDN ) throws Exception
+    /**
+     * Read the Partition from the configuration in DIT
+     * 
+     * @param dirServiceDN the DN under which Partitions are configured
+     * @return A map of partitions 
+     * @throws Exception If we cannot read some partition
+     */
+    private Map<String, BTreePartitionBean> readPartitions( DN dirServiceDN ) throws Exception
     {
         AttributeType adsPartitionIdeAt = schemaManager.getAttributeType( ConfigSchemaConstants.ADS_PARTITION_ID );
         PresenceNode filter = new PresenceNode( adsPartitionIdeAt );
@@ -1249,7 +1257,7 @@ public class ConfigPartitionReader
         IndexCursor<Long, Entry, Long> cursor = se.cursor( dirServiceDN, AliasDerefMode.NEVER_DEREF_ALIASES,
             filter, controls );
 
-        Map<String, Partition> partitions = new HashMap<String, Partition>();
+        Map<String, BTreePartitionBean> partitionBeans = new HashMap<String, BTreePartitionBean>();
 
         while ( cursor.next() )
         {
@@ -1261,12 +1269,13 @@ public class ConfigPartitionReader
             {
                 continue;
             }
+            
             EntryAttribute ocAttr = partitionEntry.get( OBJECT_CLASS_AT );
 
             if ( ocAttr.contains( ConfigSchemaConstants.ADS_JDBMPARTITION ) )
             {
-                JdbmPartition partition = createJdbmPartition( partitionEntry );
-                partitions.put( partition.getId(), partition );
+                JdbmPartitionBean jdbmPartitionBean = readJdbmPartition( partitionEntry );
+                partitionBeans.put( jdbmPartitionBean.getId(), jdbmPartitionBean );
             }
             else
             {
@@ -1276,9 +1285,33 @@ public class ConfigPartitionReader
 
         cursor.close();
 
+        return partitionBeans;
+    }
+    
+    
+    /**
+     * Create the set of Partitions instanciated from the configuration
+     * 
+     * @param dirServiceDN the DN under which Partitions are configured
+     * @return A Map of all the instanciated partitions
+     * @throws Exception If we cannot process some Partition
+     */
+    public Map<String, Partition> createPartitions( DN dirServiceDN ) throws Exception
+    {
+        Map<String, BTreePartitionBean> partitionBeans = readPartitions( dirServiceDN );
+        Map<String, Partition> partitions = new HashMap<String, Partition>( partitionBeans.size() );
+        
+        for ( String key : partitionBeans.keySet() )
+        {
+            BTreePartitionBean partitionBean = partitionBeans.get( key );
+            
+            JdbmPartition partition = createJdbmPartition( (JdbmPartitionBean)partitionBean );
+            partitions.put( key, partition );
+        }
+        
         return partitions;
     }
-
+    
     
     /**
      * Read the JdbmPartitionBean from the configuration in DIT
@@ -1324,6 +1357,7 @@ public class ConfigPartitionReader
         return jdbmPartitionBean;
     }
 
+    
     /**
      * Create a new instance of a JdbmPartition from an instance of JdbmIndexBean
      * 
@@ -1347,6 +1381,30 @@ public class ConfigPartitionReader
 
         return partition;
     }
+
+    
+    /**
+     * Create a new instance of a JdbmPartition from an instance of JdbmIndexBean
+     * 
+     * @param partitionEntry The entry containing the JdbmPartition configuration
+     * @return An JdbmPartition instance
+     * @throws Exception If the instance cannot be created
+     */
+    private JdbmPartition createJdbmPartition( JdbmPartitionBean jdbmPartitionBean ) throws Exception
+    {
+        JdbmPartition partition = new JdbmPartition();
+        
+        partition.setSchemaManager( schemaManager );
+        partition.setCacheSize( jdbmPartitionBean.getCacheSize() );
+        partition.setId( jdbmPartitionBean.getId() );
+        partition.setOptimizerEnabled( jdbmPartitionBean.isOptimizerEnabled() );
+        partition.setPartitionDir( new File( jdbmPartitionBean.getPartitionDir() ) );
+        partition.setSuffix( jdbmPartitionBean.getSuffix() );
+        partition.setSyncOnWrite( jdbmPartitionBean.isSyncOnWrite() );
+        partition.setIndexedAttributes( createIndexes( jdbmPartitionBean.getIndexedAttributes() ) );
+
+        return partition;
+    }
     
 
     private Set<JdbmIndexBean<String, Entry>> readIndexes( DN partitionDN ) throws Exception