directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r811342 - in /directory/apacheds/branches/apacheds-schema/ldif-partition: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/directory/ src/main/java/org/apache/directory/server/ src/main/...
Date Fri, 04 Sep 2009 11:16:54 GMT
Author: elecharny
Date: Fri Sep  4 11:16:53 2009
New Revision: 811342

URL: http://svn.apache.org/viewvc?rev=811342&view=rev
Log:
Added a new sub project for LDIF partition

Added:
    directory/apacheds/branches/apacheds-schema/ldif-partition/
    directory/apacheds/branches/apacheds-schema/ldif-partition/pom.xml
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/DitToLdifWriter.java
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifStore.java
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/ads-2.ldif
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/sample-config.ldif
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/apache/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/apache/directory/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/apache/directory/server/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/apache/directory/server/core/
    directory/apacheds/branches/apacheds-schema/ldif-partition/src/test/java/org/apache/directory/server/core/partition/

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/pom.xml
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/pom.xml?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/pom.xml (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/pom.xml Fri Sep  4 11:16:53 2009
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.directory.server</groupId>
+    <artifactId>apacheds-parent</artifactId>
+    <version>1.5.6-SNAPSHOT</version>
+  </parent>
+  <artifactId>apacheds-ldif-partition</artifactId>
+  <name>ApacheDS LDIF Partition</name>
+  <packaging>jar</packaging>
+
+  <description>
+    A partition that backs it's entries and indices in AvlTrees within memory.
+  </description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-core-entry</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-core-avl</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-avl-partition</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-core-shared</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-core-constants</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-core</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-xdbm-base</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.directory.server</groupId>
+      <artifactId>apacheds-xdbm-search</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.apache.directory.shared</groupId>
+      <artifactId>shared-ldap</artifactId>
+      <version>${org.apache.directory.shared.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.directory.shared</groupId>
+      <artifactId>shared-ldap-constants</artifactId>
+      <version>${org.apache.directory.shared.version}</version>
+    </dependency>    
+
+   <!-- this dependency exists only for using the DitToLdifWriter class.
+        should be dropped once the ldif partition moves into its own module -->
+    <dependency>
+      <groupId>org.apache.directory.shared</groupId>
+      <artifactId>shared-ldap-client-api</artifactId>
+      <version>${org.apache.directory.shared.version}</version>
+      <scope>test</scope>
+    </dependency>    
+
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-source-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-sources</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
+

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/DitToLdifWriter.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/DitToLdifWriter.java?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/DitToLdifWriter.java (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/DitToLdifWriter.java Fri Sep  4 11:16:53 2009
@@ -0,0 +1,202 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.server.core.partition.ldif;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileWriter;
+import java.util.List;
+
+import org.apache.directory.shared.ldap.client.api.LdapConnection;
+import org.apache.directory.shared.ldap.client.api.messages.AddResponse;
+import org.apache.directory.shared.ldap.client.api.messages.SearchResponse;
+import org.apache.directory.shared.ldap.client.api.messages.SearchResultEntry;
+import org.apache.directory.shared.ldap.cursor.Cursor;
+import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.filter.SearchScope;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+import org.apache.directory.shared.ldap.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A simple utility to dump the DIT data into LDIF files on FS.
+ * 
+ * The pattern followed is as follows on FS
+ * Each entry will have a directory with its DN as name and an LDIF file with the same DN'.ldif'
+ * as its name.
+ * 
+ * NOTE: this file depends on ldap-client-api module
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class DitToLdifWriter
+{
+
+    private LdapConnection connection;
+
+    private LdifReader ldifParser = new LdifReader();
+    
+    private FileFilter dirFilter = new FileFilter()
+    {
+        public boolean accept( File dir )
+        {
+            return dir.isDirectory();
+        }
+    };
+    
+    private static Logger LOG = LoggerFactory.getLogger( DitToLdifWriter.class );    
+    
+    public DitToLdifWriter()
+    {
+        connection = new LdapConnection( "localhost", 10389 );
+        try
+        {
+            connection.bind( "uid=admin,ou=system", "secret" );
+        }
+        catch( Exception e )
+        {
+            throw new RuntimeException( "Failed to connect to the server", e );
+        }
+    }
+
+    
+    public void dumpDitToFS( String dn, File baseDir ) throws Exception
+    {
+        Cursor<SearchResponse> cursor = connection.search( dn, "(objectclass=*)", SearchScope.SUBTREE, "*", "+" );
+        
+        StringBuilder filePath = new StringBuilder();
+
+        while( cursor.next() )
+        {
+            SearchResponse searchRes = cursor.get();
+            if( searchRes instanceof SearchResultEntry )
+            {
+                SearchResultEntry searchResultEntry = ( SearchResultEntry ) searchRes;
+                Entry entry = searchResultEntry.getEntry();
+         
+                LdapDN entryDn = entry.getDn();
+                int size = entryDn.size();
+                
+                filePath.append( baseDir.getAbsolutePath() ).append( File.separator );
+                for( int i =0; i< size; i++ )
+                {
+                    filePath.append( entryDn.getRdn( i ).getUpName().toLowerCase() ).append( File.separator );
+                }
+                
+                File dir = new File( filePath.toString() );
+                dir.mkdirs();
+                filePath.setLength( 0 );
+                String ldif = LdifUtils.convertEntryToLdif( entry );
+                
+                File ldifFile = new File( dir, entryDn.getRdn().getUpName().toLowerCase() + ".ldif" );
+                FileWriter fw = new FileWriter( ldifFile );
+                fw.write( ldif );
+                fw.close();
+            }
+        }
+        
+        cursor.close();
+    }
+
+    
+    public void loadConfig( File baseDir, String partitionSuffix ) throws Exception
+    {
+        File dir = new File( baseDir, partitionSuffix );
+        
+        if( ! dir.exists() )
+        {
+            throw new Exception( "The specified configuration dir" + partitionSuffix + " doesn't exist under " + baseDir.getAbsolutePath() );
+        }
+        
+        loadEntry( dir );
+    }
+
+    
+    private void loadEntry( File entryDir ) throws Exception
+    {
+        LOG.warn( "processing dir {}", entryDir.getName() );
+        File ldifFile = new File( entryDir, entryDir.getName() + ".ldif" );
+        
+        if( ldifFile.exists() )
+        {
+            LOG.warn( "ldif file {} exists", ldifFile.getName() );
+            List<LdifEntry> entries = ldifParser.parseLdifFile( ldifFile.getAbsolutePath() );
+            if( entries != null && !entries.isEmpty() )
+            {
+                LOG.warn( "adding entry {}", entries.get( 0 ) );
+                // this ldif will have only one entry
+                AddResponse resp = connection.add( entries.get( 0 ).getEntry() );
+                LOG.warn( "{}", resp.getLdapResult().getResultCode() );
+            }
+        }
+        else
+        {
+            LOG.warn( "ldif file doesn't exist {}", ldifFile.getAbsolutePath() );
+        }
+        
+        File[] dirs = entryDir.listFiles( dirFilter );
+        if( dirs != null )
+        {
+            for( File f : dirs )
+            {
+                loadEntry( f );
+            }
+        }
+    }
+
+    
+    public void close() throws Exception
+    {
+        connection.close();
+    }
+    
+    public static void main( String[] args ) throws Exception
+    {
+        DitToLdifWriter configWriter = new DitToLdifWriter();
+        String partitionSuffix = "ou=config";
+        File baseDir = new File( "/tmp" );
+        configWriter.dumpDitToFS( partitionSuffix, baseDir );
+//        configWriter.loadConfig( baseDir, partitionSuffix );
+        configWriter.close();
+
+        /*
+        LdifReader reader = new LdifReader( new File( "src/main/resources/ads-2.ldif" ) );
+        Iterator<LdifEntry> itr = reader.iterator();
+        while( itr.hasNext() )
+        {
+            try
+            {
+                LdifEntry entry = itr.next();
+                configWriter.connection.add( entry.getEntry() );
+            }
+            catch( Exception e )
+            {
+                e.printStackTrace();
+                System.exit( 1 );
+            }
+        }
+        */
+    }
+}

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifPartition.java Fri Sep  4 11:16:53 2009
@@ -0,0 +1,641 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.server.core.partition.ldif;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileWriter;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.entry.ClonedServerEntry;
+import org.apache.directory.server.core.entry.DefaultServerEntry;
+import org.apache.directory.server.core.entry.ServerEntry;
+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.interceptor.context.UnbindOperationContext;
+import org.apache.directory.server.core.partition.avl.AvlPartition;
+import org.apache.directory.server.core.partition.impl.btree.BTreePartition;
+import org.apache.directory.server.xdbm.Index;
+import org.apache.directory.server.xdbm.IndexCursor;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+import org.apache.directory.shared.ldap.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.schema.registries.Registries;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * TODO LdifPartition.
+ * 
+ * @org.apache.xbean.XBean
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class LdifPartition extends BTreePartition
+{
+    private LdifReader ldifParser = new LdifReader();
+
+    private File configParentDirectory;
+
+    private DirectoryService directoryService;
+
+    private int ldifScanInterval;
+
+    private FileFilter dirFilter = new FileFilter()
+    {
+        public boolean accept( File dir )
+        {
+            return dir.isDirectory();
+        }
+    };
+
+    private static final String CONF_FILE_EXTN = ".ldif";
+
+    private static Logger LOG = LoggerFactory.getLogger( LdifPartition.class );
+
+    private AvlPartition wrappedPartition = new AvlPartition();
+
+    public LdifPartition()
+    {
+    }
+
+
+
+    public void init( DirectoryService directoryService ) throws Exception
+    {
+        wrappedPartition.init( directoryService );
+
+        this.directoryService = directoryService;
+        this.registries = directoryService.getRegistries();
+        this.searchEngine = wrappedPartition.getSearchEngine();
+
+        LOG.debug( "id is : {}", wrappedPartition.getId() );
+        this.configParentDirectory = new File( directoryService.getWorkingDirectory().getPath() + File.separator
+            + wrappedPartition.getId() );
+        //        configParentDirectory.mkdir();
+        // load the config 
+        loadConfig();
+    }
+
+
+    @Override
+    public void add( AddOperationContext addContext ) throws Exception
+    {
+        wrappedPartition.add( addContext );
+        add( addContext.getEntry() );
+    }
+
+
+    @Override
+    public void delete( Long id ) throws Exception
+    {
+        ServerEntry entry = lookup( id );
+
+        wrappedPartition.delete( id );
+
+        if ( entry != null )
+        {
+            File file = getFile( entry.getDn() ).getParentFile();
+            boolean deleted = deleteFile( file );
+            LOG.warn( "deleted file {} {}", file.getAbsoluteFile(), deleted );
+        }
+
+    }
+
+
+    private void entryMoved( LdapDN entryDn, Long entryId ) throws Exception
+    {
+        File file = getFile( entryDn ).getParentFile();
+        boolean deleted = deleteFile( file );
+        LOG.warn( "move operation: deleted file {} {}", file.getAbsoluteFile(), deleted );
+
+        add( lookup( entryId ) );
+
+        IndexCursor<Long, ServerEntry> cursor = getSubLevelIndex().forwardCursor( entryId );
+        while ( cursor.next() )
+        {
+            add( cursor.get().getObject() );
+        }
+
+        cursor.close();
+    }
+
+
+    @Override
+    public void modify( ModifyOperationContext modifyContext ) throws Exception
+    {
+        wrappedPartition.modify( modifyContext );
+        // just overwrite the existing file
+        add( modifyContext.getEntry() );
+    }
+
+
+    @Override
+    public void move( MoveOperationContext moveContext ) throws Exception
+    {
+        LdapDN oldDn = moveContext.getDn();
+        Long id = getEntryId( oldDn.getNormName() );
+
+        wrappedPartition.move( moveContext );
+
+        entryMoved( oldDn, id );
+    }
+
+
+    @Override
+    public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws Exception
+    {
+        LdapDN oldDn = moveAndRenameContext.getDn();
+        Long id = getEntryId( oldDn.getNormName() );
+
+        wrappedPartition.moveAndRename( moveAndRenameContext );
+
+        entryMoved( oldDn, id );
+    }
+
+
+    @Override
+    public void rename( RenameOperationContext renameContext ) throws Exception
+    {
+        LdapDN oldDn = renameContext.getDn();
+        Long id = getEntryId( oldDn.getNormName() );
+
+        wrappedPartition.rename( renameContext );
+
+        entryMoved( oldDn, id );
+    }
+
+
+    /**
+     * loads the configuration into the DIT from the file system
+     * Note that it assumes the presence of a directory with the partition suffix's upname
+     * under the partition's base dir
+     * 
+     * for ex. if 'config' is the partition's id and 'ou=config' is its suffix it looks for the dir with the path
+     * 
+     * <directory-service-working-dir>/config/ou=config
+     * e.x example.com/config/ou=config
+     * 
+     * NOTE: this dir setup is just to ease the testing of this partition, this needs to be 
+     * replaced with some kind of bootstrapping the default config from a jar file and
+     * write to the FS in LDIF format
+     * 
+     * @throws Exception
+     */
+    public void loadConfig() throws Exception
+    {
+        File dir = new File( configParentDirectory, wrappedPartition.getSuffix().getUpName() );
+
+        //        if( ! dir.exists() )
+        //        {
+        //            throw new Exception( "The specified configuration dir " + getSuffix().toLowerCase() + " doesn't exist under " + configParentDirectory.getAbsolutePath() );
+        //        }
+
+        loadEntry( dir );
+    }
+
+
+    /*
+     * recursively load the configuration entries
+     */
+    private void loadEntry( File entryDir ) throws Exception
+    {
+        LOG.error( "processing dir {}", entryDir.getName() );
+
+        File ldifFile = new File( entryDir, entryDir.getName() + CONF_FILE_EXTN );
+
+        if ( ldifFile.exists() )
+        {
+            LOG.debug( "parsing ldif file {}", ldifFile.getName() );
+            List<LdifEntry> entries = ldifParser.parseLdifFile( ldifFile.getAbsolutePath() );
+            if ( entries != null && !entries.isEmpty() )
+            {
+                // this ldif will have only one entry
+                LdifEntry ldifEntry = entries.get( 0 );
+                LOG.debug( "adding entry {}", ldifEntry );
+
+                ServerEntry serverEntry = new DefaultServerEntry( registries, ldifEntry.getEntry() );
+
+                // call add on the wrapped partition not on the self
+                wrappedPartition.getStore().add( serverEntry );
+            }
+        }
+        else
+        {
+            // TODO do we need to bomb out if the expected LDIF file doesn't exist
+            LOG.warn( "ldif file doesn't exist {}", ldifFile.getAbsolutePath() );
+        }
+
+        File[] dirs = entryDir.listFiles( dirFilter );
+        if ( dirs != null )
+        {
+            for ( File f : dirs )
+            {
+                loadEntry( f );
+            }
+        }
+    }
+
+
+    private File getFile( LdapDN entryDn )
+    {
+        int size = entryDn.size();
+
+        StringBuilder filePath = new StringBuilder();
+        filePath.append( configParentDirectory.getAbsolutePath() ).append( File.separator );
+
+        for ( int i = 0; i < size; i++ )
+        {
+            filePath.append( entryDn.getRdn( i ).getUpName().toLowerCase() ).append( File.separator );
+        }
+
+        File dir = new File( filePath.toString() );
+        dir.mkdirs();
+
+        return new File( dir, entryDn.getRdn().getUpName().toLowerCase() + CONF_FILE_EXTN );
+    }
+
+
+    private void add( ServerEntry entry ) throws Exception
+    {
+        FileWriter fw = new FileWriter( getFile( entry.getDn() ) );
+        fw.write( LdifUtils.convertEntryToLdif( entry ) );
+        fw.close();
+    }
+
+
+    private boolean deleteFile( File file )
+    {
+        if ( file.isDirectory() )
+        {
+            File[] files = file.listFiles();
+            for ( File f : files )
+            {
+                deleteFile( f );
+            }
+
+            return file.delete();
+        }
+        else
+        {
+            return file.delete();
+        }
+    }
+
+
+    @Override
+    public void addIndexOn( Index<Long, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.addIndexOn( index );
+    }
+
+
+    @Override
+    public int count() throws Exception
+    {
+        return wrappedPartition.count();
+    }
+
+
+    @Override
+    public void destroy() throws Exception
+    {
+        wrappedPartition.destroy();
+    }
+
+
+    @Override
+    public Index<String, ServerEntry> getAliasIndex()
+    {
+        return wrappedPartition.getAliasIndex();
+    }
+
+
+    @Override
+    public int getChildCount( Long id ) throws Exception
+    {
+        return wrappedPartition.getChildCount( id );
+    }
+
+
+    @Override
+    public String getEntryDn( Long id ) throws Exception
+    {
+        return wrappedPartition.getEntryDn( id );
+    }
+
+
+    @Override
+    public Long getEntryId( String dn ) throws Exception
+    {
+        return wrappedPartition.getEntryId( dn );
+    }
+
+
+    @Override
+    public String getEntryUpdn( Long id ) throws Exception
+    {
+        return wrappedPartition.getEntryUpdn( id );
+    }
+
+
+    @Override
+    public String getEntryUpdn( String dn ) throws Exception
+    {
+        return wrappedPartition.getEntryUpdn( dn );
+    }
+
+
+    @Override
+    public Index<String, ServerEntry> getNdnIndex()
+    {
+        return wrappedPartition.getNdnIndex();
+    }
+
+
+    @Override
+    public Index<Long, ServerEntry> getOneAliasIndex()
+    {
+        return wrappedPartition.getOneAliasIndex();
+    }
+
+
+    @Override
+    public Index<Long, ServerEntry> getOneLevelIndex()
+    {
+        return wrappedPartition.getOneLevelIndex();
+    }
+
+
+    @Override
+    public Long getParentId( Long childId ) throws Exception
+    {
+        return wrappedPartition.getParentId( childId );
+    }
+
+
+    @Override
+    public Long getParentId( String dn ) throws Exception
+    {
+        return wrappedPartition.getParentId( dn );
+    }
+
+
+    @Override
+    public Index<String, ServerEntry> getPresenceIndex()
+    {
+        return wrappedPartition.getPresenceIndex();
+    }
+
+
+    @Override
+    public String getProperty( String propertyName ) throws Exception
+    {
+        return wrappedPartition.getProperty( propertyName );
+    }
+
+
+    @Override
+    public Index<Long, ServerEntry> getSubAliasIndex()
+    {
+        return wrappedPartition.getSubAliasIndex();
+    }
+
+
+    @Override
+    public Index<Long, ServerEntry> getSubLevelIndex()
+    {
+        return wrappedPartition.getSubLevelIndex();
+    }
+
+
+    @Override
+    public Index<?, ServerEntry> getSystemIndex( String id ) throws Exception
+    {
+        return wrappedPartition.getSystemIndex( id );
+    }
+
+
+    @Override
+    public Iterator<String> getSystemIndices()
+    {
+        return wrappedPartition.getSystemIndices();
+    }
+
+
+    @Override
+    public Index<String, ServerEntry> getUpdnIndex()
+    {
+        return wrappedPartition.getUpdnIndex();
+    }
+
+
+    @Override
+    public Index<?, ServerEntry> getUserIndex( String id ) throws Exception
+    {
+        return wrappedPartition.getUserIndex( id );
+    }
+
+
+    @Override
+    public Iterator<String> getUserIndices()
+    {
+        return wrappedPartition.getUserIndices();
+    }
+
+
+    @Override
+    public boolean hasSystemIndexOn( String id ) throws Exception
+    {
+        return wrappedPartition.hasSystemIndexOn( id );
+    }
+
+
+    @Override
+    public boolean hasUserIndexOn( String id ) throws Exception
+    {
+        return wrappedPartition.hasUserIndexOn( id );
+    }
+
+
+    @Override
+    public boolean isInitialized()
+    {
+        return wrappedPartition.isInitialized();
+    }
+
+
+    @Override
+    public IndexCursor<Long, ServerEntry> list( Long id ) throws Exception
+    {
+        return wrappedPartition.list( id );
+    }
+
+
+    @Override
+    public ClonedServerEntry lookup( Long id ) throws Exception
+    {
+        return wrappedPartition.lookup( id );
+    }
+
+
+    @Override
+    public void setAliasIndexOn( Index<String, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setAliasIndexOn( index );
+    }
+
+
+    @Override
+    public void setNdnIndexOn( Index<String, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setNdnIndexOn( index );
+    }
+
+
+    @Override
+    public void setOneAliasIndexOn( Index<Long, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setOneAliasIndexOn( index );
+    }
+
+
+    @Override
+    public void setOneLevelIndexOn( Index<Long, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setOneLevelIndexOn( index );
+    }
+
+
+    @Override
+    public void setPresenceIndexOn( Index<String, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setPresenceIndexOn( index );
+    }
+
+
+    @Override
+    public void setProperty( String propertyName, String propertyValue ) throws Exception
+    {
+        wrappedPartition.setProperty( propertyName, propertyValue );
+    }
+
+
+    @Override
+    public void setRegistries( Registries registries ) throws Exception
+    {
+        wrappedPartition.setRegistries( registries );
+    }
+
+
+    @Override
+    public void setSubAliasIndexOn( Index<Long, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setSubAliasIndexOn( index );
+    }
+
+
+    @Override
+    public void setUpdnIndexOn( Index<String, ServerEntry> index ) throws Exception
+    {
+        wrappedPartition.setUpdnIndexOn( index );
+    }
+
+
+    @Override
+    public void sync() throws Exception
+    {
+        wrappedPartition.sync();
+        //TODO implement the File I/O here to push the update to entries to the corresponding LDIF file
+    }
+
+
+    public void bind( BindOperationContext bindContext ) throws Exception
+    {
+        wrappedPartition.bind( bindContext );
+    }
+
+
+    public LdapDN getSuffix()
+    {
+        return wrappedPartition.getSuffix();
+    }
+
+
+    public void unbind( UnbindOperationContext unbindContext ) throws Exception
+    {
+        wrappedPartition.unbind( unbindContext );
+    }
+
+
+    @Override
+    public int getCacheSize()
+    {
+        // TODO Auto-generated method stub
+        return super.getCacheSize();
+    }
+
+
+    @Override
+    public String getId()
+    {
+        // TODO Auto-generated method stub
+        return super.getId();
+    }
+
+
+    @Override
+    public void setId( String id )
+    {
+        super.setId( id );
+        wrappedPartition.setId( id );
+    }
+
+
+    @Override
+    public void setSuffix( String suffix ) throws InvalidNameException
+    {
+        super.setSuffix( suffix );
+        wrappedPartition.setSuffix( suffix );
+    }
+
+
+    /**
+     * the interval at which the config directory containing LDIF files
+     * should be scanned, default value is 10 min
+     * 
+     * @param ldifScanInterval the scan interval time in minutes
+     */
+    public void setLdifScanInterval( int ldifScanInterval )
+    {
+        this.ldifScanInterval = ldifScanInterval;
+    }
+    
+}
\ No newline at end of file

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifStore.java?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifStore.java (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/java/org/apache/directory/server/core/partition/ldif/LdifStore.java Fri Sep  4 11:16:53 2009
@@ -0,0 +1,600 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.server.core.partition.ldif;
+
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileWriter;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.directory.server.core.entry.DefaultServerEntry;
+import org.apache.directory.server.core.entry.ServerEntry;
+import org.apache.directory.server.core.partition.avl.AvlStore;
+import org.apache.directory.server.xdbm.Index;
+import org.apache.directory.server.xdbm.IndexCursor;
+import org.apache.directory.server.xdbm.IndexNotFoundException;
+import org.apache.directory.server.xdbm.Store;
+import org.apache.directory.shared.ldap.entry.Modification;
+import org.apache.directory.shared.ldap.entry.ModificationOperation;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+import org.apache.directory.shared.ldap.ldif.LdifUtils;
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.name.Rdn;
+import org.apache.directory.shared.ldap.schema.registries.Registries;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * TODO LdifStore.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class LdifStore<E> implements Store<E>
+{
+
+    /** the working directory to use for files */
+    private File workingDirectory;
+
+    /** true if we sync disks on every write operation */
+    private boolean isSyncOnWrite = true;
+
+    /** in memory store used for serving the config data present in LDIF files  */
+    private AvlStore<E> wrappedStore = new AvlStore<E>();
+
+    private Registries registries;
+    
+    private LdifReader ldifParser = new LdifReader();
+    
+    private FileFilter dirFilter = new FileFilter()
+    {
+        public boolean accept( File dir )
+        {
+            return dir.isDirectory();
+        }
+    };
+
+    private static final String CONF_FILE_EXTN = ".ldif";
+
+    private static Logger LOG = LoggerFactory.getLogger( LdifStore.class );
+    
+    public void init( Registries registries ) throws Exception
+    {
+        this.registries = registries;
+        wrappedStore.init( registries );
+     
+        // load the config 
+        loadConfig();
+    }
+
+
+    /**
+     * loads the configuration into the DIT from the file system
+     * @throws Exception
+     */
+    public void loadConfig() throws Exception
+    {
+        String upsuffixDir = wrappedStore.getUpSuffix().getUpName().toLowerCase();
+        File dir = new File( workingDirectory, upsuffixDir );
+        
+        if( ! dir.exists() )
+        {
+            throw new Exception( "The specified configuration dir " + upsuffixDir + " doesn't exist under " + workingDirectory.getAbsolutePath() );
+        }
+        
+        loadEntry( dir );
+    }
+
+    
+    /*
+     * recursively load the configuration entries
+     */
+    private void loadEntry( File entryDir ) throws Exception
+    {
+        LOG.debug( "processing dir {}", entryDir.getName() );
+        
+        File ldifFile = new File( entryDir, entryDir.getName() + CONF_FILE_EXTN );
+        
+        if( ldifFile.exists() )
+        {
+            LOG.debug( "parsing ldif file {}", ldifFile.getName() );
+            List<LdifEntry> entries = ldifParser.parseLdifFile( ldifFile.getAbsolutePath() );
+            if( entries != null && !entries.isEmpty() )
+            {
+                // this ldif will have only one entry
+                LdifEntry ldifEntry = entries.get( 0 );
+                LOG.debug( "adding entry {}", ldifEntry );
+
+                ServerEntry serverEntry = new DefaultServerEntry( registries, ldifEntry.getEntry() );
+                
+                // call add on the wrapped store not on the self  
+                wrappedStore.add( serverEntry );
+            }
+        }
+        else
+        {
+            // TODO do we need to bomb out if the expected LDIF file doesn't exist
+            // I think so
+            LOG.warn( "ldif file doesn't exist {}", ldifFile.getAbsolutePath() );
+        }
+        
+        File[] dirs = entryDir.listFiles( dirFilter );
+        if( dirs != null )
+        {
+            for( File f : dirs )
+            {
+                loadEntry( f );
+            }
+        }
+    }
+
+
+    private File getFile( LdapDN entryDn )
+    {
+        int size = entryDn.size();
+        
+        StringBuilder filePath = new StringBuilder();
+        filePath.append( workingDirectory.getAbsolutePath() ).append( File.separator );
+        
+        for( int i =0; i< size; i++ )
+        {
+            filePath.append( entryDn.getRdn( i ).getUpName().toLowerCase() ).append( File.separator );
+        }
+        
+        File dir = new File( filePath.toString() );
+        dir.mkdirs();
+        
+        return new File( dir, entryDn.getRdn().getUpName().toLowerCase() + CONF_FILE_EXTN );
+    }
+
+    
+    public void add( ServerEntry entry ) throws Exception 
+    {
+        wrappedStore.add( entry );
+        
+        FileWriter fw = new FileWriter( getFile( entry.getDn() ) );
+        fw.write( LdifUtils.convertEntryToLdif( entry ) );
+        fw.close();
+    }
+    
+    
+    public void delete( Long id ) throws Exception
+    {
+        ServerEntry entry = lookup( id );
+        LOG.warn( "deleting the entry with id {} and dn {}", id, entry.getDn() );
+
+        LOG.warn( "having the parent id {}", getParentId( entry.getDn().getUpName() ) );
+        wrappedStore.delete( id );
+        
+        if( entry != null )
+        {
+            File file = getFile( entry.getDn() ).getParentFile();
+            boolean deleted = deleteFile( file );
+            LOG.warn( "deleted file {} {}", file.getAbsoluteFile(), deleted );
+        }
+    }
+
+
+    private boolean deleteFile( File file )
+    {
+        if( file.isDirectory() )
+        {
+            File[] files = file.listFiles();
+            for( File f : files )
+            {
+                deleteFile( f );
+            }
+        }
+        
+        return file.delete();
+    }
+    
+    
+    public void destroy() throws Exception
+    {
+        wrappedStore.destroy();
+    }
+
+
+    public void modify( LdapDN dn, List<Modification> mods ) throws Exception
+    {
+        wrappedStore.modify( dn, mods );
+    }
+
+
+    public void modify( LdapDN dn, ModificationOperation modOp, ServerEntry mods ) throws Exception
+    {
+        wrappedStore.modify( dn, modOp, mods );
+    }
+
+
+    public void move( LdapDN oldChildDn, LdapDN newParentDn, Rdn newRdn, boolean deleteOldRdn ) throws Exception
+    {
+        wrappedStore.move( oldChildDn, newParentDn, newRdn, deleteOldRdn );
+    }
+
+
+    public void move( LdapDN oldChildDn, LdapDN newParentDn ) throws Exception
+    {
+        wrappedStore.move( oldChildDn, newParentDn );
+    }
+
+
+    public void rename( LdapDN dn, Rdn newRdn, boolean deleteOldRdn ) throws Exception
+    {
+        wrappedStore.rename( dn, newRdn, deleteOldRdn );
+    }
+
+
+    public void sync() throws Exception
+    {
+        //TODO implement the File I/O here to push the update to entries to the corresponding LDIF file
+    }
+
+
+    public void setWorkingDirectory( File workingDirectory )
+    {
+        this.workingDirectory = workingDirectory;
+    }
+
+
+    public File getWorkingDirectory()
+    {
+        return workingDirectory;
+    }
+
+
+    public void setSyncOnWrite( boolean isSyncOnWrite )
+    {
+        this.isSyncOnWrite = isSyncOnWrite;
+    }
+
+
+    public boolean isSyncOnWrite()
+    {
+        return isSyncOnWrite;
+    }
+
+
+    public void addIndex( Index<?, E> index ) throws Exception
+    {
+        wrappedStore.addIndex( index );
+    }
+
+
+    public int count() throws Exception
+    {
+        return wrappedStore.count();
+    }
+
+
+    public Index<String, E> getAliasIndex()
+    {
+        return wrappedStore.getAliasIndex();
+    }
+
+
+    public int getChildCount( Long id ) throws Exception
+    {
+        return wrappedStore.getChildCount( id );
+    }
+
+
+    public String getEntryDn( Long id ) throws Exception
+    {
+        return wrappedStore.getEntryDn( id );
+    }
+
+
+    public Long getEntryId( String dn ) throws Exception
+    {
+        return wrappedStore.getEntryId( dn );
+    }
+
+
+    public String getEntryUpdn( Long arg0 ) throws Exception
+    {
+        return wrappedStore.getEntryUpdn( arg0 );
+    }
+
+
+    public String getEntryUpdn( String dn ) throws Exception
+    {
+        return wrappedStore.getEntryUpdn( dn );
+    }
+
+
+    public String getName()
+    {
+        return wrappedStore.getName();
+    }
+
+    
+    public Index<String, E> getNdnIndex()
+    {
+        return wrappedStore.getNdnIndex();
+    }
+
+
+    public Index<Long, E> getOneAliasIndex()
+    {
+        return wrappedStore.getOneAliasIndex();
+    }
+
+
+    public Index<Long, E> getOneLevelIndex()
+    {
+        return wrappedStore.getOneLevelIndex();
+    }
+
+
+    public Long getParentId( Long arg0 ) throws Exception
+    {
+        return wrappedStore.getParentId( arg0 );
+    }
+
+
+    public Long getParentId( String dn ) throws Exception
+    {
+        return wrappedStore.getParentId( dn );
+    }
+
+
+    public Index<String, E> getPresenceIndex()
+    {
+        return wrappedStore.getPresenceIndex();
+    }
+
+
+    public String getProperty( String propertyName ) throws Exception
+    {
+        return wrappedStore.getProperty( propertyName );
+    }
+
+
+    public Index<Long, E> getSubAliasIndex()
+    {
+        return wrappedStore.getSubAliasIndex();
+    }
+
+
+    public Index<Long, E> getSubLevelIndex()
+    {
+        return wrappedStore.getSubLevelIndex();
+    }
+
+
+    public Index<?, E> getSystemIndex( String id ) throws IndexNotFoundException
+    {
+        return wrappedStore.getSystemIndex( id );
+    }
+
+
+    public Index<String, E> getUpdnIndex()
+    {
+        return wrappedStore.getUpdnIndex();
+    }
+
+
+
+    public Index<?, E> getUserIndex( String id ) throws IndexNotFoundException
+    {
+        return wrappedStore.getUserIndex( id );
+    }
+
+
+    public Set<Index<?, E>> getUserIndices()
+    {
+        return wrappedStore.getUserIndices();
+    }
+
+
+    public boolean hasSystemIndexOn( String id ) throws Exception
+    {
+        return wrappedStore.hasSystemIndexOn( id );
+    }
+
+
+    public boolean hasUserIndexOn( String id ) throws Exception
+    {
+        return wrappedStore.hasUserIndexOn( id );
+    }
+
+
+    public void initRegistries( Registries registries )
+    {
+        wrappedStore.initRegistries( registries );
+    }
+
+
+    public boolean isInitialized()
+    {
+        return wrappedStore.isInitialized();
+    }
+
+
+    public IndexCursor<Long, E> list( Long id ) throws Exception
+    {
+        return wrappedStore.list( id );
+    }
+
+
+    public ServerEntry lookup( Long id ) throws Exception
+    {
+        return wrappedStore.lookup( id );
+    }
+
+
+    public void setAliasIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setAliasIndex( index );
+    }
+
+
+    public void setName( String name )
+    {
+        wrappedStore.setName( name );
+    }
+
+
+    public void setNdnIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setNdnIndex( index );
+    }
+
+
+    public void setOneAliasIndex( Index<Long, E> index ) throws Exception
+    {
+        wrappedStore.setOneAliasIndex( index );
+    }
+
+
+    public void setOneLevelIndex( Index<Long, E> index ) throws Exception
+    {
+        wrappedStore.setOneLevelIndex( index );
+    }
+
+
+    public void setPresenceIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setPresenceIndex( index );
+    }
+
+
+    public void setProperty( String propertyName, String propertyValue ) throws Exception
+    {
+        wrappedStore.setProperty( propertyName, propertyValue );
+    }
+
+
+    public void setSubAliasIndex( Index<Long, E> index ) throws Exception
+    {
+        wrappedStore.setSubAliasIndex( index );
+    }
+
+
+    public void setSubLevelIndex( Index<Long, E> index ) throws Exception
+    {
+        wrappedStore.setSubLevelIndex( index );
+    }
+
+
+    public void setUpdnIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setUpdnIndex( index );
+    }
+
+
+    public Iterator<String> systemIndices()
+    {
+        return wrappedStore.systemIndices();
+    }
+
+
+    public Iterator<String> userIndices()
+    {
+        return wrappedStore.userIndices();
+    }
+
+
+    //TODO manage the cache size??
+    public int getCacheSize()
+    {
+        return wrappedStore.getCacheSize();
+    }
+
+
+    public Index<String, E> getEntryCsnIndex()
+    {
+        return wrappedStore.getEntryCsnIndex();
+    }
+
+
+    public Index<byte[], E> getEntryUuidIndex()
+    {
+        return wrappedStore.getEntryUuidIndex();
+    }
+
+
+    public Index<String, E> getObjectClassIndex()
+    {
+        return wrappedStore.getObjectClassIndex();
+    }
+
+
+    public LdapDN getSuffix()
+    {
+        return wrappedStore.getSuffix();
+    }
+
+
+    public String getSuffixDn()
+    {
+        return wrappedStore.getSuffixDn();
+    }
+
+
+    public LdapDN getUpSuffix()
+    {
+        return wrappedStore.getUpSuffix();
+    }
+
+
+    public void setCacheSize( int size )
+    {
+        wrappedStore.setCacheSize( size );
+    }
+
+
+    public void setUserIndices( Set<Index<?, E>> userIndices )
+    {
+        wrappedStore.setUserIndices( userIndices );
+    }
+
+
+    public void setSuffixDn( String suffixDn )
+    {
+        wrappedStore.setSuffixDn( suffixDn );
+    }
+
+
+    public void setEntryCsnIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setEntryCsnIndex( index );
+    }
+
+    
+    public void setEntryUuidIndex( Index<byte[], E> index ) throws Exception
+    {
+        wrappedStore.setEntryUuidIndex( index );
+    }
+ 
+    
+    public void setObjectClassIndex( Index<String, E> index ) throws Exception
+    {
+        wrappedStore.setObjectClassIndex( index );
+    }
+}

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/ads-2.ldif
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/ads-2.ldif?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/ads-2.ldif (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/ads-2.ldif Fri Sep  4 11:16:53 2009
@@ -0,0 +1,1122 @@
+# Generated by Apache Directory Studio on 31 July, 2009 12:23:12 AM
+
+# SCHEMA "ADS-2"
+dn: cn=ads-2, ou=schema
+objectclass: metaSchema
+objectclass: top
+cn: ads-2
+m-dependencies: nis
+m-dependencies: system
+
+dn: ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: attributetypes
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.100, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.100
+m-name: ads-directoryServiceId
+m-description: The DirectoryService ID
+m-supAttributeType: name
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.101, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.101
+m-name: ads-dsAccessControlEnabled
+m-description: Tells if access control is activated or not
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.102, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.102
+m-name: ads-dsAllowAnonymousAccess
+m-description: Tells if anonymous access are allowed or not
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.103, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.103
+m-name: ads-dsDenormalizeOpAttrsEnabled
+m-description: Tells if the operational attributes are denormalized or not
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.104, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.104
+m-name: ads-dsPasswordHidden
+m-description: Tells if the password is stored encrypted even for PLAIN authenti
+ cation
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.105, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.105
+m-name: ads-dsChangeLog
+m-description: The ChangeLog system
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.106, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.106
+m-name: ads-dsInterceptors
+m-description: The list of interceptors
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.107, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.107
+m-name: ads-dsJournal
+m-description: The directory service journal
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.108, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.108
+m-name: ads-dsPartitions
+m-description: The set of partitions
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.109, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.109
+m-name: ads-dsReplication
+m-description: The replication configuration
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.110, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.110
+m-name: ads-dsMaxPDUSize
+m-description: Gives the maximum size of a PDU
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.111, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.111
+m-name: ads-dsSyncPeriodMillis
+m-description: Define the duration between two flushes on disk
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.112, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.112
+m-name: ads-dsReplicaId
+m-description: The server identifier, used for replication
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.113, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.113
+m-name: ads-dsTestEntries
+m-description: The set of entries to inject at startup (may be obsolete)
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.114, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.114
+m-name: ads-dsWorkingDirectory
+m-description: The place where data are stored on disk
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.120, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.120
+m-name: ads-changeLogEnabled
+m-description: Tells if the changeLog system is up and running
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.121, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.121
+m-name: ads-changeLogExposed
+m-description: Tells if the changeLog system is visible by the clients
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.130, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.130
+m-name: ads-interceptorId
+m-description: The Interceptor identifier
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.131, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.131
+m-name: ads-interceptorOrder
+m-description: The Interceptor order number
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.140, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.140
+m-name: ads-journalEnabled
+m-description: Tells if the journal system is up and running.
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.141, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.141
+m-name: ads-journalRotation
+m-description: The size before a journal rotation occurs.
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.142, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.142
+m-name: ads-journalWorkingDir
+m-description: The place on disk where the journal is stored.
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.143, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.143
+m-name: ads-journalFileName
+m-description: The journal file name.
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.150, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.150
+m-name: ads-partitionId
+m-description: The Partition identifier
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.151, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.151
+m-name: ads-partitionSuffix
+m-description: The partition suffix
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.152, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.152
+m-name: ads-partitionIndexedAttributes
+m-description: A reference to an indexed attribute
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.153, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.153
+m-name: ads-partitionCacheSize
+m-description: The number of entries in the cache for this partition
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.160, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.160
+m-name: ads-indexAttributeId
+m-description: The attributeType name or OID
+m-supAttributeType: name
+m-equality: objectIdentifierMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.38
+m-length: 0
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.161, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.161
+m-name: ads-indexFileName
+m-description: The index file name
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.162, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.162
+m-name: ads-indexWorkingDir
+m-description: The place on disk where the index file is stored
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.163, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.163
+m-name: ads-indexNumDupLimit
+m-description: The number of duplicated element we allow before switching to a s
+ econdary tree
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.164, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.164
+m-name: ads-indexCacheSize
+m-description: The number of key we store in the cache for this index
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.250, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.250
+m-name: ads-serverId
+m-description: The server ID
+m-supAttributeType: name
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.251, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.251
+m-name: ads-transports
+m-description: The reference to the associated transports
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.260, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.260
+m-name: ads-serverDS
+m-description: The reference to the associated directoryService
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.300, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.300
+m-name: ads-ldapServerConfidentialityRequired
+m-description: Tells the server to accept requests using startTLS or LDAPS
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.301, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.301
+m-name: ads-ldapServerAllowAnonymousAccess
+m-description: Tells the server to accept Anynymous requests or not
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.302, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.302
+m-name: ads-ldapServerMaxSizeLimit
+m-description: The maximum number of entries to return
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.303, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.303
+m-name: ads-ldapServerMaxTimeLimit
+m-description: The maximum time before an operation is aborted (in seconds)
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.304, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.304
+m-name: ads-ldapServerSaslHost
+m-description: The name of this host, validated during SASL negotiation
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.305, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.305
+m-name: ads-ldapServerSaslPrincipal
+m-description: The service principal, used by GSSAPI
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.306, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.306
+m-name: ads-ldapServerSaslRealms
+m-description: The realms serviced by this SASL host
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.307, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.307
+m-name: ads-ldapServerDirectoryService
+m-description: The reference to the associated DirectoryService
+m-supAttributeType: distinguishedName
+m-equality: distinguishedNameMatch
+m-ordering: distinguishedNameMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.308, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.308
+m-name: ads-ldapServerKeystoreFile
+m-description: The keystore file to use to store certificates
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.309, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.309
+m-name: ads-ldapServerCertificatePassword
+m-description: The certificate passord
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.400, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.400
+m-name: ads-krbAllowableClockSkew
+m-description: The allowable clock skew
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.401, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.401
+m-name: ads-krbEncryptionTypes
+m-description: The encryption types
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.402, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.402
+m-name: ads-krbEmptyAddressesAllowed
+m-description: Whether empty addresses are allowed
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.403, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.403
+m-name: ads-krbForwardableAllowed
+m-description: Whether forwardable addresses are allowed
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.404, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.404
+m-name: ads-krbPaEncTimestampRequired
+m-description: Whether pre-authentication by encrypted timestamp is required
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.405, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.405
+m-name: ads-krbPostdatedAllowed
+m-description: Whether postdated tickets are allowed
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.406, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.406
+m-name: ads-krbProxiableAllowed
+m-description: Whether proxiable addresses are allowed
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.407, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.407
+m-name: ads-krbRenewableAllowed
+m-description: Whether renewable tickets are allowed
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.408, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.408
+m-name: ads-krbKdcPrincipal
+m-description: The service principal name
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.409, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.409
+m-name: ads-krbMaximumRenewableLifetime
+m-description: The maximum renewable lifetime
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.410, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.410
+m-name: ads-krbMaximumTicketLifetime
+m-description: The maximum ticket lifetime
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.411, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.411
+m-name: ads-krbPrimaryRealm
+m-description: The primary realm
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.412, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.412
+m-name: ads-krbBodyChecksumVerified
+m-description: Whether to verify the body checksum
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.800, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.800
+m-name: ads-chgPwdPolicyCategoryCount
+m-description: The policy category count
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.801, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.801
+m-name: ads-chgPwdPolicyPasswordLength
+m-description: The policy minimum password length
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.802, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.802
+m-name: ads-chgPwdPolicyTokenSize
+m-description: The policy token size
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.803, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.803
+m-name: ads-chgPwdServicePrincipal
+m-description: The Change Password service principal
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.200, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.200
+m-name: ads-transportId
+m-description: The transport ID
+m-supAttributeType: name
+m-equality: caseExactMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseExactSubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.44
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.61, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.61
+m-name: ads-transportAddress
+m-description: The Address to listen on.
+m-supAttributeType: ipHostNumber
+m-equality: caseIgnoreOrderingMatch
+m-ordering: caseExactOrderingMatch
+m-substr: caseIgnoreIA5SubstringsMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.26
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.62, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.62
+m-name: ads-transportBacklog
+m-description: The number of messages waiting to be processed.
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.63, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.63
+m-name: ads-transportEnableSSL
+m-description: Tells if this transport support SSL.
+m-equality: booleanMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.7
+m-singleValue: TRUE
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.64, ou=attributeTypes, cn=ads-2, ou=schema
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.64
+m-name: ads-transportNbThreads
+m-description: The number of threads to use for the Acceptor
+m-equality: integerMatch
+m-ordering: integerOrderingMatch
+m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
+m-singleValue: TRUE
+
+dn: ou=comparators, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: comparators
+
+dn: ou=ditContentRules, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: ditcontentrules
+
+dn: ou=ditStructureRules, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: ditstructurerules
+
+dn: ou=matchingRules, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: matchingrules
+
+dn: ou=matchingRuleUse, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: matchingruleuse
+
+dn: ou=nameForms, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: nameforms
+
+dn: ou=normalizers, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: normalizers
+
+dn: ou=objectClasses, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: objectClasses
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.100, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.100
+m-name: ads-directoryService
+m-description: The DirectoryService ObjectClass
+m-must: ads-directoryServiceId
+m-must: ads-dsInterceptors
+m-must: ads-dsPartitions
+m-must: ads-dsReplicaId
+m-must: ads-dsWorkingDirectory
+m-may: ads-dsAccessControlEnabled
+m-may: ads-dsAllowAnonymousAccess
+m-may: ads-dsChangeLog
+m-may: ads-dsDenormalizeOpAttrsEnabled
+m-may: ads-dsJournal
+m-may: ads-dsMaxPDUSize
+m-may: ads-dsPasswordHidden
+m-may: ads-dsReplication
+m-may: ads-dsSyncPeriodMillis
+m-may: ads-dsTestEntries
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.120, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.120
+m-name: ads-changeLog
+m-description: The ChangeLog
+m-may: ads-changeLogEnabled
+m-may: ads-changeLogExposed
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.130, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.130
+m-name: ads-interceptor
+m-description: The Interceptor ObjectClass
+m-may: ads-changeLogEnabled
+m-may: ads-changeLogExposed
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.140, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.140
+m-name: ads-journal
+m-description: The Journal
+m-must: ads-journalFileName
+m-may: ads-journalWorkingDir
+m-may: ads-journalRotation
+m-may: ads-journalEnabled
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.150, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.150
+m-name: ads-partition
+m-description: A generic partition
+m-typeObjectClass: ABSTRACT
+m-must: ads-partitionId
+m-must: ads-partitionSuffix
+m-must: ads-partitionIndexedAttributes
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.151, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.151
+m-name: ads-jdbmPartition
+m-description: A JDBM partition
+m-supObjectClass: ads-partition
+m-may: ads-partitionCacheSize
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.160, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.160
+m-name: ads-index
+m-description: A generic indexed attribute
+m-typeObjectClass: ABSTRACT
+m-must: ads-indexAttributeId
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.161, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.161
+m-name: ads-jdbmIndex
+m-description: A JDBM indexed attribute
+m-supObjectClass: ads-index
+m-may: ads-indexFileName
+m-may: ads-indexWorkingDir
+m-may: ads-indexNumDupLimit
+m-may: ads-indexCacheSize
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.250, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.250
+m-name: ads-server
+m-description: The server ObjectClass
+m-typeObjectClass: ABSTRACT
+m-must: ads-serverId
+m-must: ads-transports
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.260, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.260
+m-name: ads-catalogBasedServer
+m-description: The catalog based server ObjectClass
+m-supObjectClass: ads-server
+m-typeObjectClass: ABSTRACT
+m-must: ads-serverDS
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.300, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.300
+m-name: ads-ldapServer
+m-description: The LdapServer ObjectClass
+m-supObjectClass: ads-catalogBasedServer
+m-may: ads-ldapServerConfidentialityRequired
+m-may: ads-ldapServerAllowAnonymousAccess
+m-may: ads-ldapServerMaxSizeLimit
+m-may: ads-ldapServerMaxTimeLimit
+m-may: ads-ldapServerSaslHost
+m-may: ads-ldapServerSaslPrincipal
+m-may: ads-ldapServerSaslRealms
+m-may: ads-ldapServerKeystoreFile
+m-may: ads-ldapServerCertificatePassword
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.400, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.400
+m-name: ads-kerberosServer
+m-description: The KerberosServer ObjectClass
+m-supObjectClass: ads-catalogBasedServer
+m-may: ads-krbAllowableClockSkew
+m-may: ads-krbEncryptionTypes
+m-may: ads-krbEmptyAddressesAllowed
+m-may: ads-krbForwardableAllowed
+m-may: ads-krbPaEncTimestampRequired
+m-may: ads-krbPostdatedAllowed
+m-may: ads-krbProxiableAllowed
+m-may: ads-krbRenewableAllowed
+m-may: ads-krbKdcPrincipal
+m-may: ads-krbMaximumRenewableLifetime
+m-may: ads-krbMaximumTicketLifetime
+m-may: ads-krbPrimaryRealm
+m-may: ads-krbBodyChecksumVerified
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.500, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.500
+m-name: ads-dnsServer
+m-description: The DnsServer ObjectClass
+m-supObjectClass: ads-catalogBasedServer
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.600, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.600
+m-name: ads-dhcpServer
+m-description: The DhcpServer ObjectClass
+m-supObjectClass: ads-catalogBasedServer
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.700, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.700
+m-name: ads-ntpServer
+m-description: The NtpServer ObjectClass
+m-supObjectClass: ads-server
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.800, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.800
+m-name: ads-changePasswordServer
+m-description: The ChangePassword ObjectClass
+m-supObjectClass: ads-catalogBasedServer
+m-may: ads-krbAllowableClockSkew
+m-may: ads-krbEmptyAddressesAllowed
+m-may: ads-krbEncryptionTypes
+m-may: ads-krbPrimaryRealm
+m-may: ads-chgPwdPolicyCategoryCount
+m-may: ads-chgPwdPolicyPasswordLength
+m-may: ads-chgPwdPolicyTokenSize
+m-may: ads-chgPwdServicePrincipal
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.18, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.18
+m-name: ads-transport
+m-description: A transport (TCP or UDP)
+m-typeObjectClass: ABSTRACT
+m-must: ads-transportId
+m-must: ipServicePort
+m-may: ads-transportAddress
+m-may: ads-transportBacklog
+m-may: ads-transportEnableSSL
+m-may: ads-transportNbThreads
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.19, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.19
+m-name: ads-tcpTransport
+m-description: A TCP transport
+m-supObjectClass: ads-transport
+
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.3.20, ou=objectClasses, cn=ads-2, ou=schema
+objectclass: metaObjectClass
+objectclass: metaTop
+objectclass: top
+m-oid: 1.3.6.1.4.1.18060.0.4.1.3.20
+m-name: ads-udpTransport
+m-description: an UDP transport
+m-supObjectClass: ads-transport
+
+dn: ou=syntaxCheckers, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: syntaxcheckers
+
+dn: ou=syntaxes, cn=ads-2, ou=schema
+objectclass: organizationalUnit
+objectclass: top
+ou: syntaxes
+

Added: directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/sample-config.ldif
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/sample-config.ldif?rev=811342&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/sample-config.ldif (added)
+++ directory/apacheds/branches/apacheds-schema/ldif-partition/src/main/resources/sample-config.ldif Fri Sep  4 11:16:53 2009
@@ -0,0 +1,42 @@
+dn: ou=config
+objectClass: organizationalUnit
+objectClass: extensibleObject
+objectClass: top
+ou: config
+
+dn: ou=directoryService,ou=config
+objectClass: organizationalUnit
+objectClass: top
+ou: directoryService
+
+dn: ou=interceptors,ou=directoryService,ou=config
+objectClass: organizationalUnit
+objectClass: top
+ou: interceptors
+
+dn: ou=partitions,ou=directoryService,ou=config
+objectClass: organizationalUnit
+objectClass: top
+ou: partitions
+
+dn: ads-partitionId=system,ou=partitions,ou=directoryService,ou=config
+objectClass: ads-partition
+objectClass: ads-jdbmPartition
+objectClass: top
+ads-partitionId: system
+ads-partitionIndexedAttributes: ou=system
+ads-partitionSuffix: ou=system
+
+dn: ou=indexes,ads-partitionId=system,ou=partitions,ou=directoryService,ou=c
+ onfig
+objectClass: organizationalUnit
+objectClass: top
+ou: indexes
+
+dn: ads-indexAttributeId=ou,ou=indexes,ads-partitionId=system,ou=partitions,
+ ou=directoryService,ou=config
+objectClass: ads-jdbmIndex
+objectClass: ads-index
+objectClass: top
+ads-indexAttributeId: ou
+



Mime
View raw message