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 2009/05/30 23:47:06 UTC

svn commit: r780335 - /directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java

Author: elecharny
Date: Sat May 30 21:47:05 2009
New Revision: 780335

URL: http://svn.apache.org/viewvc?rev=780335&view=rev
Log:
Added the entryUUID and entryCSN attributes in each entry

Modified:
    directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java

Modified: directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java?rev=780335&r1=780334&r2=780335&view=diff
==============================================================================
--- directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java (original)
+++ directory/apacheds/trunk/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java Sat May 30 21:47:05 2009
@@ -35,6 +35,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 
 import javax.naming.NamingException;
 
@@ -47,6 +48,7 @@
 import org.apache.directory.server.core.entry.ServerModification;
 import org.apache.directory.server.xdbm.Index;
 import org.apache.directory.server.xdbm.IndexNotFoundException;
+import org.apache.directory.server.xdbm.Store;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore;
 import org.apache.directory.server.schema.SerializableComparator;
@@ -69,6 +71,7 @@
 import org.apache.directory.server.schema.registries.SyntaxRegistry;
 import org.apache.directory.server.utils.AttributesFactory;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.csn.CSNFactory;
 import org.apache.directory.shared.ldap.entry.Modification;
 import org.apache.directory.shared.ldap.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.name.LdapDN;
@@ -79,6 +82,7 @@
 import org.apache.directory.shared.ldap.schema.Syntax;
 import org.apache.directory.shared.ldap.schema.SyntaxChecker;
 import org.apache.directory.shared.ldap.util.DateUtils;
+import org.apache.directory.shared.ldap.util.StringTools;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -165,13 +169,15 @@
     /**
      * The store to load schema entities into.
      */
-    private JdbmStore store = new JdbmStore();
+    private JdbmStore<ServerEntry> store = new JdbmStore<ServerEntry>();
 
     /**
      * Map of schemas by name
      */
     private Map<String, Schema> schemas = new HashMap<String, Schema>();
 
+    /** CSN factory instance */
+    private static final CSNFactory CSN_FACTORY = new CSNFactory();
 
     /**
      * Loads a bunch of bootstrap classes into memory then adds them to a new
@@ -225,7 +231,7 @@
                 entry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC );
                 entry.get( SchemaConstants.OBJECT_CLASS_AT ).add( SchemaConstants.ORGANIZATIONAL_UNIT_OC );
                 entry.put( SchemaConstants.OU_AT, "schema" );
-                store.add( entry );
+                injectEntryInStore( store, entry );
             }
 
             createSchemasAndContainers();
@@ -387,7 +393,7 @@
 
         ServerEntry entry = attributesFactory.getAttributes( schema, registries );
         entry.setDn( dn );
-        store.add( entry );
+        injectEntryInStore( store, entry );
 
         dn = ( LdapDN ) dn.clone();
 
@@ -472,7 +478,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + at.getOid() );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
 
         getLog().info( "" );
@@ -503,7 +509,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + oc.getOid() );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
 
         getLog().info( "" );
@@ -534,7 +540,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + mr.getOid() );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
 
         getLog().info( "" );
@@ -566,7 +572,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + oid );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
         getLog().info( "" );
     }
@@ -597,7 +603,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + oid );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
 
         getLog().info( "" );
@@ -627,7 +633,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + syntax.getOid() );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
         getLog().info( "" );
     }
@@ -657,7 +663,7 @@
             dn.add( MetaSchemaConstants.M_OID_AT + "=" + syntaxChecker.getSyntaxOid() );
             dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
             entry.setDn( dn );
-            store.add( entry );
+            injectEntryInStore( store, entry );
         }
 
         getLog().info( "" );
@@ -680,11 +686,11 @@
         store.setWorkingDirectory( workingDirectory );
 
         // add the indices
-        Set<JdbmIndex> userIndices = new HashSet<JdbmIndex>();
+        Set<Index<?, ServerEntry>> userIndices = new HashSet<Index<?, ServerEntry>>();
 
         for ( String indexedAttribute : indexedAttributes )
         {
-            JdbmIndex index = new JdbmIndex();
+            Index<String, ServerEntry> index = new JdbmIndex<String, ServerEntry>();
             index.setAttributeId( indexedAttribute );
             userIndices.add( index );
         }
@@ -700,7 +706,7 @@
             rootEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, 
                 SchemaConstants.ORGANIZATIONAL_UNIT_OC );
             rootEntry.put( SchemaConstants.OU_AT, "schema" );
-            store.add( rootEntry );
+            injectEntryInStore( store, rootEntry );
         }
         catch ( Exception e )
         {
@@ -737,7 +743,7 @@
         LdapDN normName = new LdapDN( ServerDNConstants.SCHEMA_TIMESTAMP_ENTRY_DN );
         normName.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
         entry.setDn( normName );
-        store.add( entry );
+        injectEntryInStore( store, entry );
     }
 
 
@@ -857,7 +863,7 @@
         ServerEntry entry = new DefaultServerEntry( registries, clonedDn );
         entry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC );
         entry.put( SchemaConstants.OU_AT, ( String ) clonedDn.getRdn().getValue() );
-        store.add( entry );
+        injectEntryInStore( store, entry );
     }
 
 
@@ -874,7 +880,7 @@
 
         ServerEntry entry = attributesFactory.getAttributes( schema, registries );
         entry.setDn( dn );
-        store.add( entry );
+        injectEntryInStore( store, entry );
         return dn;
     }
 
@@ -923,7 +929,7 @@
 
         while ( systemIndices.hasNext() )
         {
-            Index index = store.getSystemIndex( systemIndices.next() );
+            Index<?, ServerEntry> index = store.getSystemIndex( systemIndices.next() );
             buf.append( "schema/" );
             buf.append( index.getAttribute().getName() );
             buf.append( ".db\n" );
@@ -940,4 +946,22 @@
 
         return buf;
     }
+    
+    
+    /**
+     * Adds a given <i>ServerEntry</i> to the store after injecting entryCSN and entryUUID operational
+     * attributes
+     *
+     * @param store the store
+     * @param dn the normalized DN
+     * @param entry the server entry
+     * @throws Exception in case of any problems in adding the entry to the store
+     */
+    private void injectEntryInStore( Store<ServerEntry> store, ServerEntry entry ) throws Exception
+    {
+        entry.add( ApacheSchemaConstants.ENTRY_CSN_AT, CSN_FACTORY.newInstance( 1 ).toString() );
+        entry.add( ApacheSchemaConstants.ENTRY_UUID_AT, StringTools.getBytesUtf8( UUID.randomUUID().toString() ) );
+        
+        store.add( entry );
+    }
 }