You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/12/13 21:07:51 UTC
svn commit: r486824 - in
/directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree:
BTreePartition.java jdbm/JdbmPartition.java
Author: akarasulu
Date: Wed Dec 13 12:07:49 2006
New Revision: 486824
URL: http://svn.apache.org/viewvc?view=rev&rev=486824
Log:
simplified jdbm and btree partition init sequences in preparation for breaking up the core
Modified:
directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java
directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
Modified: directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java?view=diff&rev=486824&r1=486823&r2=486824
==============================================================================
--- directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java (original)
+++ directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/BTreePartition.java Wed Dec 13 12:07:49 2006
@@ -63,13 +63,11 @@
{
private static final Logger log = LoggerFactory.getLogger( BTreePartition.class );
- /**
- * the search engine used to search the database
- */
+ /** the search engine used to search the database */
private SearchEngine searchEngine = null;
private Optimizer optimizer = new NoOpOptimizer();
- protected BTreePartitionConfiguration btpConfig;
+ protected BTreePartitionConfiguration xbtpConfig;
protected AttributeTypeRegistry attributeTypeRegistry = null;
protected OidRegistry oidRegistry = null;
@@ -94,7 +92,22 @@
*
* @param registries the schema entity registries
*/
- public void setRegistries( Registries registries )
+ public void initRegistries( Registries registries )
+ {
+ initRegistries1( registries );
+ }
+
+
+ /**
+ * This should be called second after initializing the optimizer with
+ * initOptimizer0. This is the same as calling initRegistries()
+ * (initRegistries actually calls initRegistries1) except it is protected
+ * to hide the '1' at the end of the method name. The '1' indicates it
+ * is the 2nd thing that must be executed during initialization.
+ *
+ * @param registries the schema entity registries
+ */
+ protected void initRegistries1( Registries registries )
{
attributeTypeRegistry = registries.getAttributeTypeRegistry();
oidRegistry = registries.getOidRegistry();
@@ -103,19 +116,17 @@
this.searchEngine = new DefaultSearchEngine( this, evaluator, enumerator, optimizer );
}
-
- public void init( DirectoryServiceConfiguration factoryCfg, PartitionConfiguration cfg )
- throws NamingException
+
+ /**
+ * Use this method to initialize the indices. Only call this after
+ * the registries and the optimizer have been enabled. The '2' at the end
+ * shows this is the 3rd init method called in the init sequence.
+ *
+ * @param indices
+ * @throws NamingException
+ */
+ protected void initIndices2(Set<String> indices ) throws NamingException
{
- this.btpConfig = BTreePartitionConfiguration.convert( cfg );
- if ( this.btpConfig.isOptimizerEnabled() )
- {
- optimizer = new DefaultOptimizer( this );
- }
-
- // Call this ONLY after trying to override the optimizer default above
- setRegistries( factoryCfg.getRegistries() );
-
Set<String> sysOidSet = new HashSet<String>();
sysOidSet.add( Oid.EXISTANCE );
sysOidSet.add( Oid.HIERARCHY );
@@ -128,7 +139,7 @@
// Used to calculate the system indices we must automatically add
Set<String> customAddedSystemIndices = new HashSet<String>();
- for ( Iterator ii = cfg.getIndexedAttributes().iterator(); ii.hasNext(); /**/ )
+ for ( Iterator ii = indices.iterator(); ii.hasNext(); /**/ )
{
/*
* NOTE
@@ -299,15 +310,54 @@
}
}
}
+ }
+
+ /**
+ * Called last (4th) to check if the suffix entry has been created on disk,
+ * and if not it is created.
+ *
+ * @param suffix
+ * @param entry
+ * @throws NamingException
+ */
+ protected void initSuffixEntry3( String suffix, Attributes entry ) throws NamingException
+ {
// add entry for context, if it does not exist
Attributes suffixOnDisk = getSuffixEntry();
if ( suffixOnDisk == null )
{
- LdapDN suffix = new LdapDN( cfg.getSuffix() );
- LdapDN normalizedSuffix = LdapDN.normalize( suffix, attributeTypeRegistry.getNormalizerMapping() );
- add( normalizedSuffix, cfg.getContextEntry() );
+ LdapDN dn = new LdapDN( suffix );
+ LdapDN normalizedSuffix = LdapDN.normalize( dn, attributeTypeRegistry.getNormalizerMapping() );
+ add( normalizedSuffix, entry );
}
+ }
+
+
+ /**
+ * Call this first in the init sequence to initialize the optimizer.
+ *
+ * @param cfg
+ */
+ protected void initOptimizer0( PartitionConfiguration cfg )
+ {
+ if ( cfg instanceof BTreePartitionConfiguration )
+ {
+ if ( ( ( BTreePartitionConfiguration ) cfg ).isOptimizerEnabled() )
+ {
+ optimizer = new DefaultOptimizer( this );
+ }
+ }
+ }
+
+
+ public void init( DirectoryServiceConfiguration factoryCfg, PartitionConfiguration cfg )
+ throws NamingException
+ {
+ initOptimizer0( cfg );
+ initRegistries1( factoryCfg.getRegistries() );
+ initIndices2( cfg.getIndexedAttributes() );
+ initSuffixEntry3( cfg.getSuffix(), cfg.getContextEntry() );
}
Modified: directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java?view=diff&rev=486824&r1=486823&r2=486824
==============================================================================
--- directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java (original)
+++ directory/branches/trunks/schema2/apacheds/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmPartition.java Wed Dec 13 12:07:49 2006
@@ -52,7 +52,6 @@
import org.apache.directory.server.core.partition.impl.btree.IndexAssertionEnumeration;
import org.apache.directory.server.core.partition.impl.btree.IndexNotFoundException;
import org.apache.directory.server.core.partition.impl.btree.IndexRecord;
-import org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration;
import org.apache.directory.shared.ldap.exception.LdapAuthenticationNotSupportedException;
import org.apache.directory.shared.ldap.exception.LdapNameNotFoundException;
@@ -96,6 +95,9 @@
/** true if open */
private boolean initialized;
+ /** true if we sync disks on every write operation */
+ private boolean isSyncOnWrite = true;
+
/** the normalized distinguished name index */
private Index ndnIdx;
@@ -133,15 +135,11 @@
{
if ( cfg instanceof BTreePartitionConfiguration )
{
- btpConfig = ( BTreePartitionConfiguration ) cfg;
- }
- else
- {
- btpConfig = MutableBTreePartitionConfiguration.getConfiguration( cfg );
+ isSyncOnWrite = ( ( BTreePartitionConfiguration ) cfg ).isSynchOnWrite();
}
- oidRegistry = factoryCfg.getRegistries().getOidRegistry();
- attributeTypeRegistry = factoryCfg.getRegistries().getAttributeTypeRegistry();
+ initOptimizer0( cfg );
+ initRegistries1( factoryCfg.getRegistries() );
OBJECT_CLASS_AT = attributeTypeRegistry.lookup( "objectClass" );
ALIAS_AT = attributeTypeRegistry.lookup( Partition.ALIAS_ATTRIBUTE );
@@ -187,7 +185,8 @@
indices = new HashMap<String,Index>();
sysIndices = new HashMap<String,Index>();
- super.init( factoryCfg, cfg );
+ initIndices2( cfg.getIndexedAttributes() );
+ initSuffixEntry3( cfg.getSuffix(), cfg.getContextEntry() );
initialized = true;
}
@@ -870,7 +869,7 @@
master.put( entry, id );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -929,7 +928,7 @@
master.delete( id );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -1274,7 +1273,7 @@
master.put( entry, id );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -1308,7 +1307,7 @@
master.put( entry, id );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -1433,7 +1432,7 @@
newUpdn.add( newUpdn.size(), newRdn ); // add da new upRdn
modifyDn( id, newUpdn, false ); // propagate dn changes
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -1518,7 +1517,7 @@
modifyRn( oldChildDn, newRdn, deleteOldRdn );
move( oldChildDn, childId, newParentDn );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}
@@ -1530,7 +1529,7 @@
BigInteger childId = getEntryId( oldChildDn.toString() );
move( oldChildDn, childId, newParentDn );
- if ( btpConfig.isSynchOnWrite() )
+ if ( isSyncOnWrite )
{
sync();
}