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 2011/07/22 02:02:18 UTC
svn commit: r1149411 [3/6] - in /directory/apacheds/trunk:
core-annotations/src/main/java/org/apache/directory/server/core/factory/
core-annotations/src/test/java/org/apache/directory/server/core/factory/
core-api/src/main/java/org/apache/directory/ser...
Modified: directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java Fri Jul 22 00:02:02 2011
@@ -29,12 +29,10 @@ import java.util.List;
import java.util.UUID;
import org.apache.directory.server.core.interceptor.context.AddOperationContext;
-import org.apache.directory.server.core.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveOperationContext;
import org.apache.directory.server.core.interceptor.context.RenameOperationContext;
-import org.apache.directory.server.core.partition.impl.avl.AvlPartition;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.server.xdbm.IndexEntry;
@@ -53,6 +51,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.model.name.Dn;
import org.apache.directory.shared.ldap.model.name.Rdn;
import org.apache.directory.shared.ldap.model.schema.AttributeType;
+import org.apache.directory.shared.ldap.model.schema.SchemaManager;
import org.apache.directory.shared.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -122,9 +121,9 @@ public class LdifPartition extends Abstr
/**
* Creates a new instance of LdifPartition.
*/
- public LdifPartition()
+ public LdifPartition( SchemaManager schemaManager )
{
- wrappedPartition = new AvlPartition();
+ super( schemaManager );
}
@@ -133,92 +132,85 @@ public class LdifPartition extends Abstr
*/
protected void doInit() throws Exception
{
- // Initialize the AvlPartition
- wrappedPartition.setId( id );
- wrappedPartition.setSuffix( suffix );
- wrappedPartition.initialize();
-
- this.searchEngine = wrappedPartition.getSearchEngine();
-
- LOG.debug( "id is : {}", wrappedPartition.getId() );
-
- File partitionDir = new File( getPartitionPath() );
-
- // Initialize the suffixDirectory : it's a composition
- // of the workingDirectory followed by the suffix
- if ( ( suffix == null ) || ( suffix.isEmpty() ) )
- {
- String msg = I18n.err( I18n.ERR_150 );
- LOG.error( msg );
- throw new LdapInvalidDnException( msg );
- }
-
- if ( !suffix.isSchemaAware() )
- {
- suffix.apply( schemaManager );
- }
-
- String suffixDirName = getFileName( suffix );
- suffixDirectory = new File( partitionDir, suffixDirName );
-
- // Create the context entry now, if it does not exists, or load the
- // existing entries
- if ( suffixDirectory.exists() )
+ if ( !initialized )
{
- loadEntries( partitionDir );
- }
- else
- {
- // The partition directory does not exist, we have to create it, including parent directories
- try
+ File partitionDir = new File( getPartitionPath() );
+
+ // Initialize the suffixDirectory : it's a composition
+ // of the workingDirectory followed by the suffix
+ if ( ( suffixDn == null ) || ( suffixDn.isEmpty() ) )
{
- suffixDirectory.mkdirs();
+ String msg = I18n.err( I18n.ERR_150 );
+ LOG.error( msg );
+ throw new LdapInvalidDnException( msg );
}
- catch ( SecurityException se )
+
+ if ( !suffixDn.isSchemaAware() )
{
- String msg = I18n.err( I18n.ERR_151, suffixDirectory.getAbsolutePath(), se.getLocalizedMessage() );
- LOG.error( msg );
- throw se;
+ suffixDn.apply( schemaManager );
}
-
- // And create the context entry too
- File contextEntryFile = new File( suffixDirectory + CONF_FILE_EXTN );
-
- LOG.info( "ldif file doesn't exist {}, creating it.", contextEntryFile.getAbsolutePath() );
-
- if ( contextEntry == null )
+
+ String suffixDirName = getFileName( suffixDn );
+ suffixDirectory = new File( partitionDir, suffixDirName );
+
+ super.doInit();
+
+ // Create the context entry now, if it does not exists, or load the
+ // existing entries
+ if ( suffixDirectory.exists() )
+ {
+ loadEntries( partitionDir );
+ }
+ else
{
- if ( contextEntryFile.exists() )
+ // The partition directory does not exist, we have to create it, including parent directories
+ try
{
- LdifReader reader = new LdifReader( contextEntryFile );
- contextEntry = new DefaultEntry( schemaManager, reader.next().getEntry() );
- reader.close();
+ suffixDirectory.mkdirs();
}
- else
+ catch ( SecurityException se )
{
- // No context entry and no LDIF file exists.
- // Skip initialization of context entry here, it will be added later.
- return;
+ String msg = I18n.err( I18n.ERR_151, suffixDirectory.getAbsolutePath(), se.getLocalizedMessage() );
+ LOG.error( msg );
+ throw se;
}
+
+ // And create the context entry too
+ File contextEntryFile = new File( suffixDirectory + CONF_FILE_EXTN );
+
+ LOG.info( "ldif file doesn't exist {}, creating it.", contextEntryFile.getAbsolutePath() );
+
+ if ( contextEntry == null )
+ {
+ if ( contextEntryFile.exists() )
+ {
+ LdifReader reader = new LdifReader( contextEntryFile );
+ contextEntry = new DefaultEntry( schemaManager, reader.next().getEntry() );
+ reader.close();
+ }
+ else
+ {
+ // No context entry and no LDIF file exists.
+ // Skip initialization of context entry here, it will be added later.
+ return;
+ }
+ }
+
+ if ( contextEntry.get( SchemaConstants.ENTRY_CSN_AT ) == null )
+ {
+ contextEntry.add( SchemaConstants.ENTRY_CSN_AT, defaultCSNFactory.newInstance().toString() );
+ }
+
+ if ( contextEntry.get( SchemaConstants.ENTRY_UUID_AT ) == null )
+ {
+ String uuid = UUID.randomUUID().toString();
+ contextEntry.add( SchemaConstants.ENTRY_UUID_AT, uuid );
+ }
+
+ // And add this entry to the underlying partition
+ AddOperationContext addContext = new AddOperationContext( null, contextEntry );
+ add( addContext );
}
-
- if ( contextEntry.get( SchemaConstants.ENTRY_CSN_AT ) == null )
- {
- contextEntry.add( SchemaConstants.ENTRY_CSN_AT, defaultCSNFactory.newInstance().toString() );
- }
-
- if ( contextEntry.get( SchemaConstants.ENTRY_UUID_AT ) == null )
- {
- String uuid = UUID.randomUUID().toString();
- contextEntry.add( SchemaConstants.ENTRY_UUID_AT, uuid );
- }
-
- FileWriter fw = new FileWriter( contextEntryFile );
- fw.write( LdifUtils.convertToLdif( contextEntry ) );
- fw.close();
-
- // And add this entry to the underlying partition
- wrappedPartition.getStore().add( contextEntry );
}
}
@@ -231,29 +223,19 @@ public class LdifPartition extends Abstr
*/
public void add( AddOperationContext addContext ) throws LdapException
{
- wrappedPartition.add( addContext );
- add( addContext.getEntry() );
- }
-
-
- /**
- * {@inheritDoc}
- */
- public void bind( BindOperationContext bindContext ) throws LdapException
- {
- wrappedPartition.bind( bindContext );
+ super.add( addContext );
+ addEntry( addContext.getEntry() );
}
/**
* {@inheritDoc}
*/
- @Override
public void delete( Long id ) throws LdapException
{
Entry entry = lookup( id );
- wrappedPartition.delete( id );
+ super.delete( id );
if ( entry != null )
{
@@ -272,9 +254,7 @@ public class LdifPartition extends Abstr
LOG.debug( "deleted file {} {}", parentFile.getAbsoluteFile(), deleted );
}
-
}
-
}
@@ -285,7 +265,14 @@ public class LdifPartition extends Abstr
{
Long id = getEntryId( modifyContext.getDn() );
- wrappedPartition.modify( modifyContext.getDn(), modifyContext.getModItems().toArray( new Modification[]{} ) );
+ try
+ {
+ super.modify( modifyContext.getDn(), modifyContext.getModItems().toArray( new Modification[]{} ) );
+ }
+ catch ( Exception e )
+ {
+ throw new LdapOperationException( e.getMessage(), e );
+ }
// Get the modified entry and store it in the context for post usage
Entry modifiedEntry = lookup( id );
@@ -316,7 +303,7 @@ public class LdifPartition extends Abstr
Dn oldDn = moveContext.getDn();
Long id = getEntryId( oldDn );
- wrappedPartition.move( moveContext );
+ super.move( moveContext );
// Get the modified entry
Entry modifiedEntry = lookup( id );
@@ -333,7 +320,7 @@ public class LdifPartition extends Abstr
Dn oldDn = moveAndRenameContext.getDn();
Long id = getEntryId( oldDn );
- wrappedPartition.moveAndRename( moveAndRenameContext );
+ super.moveAndRename( moveAndRenameContext );
// Get the modified entry and store it in the context for post usage
Entry modifiedEntry = lookup( id );
@@ -352,7 +339,7 @@ public class LdifPartition extends Abstr
Long id = getEntryId( oldDn );
// Create the new entry
- wrappedPartition.rename( renameContext );
+ super.rename( renameContext );
// Get the modified entry and store it in the context for post usage
Entry modifiedEntry = lookup( id );
@@ -377,7 +364,7 @@ public class LdifPartition extends Abstr
private void entryMoved( Dn oldEntryDn, Entry modifiedEntry, Long entryIdOld ) throws LdapException
{
// First, add the new entry
- add( modifiedEntry );
+ addEntry( modifiedEntry );
// Then, if there are some children, move then to the new place
try
@@ -391,7 +378,7 @@ public class LdifPartition extends Abstr
// except the parent entry add the rest of entries
if ( entry.getId() != entryIdOld )
{
- add( wrappedPartition.lookup( entry.getId() ) );
+ addEntry( lookup( entry.getId() ) );
}
}
@@ -467,7 +454,8 @@ public class LdifPartition extends Abstr
}
// call add on the wrapped partition not on the self
- wrappedPartition.getStore().add( serverEntry );
+ AddOperationContext addContext = new AddOperationContext( null, serverEntry );
+ super.add( addContext );
}
}
@@ -496,29 +484,30 @@ public class LdifPartition extends Abstr
*/
private File getFile( Dn entryDn, boolean create ) throws LdapException
{
- StringBuilder filePath = new StringBuilder();
- filePath.append( suffixDirectory ).append( File.separator );
-
- Dn baseDn = entryDn.getDescendantOf( suffix );
- int size = baseDn.size();
-
- for ( int i = 0; i < size - 1; i++ )
- {
- String rdnFileName = getFileName( baseDn.getRdn( size - 1 - i ) );
-
- filePath.append( rdnFileName ).append( File.separator );
- }
-
- String rdnFileName = getFileName( entryDn.getRdn() ) + CONF_FILE_EXTN;
-
String parentDir = null;
+ String rdnFileName = null;
- if ( entryDn.equals( suffix ) )
+ if ( entryDn.equals( suffixDn ) )
{
parentDir = suffixDirectory.getParent() + File.separator;
+ rdnFileName = suffixDn.getName() + CONF_FILE_EXTN;
}
else
{
+ StringBuilder filePath = new StringBuilder();
+ filePath.append( suffixDirectory ).append( File.separator );
+
+ Dn baseDn = entryDn.getDescendantOf( suffixDn );
+ int size = baseDn.size();
+
+ for ( int i = 0; i < size - 1; i++ )
+ {
+ rdnFileName = getFileName( baseDn.getRdn( size - 1 - i ) );
+
+ filePath.append( rdnFileName ).append( File.separator );
+ }
+
+ rdnFileName = getFileName( entryDn.getRdn() ) + CONF_FILE_EXTN;
parentDir = filePath.toString();
}
@@ -553,6 +542,7 @@ public class LdifPartition extends Abstr
StringBuilder fileName = new StringBuilder( "" );
Iterator<Ava> iterator = rdn.iterator();
+
while ( iterator.hasNext() )
{
Ava ava = iterator.next();
@@ -695,10 +685,10 @@ public class LdifPartition extends Abstr
/**
- * Write the new entry on disk. It does not exist, as this ha sbeen checked
+ * Write the new entry on disk. It does not exist, as this has been checked
* by the ExceptionInterceptor.
*/
- private void add( Entry entry ) throws LdapException
+ private void addEntry( Entry entry ) throws LdapException
{
try
{
@@ -741,15 +731,6 @@ public class LdifPartition extends Abstr
/**
- * @return the contextEntry
- */
- public Entry getContextEntry()
- {
- return contextEntry;
- }
-
-
- /**
* @param contextEntry the contextEntry to set
*/
public void setContextEntry( String contextEntry ) throws LdapLdifException
@@ -775,12 +756,4 @@ public class LdifPartition extends Abstr
throw new LdapLdifException( le.getMessage(), le );
}
}
-
-
- @Override
- protected void doDestroy() throws Exception
- {
- wrappedPartition.destroy();
- }
-
}
\ No newline at end of file
Modified: directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/SingleFileLdifPartition.java Fri Jul 22 00:02:02 2011
@@ -32,24 +32,24 @@ import java.util.UUID;
import javax.naming.InvalidNameException;
import org.apache.directory.server.core.interceptor.context.AddOperationContext;
-import org.apache.directory.server.core.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveOperationContext;
import org.apache.directory.server.core.interceptor.context.RenameOperationContext;
-import org.apache.directory.server.core.partition.impl.avl.AvlPartition;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.xdbm.IndexCursor;
import org.apache.directory.server.xdbm.IndexEntry;
-import org.apache.directory.server.xdbm.impl.avl.AvlStore;
import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.apache.directory.shared.ldap.model.entry.Modification;
import org.apache.directory.shared.ldap.model.exception.LdapException;
import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
+import org.apache.directory.shared.ldap.model.exception.LdapOperationException;
import org.apache.directory.shared.ldap.model.ldif.LdifEntry;
import org.apache.directory.shared.ldap.model.ldif.LdifReader;
import org.apache.directory.shared.ldap.model.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.model.schema.SchemaManager;
import org.apache.directory.shared.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,53 +81,51 @@ public class SingleFileLdifPartition ext
/**
* Creates a new instance of SingleFileLdifPartition.
*/
- public SingleFileLdifPartition()
+ public SingleFileLdifPartition( SchemaManager schemaManager )
{
- wrappedPartition = new AvlPartition();
+ super( schemaManager );
}
@Override
protected void doInit() throws InvalidNameException, Exception
{
- if ( getPartitionPath() == null )
+ if ( !initialized )
{
- throw new IllegalArgumentException( "Partition path cannot be null" );
- }
-
- File partitionFile = new File( getPartitionPath() );
- if ( partitionFile.exists() && !partitionFile.isFile() )
- {
- throw new IllegalArgumentException( "Partition path must be a LDIF file" );
- }
-
- ldifFile = new RandomAccessFile( partitionFile, "rws" );
-
- // Initialize the AvlPartition
- wrappedPartition.setId( id );
- wrappedPartition.setSuffix( suffix );
- wrappedPartition.setSchemaManager( schemaManager );
- wrappedPartition.initialize();
-
- this.searchEngine = wrappedPartition.getSearchEngine();
-
- LOG.debug( "id is : {}", wrappedPartition.getId() );
-
- // Initialize the suffixDirectory : it's a composition
- // of the workingDirectory followed by the suffix
- if ( ( suffix == null ) || ( suffix.isEmpty() ) )
- {
- String msg = I18n.err( I18n.ERR_150 );
- LOG.error( msg );
- throw new LdapInvalidDnException( msg );
- }
-
- if ( !suffix.isSchemaAware() )
- {
- suffix.apply( schemaManager );
+ if ( getPartitionPath() == null )
+ {
+ throw new IllegalArgumentException( "Partition path cannot be null" );
+ }
+
+ File partitionFile = new File( getPartitionPath() );
+
+ if ( partitionFile.exists() && !partitionFile.isFile() )
+ {
+ throw new IllegalArgumentException( "Partition path must be a LDIF file" );
+ }
+
+ ldifFile = new RandomAccessFile( partitionFile, "rws" );
+
+ LOG.debug( "id is : {}", getId() );
+
+ // Initialize the suffixDirectory : it's a composition
+ // of the workingDirectory followed by the suffix
+ if ( ( suffixDn == null ) || ( suffixDn.isEmpty() ) )
+ {
+ String msg = I18n.err( I18n.ERR_150 );
+ LOG.error( msg );
+ throw new LdapInvalidDnException( msg );
+ }
+
+ if ( !suffixDn.isSchemaAware() )
+ {
+ suffixDn.apply( schemaManager );
+ }
+
+ super.doInit();
+
+ loadEntries();
}
-
- loadEntries();
}
@@ -150,12 +148,12 @@ public class SingleFileLdifPartition ext
contextEntry = new DefaultEntry( schemaManager, ldifEntry.getEntry() );
- AvlStore store = wrappedPartition.getStore();
-
- if ( suffix.equals( contextEntry.getDn() ) )
+ if ( suffixDn.equals( contextEntry.getDn() ) )
{
addMandatoryOpAt( contextEntry );
- store.add( contextEntry );
+
+ AddOperationContext addContext = new AddOperationContext( null, contextEntry );
+ super.add( addContext );
}
else
{
@@ -169,30 +167,32 @@ public class SingleFileLdifPartition ext
Entry entry = new DefaultEntry( schemaManager, ldifEntry.getEntry() );
addMandatoryOpAt( entry );
- store.add( entry );
+
+ AddOperationContext addContext = new AddOperationContext( null, entry );
+ super.add( addContext );
}
parser.close();
}
- public void bind( BindOperationContext bindContext ) throws LdapException
- {
- wrappedPartition.bind( bindContext );
- }
-
-
+ //---------------------------------------------------------------------------------------------
+ // Operations
+ //---------------------------------------------------------------------------------------------
+ /**
+ * {@inheritDoc}
+ */
public void add( AddOperationContext addContext ) throws LdapException
{
synchronized ( lock )
{
- wrappedPartition.add( addContext );
+ super.add( addContext );
if ( contextEntry == null )
{
Entry entry = addContext.getEntry();
- if ( entry.getDn().equals( suffix ) )
+ if ( entry.getDn().equals( suffixDn ) )
{
contextEntry = entry;
}
@@ -204,44 +204,65 @@ public class SingleFileLdifPartition ext
}
+ /**
+ * {@inheritDoc}
+ */
public void modify( ModifyOperationContext modifyContext ) throws LdapException
{
synchronized ( lock )
{
- wrappedPartition.modify( modifyContext );
+ try
+ {
+ Entry modifiedEntry = super.modify( modifyContext.getDn(), modifyContext.getModItems().toArray( new Modification[]{} ) );
+ modifyContext.setAlteredEntry( modifiedEntry );
+ }
+ catch ( Exception e )
+ {
+ throw new LdapOperationException( e.getMessage(), e );
+ }
+
dirty = true;
rewritePartitionData();
}
}
+ /**
+ * {@inheritDoc}
+ */
public void rename( RenameOperationContext renameContext ) throws LdapException
{
synchronized ( lock )
{
- wrappedPartition.rename( renameContext );
+ super.rename( renameContext );
dirty = true;
rewritePartitionData();
}
}
+ /**
+ * {@inheritDoc}
+ */
public void move( MoveOperationContext moveContext ) throws LdapException
{
synchronized ( lock )
{
- wrappedPartition.move( moveContext );
+ super.move( moveContext );
dirty = true;
rewritePartitionData();
}
}
+ /**
+ * {@inheritDoc}
+ */
public void moveAndRename( MoveAndRenameOperationContext opContext ) throws LdapException
{
synchronized ( lock )
{
- wrappedPartition.moveAndRename( opContext );
+ super.moveAndRename( opContext );
dirty = true;
rewritePartitionData();
}
@@ -253,7 +274,7 @@ public class SingleFileLdifPartition ext
{
synchronized ( lock )
{
- wrappedPartition.delete( id );
+ super.delete( id );
dirty = true;
rewritePartitionData();
}
@@ -279,7 +300,7 @@ public class SingleFileLdifPartition ext
{
ldifFile.setLength( 0 ); // wipe the file clean
- Long suffixId = wrappedPartition.getEntryId( suffix );
+ Long suffixId = getEntryId( suffixDn );
if( suffixId == null )
{
@@ -287,16 +308,16 @@ public class SingleFileLdifPartition ext
return;
}
- IndexCursor<Long, Entry, Long> cursor = wrappedPartition.getOneLevelIndex().forwardCursor( suffixId );
+ IndexCursor<Long, Entry, Long> cursor = getOneLevelIndex().forwardCursor( suffixId );
- appendLdif( wrappedPartition.lookup( suffixId ) );
+ appendLdif( lookup( suffixId ) );
while ( cursor.next() )
{
Long childId = cursor.get().getId();
- Entry entry = wrappedPartition.lookup( childId );
+ Entry entry = lookup( childId );
appendLdif( entry );
@@ -340,7 +361,7 @@ public class SingleFileLdifPartition ext
if ( cursor == null )
{
- cursor = wrappedPartition.getOneLevelIndex().forwardCursor( entryId );
+ cursor = getOneLevelIndex().forwardCursor( entryId );
cursor.beforeFirst();
cursorMap.put( entryId, cursor );
}
@@ -355,9 +376,9 @@ public class SingleFileLdifPartition ext
do
{
IndexEntry<Long, Entry, Long> idxEntry = cursor.get();
- Entry entry = wrappedPartition.lookup( idxEntry.getId() );
+ Entry entry = lookup( idxEntry.getId() );
- Long childId = wrappedPartition.getEntryId( entry.getDn() );
+ Long childId = getEntryId( entry.getDn() );
appendLdif( entry );
@@ -443,6 +464,9 @@ public class SingleFileLdifPartition ext
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected void doDestroy() throws Exception
{
Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/LdifPartitionTest.java Fri Jul 22 00:02:02 2011
@@ -137,9 +137,9 @@ public class LdifPartitionTest
// initialize the store
// initialize the partition
- partition = new LdifPartition();
+ partition = new LdifPartition( schemaManager );
partition.setId( "test-ldif" );
- partition.setSuffix( new Dn( "ou=test,ou=system" ) );
+ partition.setSuffixDn( new Dn( "ou=test,ou=system" ) );
partition.setSchemaManager( schemaManager );
partition.setPartitionPath( wkdir.toURI() );
@@ -152,10 +152,9 @@ public class LdifPartitionTest
private Entry createEntry( String dn ) throws Exception
{
- Entry entry = new DefaultEntry( schemaManager );
- entry.setDn( new Dn( schemaManager, dn ) );
- entry.put( SchemaConstants.ENTRY_CSN_AT, defaultCSNFactory.newInstance().toString() );
- entry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
+ Entry entry = new DefaultEntry( schemaManager, dn,
+ SchemaConstants.ENTRY_CSN_AT, defaultCSNFactory.newInstance().toString(),
+ SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
Entry clonedEntry = new ClonedServerEntry( entry );
Modified: directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/SingleFileLdifPartitionTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/SingleFileLdifPartitionTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/SingleFileLdifPartitionTest.java (original)
+++ directory/apacheds/trunk/ldif-partition/src/test/java/org/apache/directory/server/core/partition/SingleFileLdifPartitionTest.java Fri Jul 22 00:02:02 2011
@@ -212,10 +212,10 @@ public class SingleFileLdifPartitionTest
rf.setLength( 0 );
}
- SingleFileLdifPartition partition = new SingleFileLdifPartition();
+ SingleFileLdifPartition partition = new SingleFileLdifPartition( schemaManager );
partition.setId( "test-ldif" );
partition.setPartitionPath( new File( fileName ).toURI() );
- partition.setSuffix( new Dn( "ou=test,ou=system" ) );
+ partition.setSuffixDn( new Dn( "ou=test,ou=system" ) );
partition.setSchemaManager( schemaManager );
partition.initialize();
@@ -351,7 +351,7 @@ public class SingleFileLdifPartitionTest
partition.add( addCtx );
ModifyOperationContext modOpCtx = new ModifyOperationContext( mockSession );
- modOpCtx.setEntry( new ClonedServerEntry( contextEntry ) );
+ modOpCtx.setEntry( contextEntry );
List<Modification> modItems = new ArrayList<Modification>();
Modified: directory/apacheds/trunk/server-annotations/src/test/java/org/apache/directory/server/factory/DirectoryServiceAnnotationTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-annotations/src/test/java/org/apache/directory/server/factory/DirectoryServiceAnnotationTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-annotations/src/test/java/org/apache/directory/server/factory/DirectoryServiceAnnotationTest.java (original)
+++ directory/apacheds/trunk/server-annotations/src/test/java/org/apache/directory/server/factory/DirectoryServiceAnnotationTest.java Fri Jul 22 00:02:02 2011
@@ -153,12 +153,12 @@ public class DirectoryServiceAnnotationT
if ( "example".equalsIgnoreCase( partition.getId() ) )
{
assertTrue( partition.isInitialized() );
- assertEquals( "dc=example,dc=com", partition.getSuffix().getName() );
+ assertEquals( "dc=example,dc=com", partition.getSuffixDn().getName() );
}
else if ( "schema".equalsIgnoreCase( partition.getId() ) )
{
assertTrue( partition.isInitialized() );
- assertEquals( "ou=schema", partition.getSuffix().getName() );
+ assertEquals( "ou=schema", partition.getSuffixDn().getName() );
}
}
@@ -220,12 +220,12 @@ public class DirectoryServiceAnnotationT
if ( "example".equalsIgnoreCase( partition.getId() ) )
{
assertTrue( partition.isInitialized() );
- assertEquals( "dc=example,dc=com", partition.getSuffix().getName() );
+ assertEquals( "dc=example,dc=com", partition.getSuffixDn().getName() );
}
else if ( "schema".equalsIgnoreCase( partition.getId() ) )
{
assertTrue( partition.isInitialized() );
- assertEquals( "ou=schema", partition.getSuffix().getName() );
+ assertEquals( "ou=schema", partition.getSuffixDn().getName() );
}
}
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=1149411&r1=1149410&r2=1149411&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 Fri Jul 22 00:02:02 2011
@@ -38,7 +38,6 @@ import javax.naming.directory.SearchCont
import org.apache.directory.server.config.beans.AdsBaseBean;
import org.apache.directory.server.config.beans.ConfigBean;
-import org.apache.directory.server.config.beans.ReplConsumerBean;
import org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition;
import org.apache.directory.server.i18n.I18n;
import org.apache.directory.server.xdbm.ForwardIndexEntry;
@@ -749,7 +748,7 @@ public class ConfigPartitionReader
// the requested element is mandatory so let's throw an exception
String message = "No directoryService instance was configured under the Dn "
- + configPartition.getSuffix();
+ + configPartition.getSuffixDn();
LOG.error( message );
throw new ConfigurationException( message );
}
@@ -899,7 +898,7 @@ public class ConfigPartitionReader
if ( baseDn == null )
{
- baseDn = configPartition.getSuffix();
+ baseDn = configPartition.getSuffixDn();
}
List<AdsBaseBean> beans = read( baseDn, objectClass, SearchScope.ONELEVEL, MANDATORY );
Modified: directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ReadOnlyConfigurationPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ReadOnlyConfigurationPartition.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ReadOnlyConfigurationPartition.java (original)
+++ directory/apacheds/trunk/server-config/src/main/java/org/apache/directory/server/config/ReadOnlyConfigurationPartition.java Fri Jul 22 00:02:02 2011
@@ -27,17 +27,16 @@ import java.util.UUID;
import javax.naming.InvalidNameException;
import org.apache.directory.server.core.interceptor.context.AddOperationContext;
-import org.apache.directory.server.core.interceptor.context.BindOperationContext;
import org.apache.directory.server.core.interceptor.context.ModifyOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveAndRenameOperationContext;
import org.apache.directory.server.core.interceptor.context.MoveOperationContext;
import org.apache.directory.server.core.interceptor.context.RenameOperationContext;
import org.apache.directory.server.core.partition.ldif.AbstractLdifPartition;
-import org.apache.directory.server.xdbm.impl.avl.AvlStore;
import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
import org.apache.directory.shared.ldap.model.entry.Entry;
import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
import org.apache.directory.shared.ldap.model.ldif.LdifEntry;
import org.apache.directory.shared.ldap.model.ldif.LdifReader;
import org.apache.directory.shared.ldap.model.name.Dn;
@@ -65,8 +64,18 @@ public class ReadOnlyConfigurationPartit
*/
public ReadOnlyConfigurationPartition( InputStream inputStream, SchemaManager schemaManager )
{
+ super( schemaManager );
this.inputStream = inputStream;
- setSchemaManager( schemaManager );
+ id = "config";
+
+ try
+ {
+ suffixDn = new Dn( schemaManager, "ou=config" );
+ }
+ catch ( LdapInvalidDnException lide )
+ {
+ // Nothing to do
+ }
}
@@ -75,17 +84,14 @@ public class ReadOnlyConfigurationPartit
*/
protected void doInit() throws InvalidNameException, Exception
{
- // Initializing the wrapped partition
- setId( "config" );
- setSuffix( new Dn( "ou=config" ) );
- wrappedPartition.setSchemaManager( schemaManager );
- wrappedPartition.initialize();
-
- // Getting the search engine
- searchEngine = wrappedPartition.getSearchEngine();
-
- // Load LDIF entries
- loadLdifEntries();
+ if ( ! initialized )
+ {
+ // Initializing the wrapped partition
+ super.doInit();
+
+ // Load LDIF entries
+ loadLdifEntries();
+ }
}
@@ -108,18 +114,17 @@ public class ReadOnlyConfigurationPartit
return;
}
- // Getting the wrapped partition store
- AvlStore<Entry> store = wrappedPartition.getStore();
-
// Getting the context entry
LdifEntry ldifEntry = itr.next();
contextEntry = new DefaultEntry( schemaManager, ldifEntry.getEntry() );
// Checking the context entry
- if ( suffix.equals( contextEntry.getDn() ) )
+ if ( suffixDn.equals( contextEntry.getDn() ) )
{
addMandatoryOpAt( contextEntry );
- store.add( contextEntry );
+
+ AddOperationContext addContext = new AddOperationContext( null, contextEntry );
+ super.add( addContext );
}
else
{
@@ -131,7 +136,9 @@ public class ReadOnlyConfigurationPartit
{
Entry entry = new DefaultEntry( schemaManager, itr.next().getEntry() );
addMandatoryOpAt( entry );
- store.add( entry );
+
+ AddOperationContext addContext = new AddOperationContext( null, contextEntry );
+ super.add( addContext );
}
// Closing the reader
@@ -160,15 +167,9 @@ public class ReadOnlyConfigurationPartit
}
- /**
- * {@inheritDoc}
- */
- public void bind( BindOperationContext bindContext ) throws LdapException
- {
- wrappedPartition.bind( bindContext );
- }
-
-
+ //---------------------------------------------------------------------------------------------
+ // Operations
+ //---------------------------------------------------------------------------------------------
/**
* {@inheritDoc}
*/
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ChangePasswordConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -110,10 +110,10 @@ public class ChangePasswordConfigReaderT
File configDir = new File( workDir, "changePasswordServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "changePasswordServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigPartitionReaderTest.java Fri Jul 22 00:02:02 2011
@@ -103,10 +103,10 @@ public class ConfigPartitionReaderTest
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "config.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java Fri Jul 22 00:02:02 2011
@@ -32,8 +32,6 @@ import java.util.Comparator;
import java.util.List;
import org.apache.commons.io.FileUtils;
-import com.mycila.junit.concurrent.Concurrency;
-import com.mycila.junit.concurrent.ConcurrentJunitRunner;
import org.apache.directory.server.config.beans.ConfigBean;
import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
import org.apache.directory.shared.ldap.model.entry.Entry;
@@ -51,6 +49,9 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import com.mycila.junit.concurrent.Concurrency;
+import com.mycila.junit.concurrent.ConcurrentJunitRunner;
+
/**
* Test class for ConfigWriter
@@ -109,10 +110,10 @@ public class ConfigWriterTest
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "config.ldif", true );
// Creating of the config partition
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DhcpServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DhcpServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DhcpServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DhcpServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -103,10 +103,10 @@ public class DhcpServerConfigReaderTest
File configDir = new File( workDir, "dhcpServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "dhcpServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DnsServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DnsServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DnsServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/DnsServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -101,10 +101,10 @@ public class DnsServerConfigReaderTest
File configDir = new File( workDir, "dnsServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "dnsServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/HttpServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -101,13 +101,14 @@ public class HttpServerConfigReaderTest
File configDir = new File( workDir, "httpServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "httpServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
+
ConfigPartitionReader cpReader = new ConfigPartitionReader( configPartition );
ConfigBean configBean = cpReader.readConfig( new Dn( schemaManager, "ou=servers,ads-directoryServiceId=default,ou=config" ), ConfigSchemaConstants.ADS_HTTP_SERVER_OC.getValue() );
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/KerberosServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -102,10 +102,10 @@ public class KerberosServerConfigReaderT
File configDir = new File( workDir, "kerberosServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "kerberosServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/LdapServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -102,10 +102,10 @@ public class LdapServerConfigReaderTest
File configDir = new File( workDir, "ldapServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "ldapServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/NtpServerConfigReaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/NtpServerConfigReaderTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/NtpServerConfigReaderTest.java (original)
+++ directory/apacheds/trunk/server-config/src/test/java/org/apache/directory/server/config/NtpServerConfigReaderTest.java Fri Jul 22 00:02:02 2011
@@ -101,10 +101,10 @@ public class NtpServerConfigReaderTest
File configDir = new File( workDir, "ntpServer" ); // could be any directory, cause the config is now in a single file
String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "ntpServer.ldif", true );
- SingleFileLdifPartition configPartition = new SingleFileLdifPartition();
+ SingleFileLdifPartition configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( new File( configFile ).toURI() );
- configPartition.setSuffix( new Dn( "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
Modified: directory/apacheds/trunk/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java (original)
+++ directory/apacheds/trunk/server-jndi/src/main/java/org/apache/directory/server/configuration/ApacheDS.java Fri Jul 22 00:02:02 2011
@@ -140,7 +140,7 @@ public class ApacheDS
if( p.getSchemaManager() == null )
{
- LOG.info( "setting the schema manager for partition {}", p.getSuffix() );
+ LOG.info( "setting the schema manager for partition {}", p.getSuffixDn() );
p.setSchemaManager( schemaManager );
}
}
@@ -155,7 +155,7 @@ public class ApacheDS
if( sysPartition.getSchemaManager() == null )
{
- LOG.info( "setting the schema manager for partition {}", sysPartition.getSuffix() );
+ LOG.info( "setting the schema manager for partition {}", sysPartition.getSuffixDn() );
sysPartition.setSchemaManager( schemaManager );
}
@@ -475,11 +475,7 @@ public class ApacheDS
private void initSchema() throws Exception
{
SchemaPartition schemaPartition = directoryService.getSchemaService().getSchemaPartition();
-
- // Init the LdifPartition
- LdifPartition ldifPartition = new LdifPartition();
String workingDirectory = directoryService.getInstanceLayout().getPartitionsDirectory().getPath();
- ldifPartition.setPartitionPath( new File( workingDirectory, "schema" ).toURI() );
// Extract the schema on disk (a brand new one) and load the registries
File schemaRepository = new File( workingDirectory, "schema" );
@@ -494,12 +490,16 @@ public class ApacheDS
extractor.extractOrCopy();
}
- schemaPartition.setWrappedPartition( ldifPartition );
-
SchemaLoader loader = new LdifSchemaLoader( schemaRepository );
SchemaManager schemaManager = new DefaultSchemaManager( loader );
directoryService.setSchemaManager( schemaManager );
+ // Init the LdifPartition
+ LdifPartition ldifPartition = new LdifPartition( schemaManager );
+ ldifPartition.setPartitionPath( new File( workingDirectory, "schema" ).toURI() );
+
+ schemaPartition.setWrappedPartition( ldifPartition );
+
// We have to load the schema now, otherwise we won't be able
// to initialize the Partitions, as we won't be able to parse
// and normalize their suffix Dn
Modified: directory/apacheds/trunk/server-jndi/src/test/java/org/apache/directory/server/configuration/ApacheDSTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-jndi/src/test/java/org/apache/directory/server/configuration/ApacheDSTest.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/server-jndi/src/test/java/org/apache/directory/server/configuration/ApacheDSTest.java (original)
+++ directory/apacheds/trunk/server-jndi/src/test/java/org/apache/directory/server/configuration/ApacheDSTest.java Fri Jul 22 00:02:02 2011
@@ -52,7 +52,7 @@ public class ApacheDSTest
JdbmPartition example = new JdbmPartition();
example.setId( "example" );
- example.setSuffix( "dc=example,dc=com" );
+ example.setSuffixDn( "dc=example,dc=com" );
Dn contextDn = new Dn( "dc=example,dc=com" );
contextDn.normalize( directoryService.getRegistries().getAttributeTypeRegistry().getNormalizerMapping() );
ServerEntry contextEntry = new DefaultServerEntry( directoryService.getRegistries(), contextDn );
Modified: directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java (original)
+++ directory/apacheds/trunk/service-builder/src/main/java/org/apache/directory/server/config/ServiceBuilder.java Fri Jul 22 00:02:02 2011
@@ -1138,7 +1138,7 @@ public class ServiceBuilder
return null;
}
- JdbmPartition jdbmPartition = new JdbmPartition();
+ JdbmPartition jdbmPartition = new JdbmPartition( directoryService.getSchemaManager() );
jdbmPartition.setCacheSize( jdbmPartitionBean.getPartitionCacheSize() );
jdbmPartition.setId( jdbmPartitionBean.getPartitionId() );
@@ -1148,7 +1148,7 @@ public class ServiceBuilder
try
{
- jdbmPartition.setSuffix( jdbmPartitionBean.getPartitionSuffix() );
+ jdbmPartition.setSuffixDn( jdbmPartitionBean.getPartitionSuffix() );
}
catch ( LdapInvalidDnException lide )
{
Modified: directory/apacheds/trunk/service/src/main/java/org/apache/directory/server/ApacheDsService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/service/src/main/java/org/apache/directory/server/ApacheDsService.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/service/src/main/java/org/apache/directory/server/ApacheDsService.java (original)
+++ directory/apacheds/trunk/service/src/main/java/org/apache/directory/server/ApacheDsService.java Fri Jul 22 00:02:02 2011
@@ -149,6 +149,7 @@ public class ApacheDsService
LOG.info( "using partition dir {}", partitionsDir.getAbsolutePath() );
+ initSchemaManager( instanceLayout );
initSchemaLdifPartition( instanceLayout );
initConfigPartition( instanceLayout );
@@ -184,21 +185,17 @@ public class ApacheDsService
startHttpServer( directoryServiceBean.getHttpServerBean(), directoryService );
}
-
+
/**
- * initialize the schema partition by loading the schema LDIF files
+ * Initialize the schema Manager by loading the schema LDIF files
*
* @param instanceLayout the instance layout
* @throws Exception in case of any problems while extracting and writing the schema files
*/
- private void initSchemaLdifPartition( InstanceLayout instanceLayout ) throws Exception
+ private void initSchemaManager( InstanceLayout instanceLayout ) throws Exception
{
File schemaPartitionDirectory = new File( instanceLayout.getPartitionsDirectory(), "schema" );
- // Init the LdifPartition
- schemaLdifPartition = new LdifPartition();
- schemaLdifPartition.setPartitionPath( schemaPartitionDirectory.toURI() );
-
// Extract the schema on disk (a brand new one) and load the registries
if ( schemaPartitionDirectory.exists() )
{
@@ -214,6 +211,7 @@ public class ApacheDsService
SchemaLoader loader = new LdifSchemaLoader( schemaPartitionDirectory );
schemaManager = new DefaultSchemaManager( loader );
+
// We have to load the schema now, otherwise we won't be able
// to initialize the Partitions, as we won't be able to parse
// and normalize their suffix Dn
@@ -226,6 +224,22 @@ public class ApacheDsService
throw new Exception( I18n.err( I18n.ERR_317, Exceptions.printErrors(errors) ) );
}
}
+
+
+ /**
+ * Initialize the schema partition
+ *
+ * @param instanceLayout the instance layout
+ * @throws Exception in case of any problems while initializing the SchemaPartition
+ */
+ private void initSchemaLdifPartition( InstanceLayout instanceLayout ) throws Exception
+ {
+ File schemaPartitionDirectory = new File( instanceLayout.getPartitionsDirectory(), "schema" );
+
+ // Init the LdifPartition
+ schemaLdifPartition = new LdifPartition( schemaManager );
+ schemaLdifPartition.setPartitionPath( schemaPartitionDirectory.toURI() );
+ }
/**
@@ -249,10 +263,10 @@ public class ApacheDsService
isConfigPartitionFirstExtraction = true;
}
- configPartition = new SingleFileLdifPartition();
+ configPartition = new SingleFileLdifPartition( schemaManager );
configPartition.setId( "config" );
configPartition.setPartitionPath( confFile.toURI() );
- configPartition.setSuffix( new Dn( schemaManager, "ou=config" ) );
+ configPartition.setSuffixDn( new Dn( schemaManager, "ou=config" ) );
configPartition.setSchemaManager( schemaManager );
configPartition.initialize();
@@ -269,7 +283,6 @@ public class ApacheDsService
SchemaPartition schemaPartition = directoryService.getSchemaService().getSchemaPartition();
schemaPartition.setWrappedPartition( schemaLdifPartition );
- schemaPartition.setSchemaManager( schemaManager );
directoryService.addPartition( configPartition );
@@ -632,7 +645,7 @@ public class ApacheDsService
ExprNode filter = new PresenceNode( SchemaConstants.OBJECT_CLASS_AT );
- EntryFilteringCursor cursor = session.search( partition.getSuffix(), SearchScope.SUBTREE, filter,
+ EntryFilteringCursor cursor = session.search( partition.getSuffixDn(), SearchScope.SUBTREE, filter,
AliasDerefMode.NEVER_DEREF_ALIASES, new HashSet<AttributeTypeOptions>( MANDATORY_ENTRY_ATOP_MAP.values() ) );
cursor.beforeFirst();
Modified: directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java (original)
+++ directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java Fri Jul 22 00:02:02 2011
@@ -173,7 +173,7 @@ public class FrameworkRunner extends Blo
else
{
// No : define a default DS for the suite then
- DirectoryServiceFactory dsf = DefaultDirectoryServiceFactory.DEFAULT;
+ DirectoryServiceFactory dsf = DefaultDirectoryServiceFactory.class.newInstance();
directoryService = dsf.getDirectoryService();
// enable CL explicitly cause we are not using DSAnnotationProcessor
@@ -196,7 +196,7 @@ public class FrameworkRunner extends Blo
else
{
// No : define a default class DS then
- DirectoryServiceFactory dsf = DefaultDirectoryServiceFactory.DEFAULT;
+ DirectoryServiceFactory dsf = DefaultDirectoryServiceFactory.class.newInstance();
directoryService = dsf.getDirectoryService();
// enable CL explicitly cause we are not using DSAnnotationProcessor
@@ -247,7 +247,8 @@ public class FrameworkRunner extends Blo
if ( suite == null )
{
// print out information which partition factory we use
- PartitionFactory partitionFactory = DefaultDirectoryServiceFactory.DEFAULT.getPartitionFactory();
+ DirectoryServiceFactory dsFactory = DefaultDirectoryServiceFactory.class.newInstance();
+ PartitionFactory partitionFactory = dsFactory.getPartitionFactory();
LOG.debug( "Using partition factory {}", partitionFactory.getClass().getSimpleName() );
}
Modified: directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkSuite.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkSuite.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkSuite.java (original)
+++ directory/apacheds/trunk/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkSuite.java Fri Jul 22 00:02:02 2011
@@ -24,6 +24,7 @@ import org.apache.directory.server.annot
import org.apache.directory.server.core.DirectoryService;
import org.apache.directory.server.core.factory.DSAnnotationProcessor;
import org.apache.directory.server.core.factory.DefaultDirectoryServiceFactory;
+import org.apache.directory.server.core.factory.DirectoryServiceFactory;
import org.apache.directory.server.core.factory.PartitionFactory;
import org.apache.directory.server.factory.ServerAnnotationProcessor;
import org.apache.directory.server.ldap.LdapServer;
@@ -163,7 +164,8 @@ public class FrameworkSuite extends Suit
try
{
// print out information which partition factory we use
- PartitionFactory partitionFactory = DefaultDirectoryServiceFactory.DEFAULT.getPartitionFactory();
+ DirectoryServiceFactory dsFactory = DefaultDirectoryServiceFactory.class.newInstance();
+ PartitionFactory partitionFactory = dsFactory.getPartitionFactory();
LOG.debug( "Using partition factory {}", partitionFactory.getClass().getSimpleName() );
// Create and initialize the Suite DS
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java?rev=1149411&r1=1149410&r2=1149411&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/core/partition/impl/avl/AvlPartition.java Fri Jul 22 00:02:02 2011
@@ -20,22 +20,24 @@
package org.apache.directory.server.core.partition.impl.avl;
-import java.util.HashSet;
-import java.util.Set;
+import java.net.URI;
+import org.apache.directory.server.constants.ApacheSchemaConstants;
+import org.apache.directory.server.core.partition.impl.btree.LongComparator;
import org.apache.directory.server.core.partition.impl.xdbm.AbstractXdbmPartition;
+import org.apache.directory.server.xdbm.Index;
import org.apache.directory.server.xdbm.impl.avl.AvlIndex;
-import org.apache.directory.server.xdbm.impl.avl.AvlStore;
+import org.apache.directory.server.xdbm.impl.avl.AvlMasterTable;
+import org.apache.directory.server.xdbm.impl.avl.AvlRdnIndex;
import org.apache.directory.server.xdbm.search.impl.CursorBuilder;
import org.apache.directory.server.xdbm.search.impl.DefaultOptimizer;
import org.apache.directory.server.xdbm.search.impl.DefaultSearchEngine;
import org.apache.directory.server.xdbm.search.impl.EvaluatorBuilder;
import org.apache.directory.server.xdbm.search.impl.NoOpOptimizer;
import org.apache.directory.shared.ldap.model.entry.Entry;
-import org.apache.directory.shared.ldap.model.entry.Modification;
-import org.apache.directory.shared.ldap.model.exception.LdapException;
-import org.apache.directory.shared.ldap.model.exception.LdapOperationErrorException;
-import org.apache.directory.shared.ldap.model.name.Dn;
+import org.apache.directory.shared.ldap.model.schema.SchemaManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
@@ -45,16 +47,16 @@ import org.apache.directory.shared.ldap.
*/
public class AvlPartition extends AbstractXdbmPartition<Long>
{
- private Set<AvlIndex<?, Entry>> indexedAttributes;
-
+ /** static logger */
+ private static final Logger LOG = LoggerFactory.getLogger( AvlPartition.class );
+
/**
* Creates a store based on AVL Trees.
*/
- public AvlPartition()
+ public AvlPartition( SchemaManager schemaManager )
{
- super( new AvlStore<Entry>() );
- indexedAttributes = new HashSet<AvlIndex<?, Entry>>();
+ super( schemaManager );
}
@@ -63,80 +65,123 @@ public class AvlPartition extends Abstra
*/
protected void doInit() throws Exception
{
- setSchemaManager( schemaManager );
-
- EvaluatorBuilder<Long> evaluatorBuilder = new EvaluatorBuilder<Long>( store, schemaManager );
- CursorBuilder<Long> cursorBuilder = new CursorBuilder<Long>( store, evaluatorBuilder );
-
- // setup optimizer and registries for parent
- if ( !optimizerEnabled )
- {
- optimizer = new NoOpOptimizer();
- }
- else
+ if ( !initialized )
{
- optimizer = new DefaultOptimizer<Entry, Long>( store );
+ EvaluatorBuilder<Long> evaluatorBuilder = new EvaluatorBuilder<Long>( this, schemaManager );
+ CursorBuilder<Long> cursorBuilder = new CursorBuilder<Long>( this, evaluatorBuilder );
+
+ // setup optimizer and registries for parent
+ if ( !optimizerEnabled )
+ {
+ optimizer = new NoOpOptimizer();
+ }
+ else
+ {
+ optimizer = new DefaultOptimizer<Entry, Long>( this );
+ }
+
+ searchEngine = new DefaultSearchEngine<Long>( this, cursorBuilder, evaluatorBuilder, optimizer );
+
+ if ( isInitialized() )
+ {
+ return;
+ }
+
+ // Create the master table (the table containing all the entries)
+ master = new AvlMasterTable<Entry>( id, new LongComparator(), null, false );
+
+ setupSystemIndices();
+ setupUserIndices();
}
+ }
- searchEngine = new DefaultSearchEngine<Long>( store, cursorBuilder, evaluatorBuilder, optimizer );
- if ( store.isInitialized() )
- {
- return;
- }
+ @Override
+ protected void doDestroy() throws Exception
+ {
+ // Nothing to do, we currently have no index (yet)
+ }
- // initialize the store
- store.setId( getId() );
- suffix.apply( schemaManager );
- store.setSuffixDn( suffix );
- for ( AvlIndex<?, Entry> index : indexedAttributes )
- {
- String oid = schemaManager.getAttributeTypeRegistry().getOidByName( index.getAttributeId() );
-
- if ( !index.getAttributeId().equals( oid ) )
- {
- index.setAttributeId( oid );
- }
-
- store.addIndex( index );
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Long getDefaultId()
+ {
+ return 1L;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public Long getRootId()
+ {
+ return 0L;
+ }
- store.init( schemaManager );
+
+ /**
+ * {@inheritDoc}
+ */
+ public void sync() throws Exception
+ {
+ // Nothing to do
}
- public final void modify( Dn dn, Modification... modifications ) throws LdapException
+ /**
+ * always returns false, cause this is a in-memory store
+ */
+ @Override
+ public boolean isSyncOnWrite()
{
- try
- {
- store.modify( dn, modifications );
- }
- catch ( Exception e )
- {
- throw new LdapOperationErrorException( e.getMessage(), e );
- }
+ return false;
}
- /*
- * TODO requires review
- *
- * This getter deviates from the norm. all the partitions
- * so far written never return a reference to store but I think that in this
- * case the presence of this method gives significant ease and advantage to perform
- * add/delete etc. operations without creating a operation context.
+ /**
+ * Always returns 0 (zero), cause this is a in-memory store
*/
- public AvlStore<Entry> getStore()
+ @Override
+ public int getCacheSize()
{
- return ( org.apache.directory.server.xdbm.impl.avl.AvlStore<Entry> ) store;
+ return 0;
}
@Override
- protected void doDestroy() throws Exception
+ protected Index<?, Entry, Long> convertAndInit( Index<?, Entry, Long> index ) throws Exception
{
- store.destroy();
+ AvlIndex<?, Entry> avlIndex;
+
+ if ( index.getAttributeId().equals( ApacheSchemaConstants.APACHE_RDN_AT_OID ) )
+ {
+ avlIndex = new AvlRdnIndex<Entry>( index.getAttributeId() );
+ }
+ else if ( index instanceof AvlIndex<?, ?> )
+ {
+ avlIndex = (AvlIndex<?, Entry> ) index;
+ }
+ else
+ {
+ LOG.debug( "Supplied index {} is not a AvlIndex. "
+ + "Will create new AvlIndex using copied configuration parameters.", index );
+ avlIndex = new AvlIndex( index.getAttributeId() );
+ }
+
+ avlIndex.init( schemaManager, schemaManager.lookupAttributeTypeRegistry( index.getAttributeId() ) );
+
+ return avlIndex;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ public URI getPartitionPath()
+ {
+ // It's a in-memory partition, return null
+ return null;
+ }
}