You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by go...@apache.org on 2012/01/06 14:54:47 UTC
svn commit: r1228186 - in /directory/apacheds/branches/apacheds-osgi:
component-hub/src/main/java/org/apache/directory/server/component/hub/
component-hub/src/main/java/org/apache/directory/server/component/utilities/
service-osgi/src/main/java/org/apa...
Author: gokturk
Date: Fri Jan 6 13:54:46 2012
New Revision: 1228186
URL: http://svn.apache.org/viewvc?rev=1228186&view=rev
Log:
* EntryNormalizer helper is added to normalize the entries those will be added to raw partitions.
* service-osgi's ApacheDS.class is changed to read DirectoryService configuration earlier to fetch the replicaId to feed the EntryNormalizer
* ComponentSchemaManager code is changed to use EntryNormalizer on entries before adding them to SchemaPartition
Added:
directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java (with props)
Modified:
directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentHub.java
directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentSchemaManager.java
directory/apacheds/branches/apacheds-osgi/service-osgi/src/main/java/org/apache/directory/server/ApacheDS.java
Modified: directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentHub.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentHub.java?rev=1228186&r1=1228185&r2=1228186&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentHub.java (original)
+++ directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentHub.java Fri Jan 6 13:54:46 2012
@@ -31,6 +31,7 @@ import org.apache.directory.server.compo
import org.apache.directory.server.component.utilities.ADSComponentHelper;
import org.apache.directory.server.component.utilities.ADSConstants;
import org.apache.directory.server.component.utilities.ADSOSGIEventsHelper;
+import org.apache.directory.server.component.utilities.EntryNormalizer;
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.api.interceptor.Interceptor;
import org.apache.directory.server.core.api.partition.Partition;
Modified: directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentSchemaManager.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentSchemaManager.java?rev=1228186&r1=1228185&r2=1228186&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentSchemaManager.java (original)
+++ directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/hub/ComponentSchemaManager.java Fri Jan 6 13:54:46 2012
@@ -31,6 +31,7 @@ import org.apache.directory.server.compo
import org.apache.directory.server.component.schema.ComponentSchemaGenerator;
import org.apache.directory.server.component.schema.DefaultComponentSchemaGenerator;
import org.apache.directory.server.component.utilities.ADSSchemaConstants;
+import org.apache.directory.server.component.utilities.EntryNormalizer;
import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
@@ -38,12 +39,17 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.interceptor.context.SearchOperationContext;
import org.apache.directory.server.core.api.schema.SchemaPartition;
import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.apache.directory.shared.ldap.model.entry.Value;
import org.apache.directory.shared.ldap.model.exception.LdapException;
import org.apache.directory.shared.ldap.model.ldif.LdifEntry;
import org.apache.directory.shared.ldap.model.ldif.LdifReader;
import org.apache.directory.shared.ldap.model.message.SearchScope;
+import org.apache.directory.shared.ldap.model.name.Ava;
import org.apache.directory.shared.ldap.model.name.Dn;
+import org.apache.directory.shared.ldap.model.name.Rdn;
+import org.apache.directory.shared.ldap.model.schema.AttributeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -152,7 +158,9 @@ public class ComponentSchemaManager
for ( LdifEntry le : schemaElements )
{
- AddOperationContext addContext = new AddOperationContext( null, le.getEntry() );
+ Entry normalizedEntry = EntryNormalizer.normalizeEntry( le.getEntry() );
+ AddOperationContext addContext = new AddOperationContext( null, normalizedEntry );
+
schemaPartition.add( addContext );
}
}
@@ -196,12 +204,15 @@ public class ComponentSchemaManager
{
try
{
- InputStream is = this.getClass().getResourceAsStream( "componenthub.ldif" );
- LdifReader reader = new LdifReader( is );
+ LdifReader reader = new LdifReader( this.getClass().getResourceAsStream( "componenthub.ldif" ) );
for ( LdifEntry le : reader )
{
- AddOperationContext addContext = new AddOperationContext( null, le.getEntry() );
+
+ Entry normalizedEntry = EntryNormalizer.normalizeEntry( le.getEntry() );
+
+ AddOperationContext addContext = new AddOperationContext( null, normalizedEntry );
+
schemaPartition.add( addContext );
}
}
Added: directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java?rev=1228186&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java (added)
+++ directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java Fri Jan 6 13:54:46 2012
@@ -0,0 +1,71 @@
+package org.apache.directory.server.component.utilities;
+
+
+import java.util.UUID;
+
+import org.apache.directory.server.constants.ServerDNConstants;
+import org.apache.directory.shared.ldap.model.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.model.csn.CsnFactory;
+import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
+import org.apache.directory.shared.ldap.model.entry.Entry;
+import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.schema.SchemaManager;
+import org.apache.directory.shared.util.DateUtils;
+
+
+/**
+ * Since ComponentHub is accessing raw schema and config partition references.
+ * Entries must be processed as NormalizationInterceptor and OperationalInterceptor do.
+ * This class provides normalization and attribution facilities for ldif formatted entries.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class EntryNormalizer
+{
+ /** SchemaManager reference for normalizing */
+ private static SchemaManager schemaManager;
+ private static CsnFactory csnFactory;
+
+
+ /**
+ * Sets the SchemaManager reference for normalizing.
+ *
+ * @param schemaManager SchemaManager to use in normalizing.
+ */
+ public static void init( SchemaManager schemaManager, int replicaId )
+ {
+ EntryNormalizer.schemaManager = schemaManager;
+ csnFactory = new CsnFactory( replicaId );
+ }
+
+
+ /**
+ * Puts the operational attributes to given entry,
+ * and normalizes its Dn and Attribute names.
+ *
+ * @param entry Entry to be normalized.
+ * @return Normalized entry, null if error occurs.
+ */
+ public static Entry normalizeEntry( Entry entry )
+ {
+ // Put the operational attributes first.
+ entry.put( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
+ entry.put( SchemaConstants.ENTRY_CSN_AT, csnFactory.newInstance().toString() );
+ entry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN );
+ entry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
+
+ // This will cause the Dn and attribute names to be normalized,
+ Entry normalizedEntry;
+ try
+ {
+ normalizedEntry = new DefaultEntry( schemaManager, entry );
+ }
+ catch ( LdapException e )
+ {
+ e.printStackTrace();
+ return null;
+ }
+
+ return normalizedEntry;
+ }
+}
Propchange: directory/apacheds/branches/apacheds-osgi/component-hub/src/main/java/org/apache/directory/server/component/utilities/EntryNormalizer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: directory/apacheds/branches/apacheds-osgi/service-osgi/src/main/java/org/apache/directory/server/ApacheDS.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-osgi/service-osgi/src/main/java/org/apache/directory/server/ApacheDS.java?rev=1228186&r1=1228185&r2=1228186&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-osgi/service-osgi/src/main/java/org/apache/directory/server/ApacheDS.java (original)
+++ directory/apacheds/branches/apacheds-osgi/service-osgi/src/main/java/org/apache/directory/server/ApacheDS.java Fri Jan 6 13:54:46 2012
@@ -36,6 +36,7 @@ import org.apache.directory.server.compo
import org.apache.directory.server.component.hub.client.HubClientServers;
import org.apache.directory.server.component.utilities.ADSConstants;
import org.apache.directory.server.component.utilities.ADSOSGIEventsHelper;
+import org.apache.directory.server.component.utilities.EntryNormalizer;
import org.apache.directory.server.config.ConfigPartitionReader;
import org.apache.directory.server.config.LdifConfigExtractor;
import org.apache.directory.server.config.beans.ConfigBean;
@@ -118,6 +119,9 @@ public class ApacheDS implements EventHa
/** DirectoryService reference */
private DirectoryService directoryService;
+ /** DirectoryServiceBean reference */
+ private DirectoryServiceBean directoryServiceBean;
+
/** The SchemaPartition */
private SchemaPartition schemaPartition;
@@ -237,22 +241,30 @@ public class ApacheDS implements EventHa
*/
private void initiateComponentManagement() throws Exception
{
+
// Init SchemaPartition and 'Config Partition' for ComponentHub use.
initSchemaManagerAndPartition();
initConfigPartition();
- new Thread(new Runnable()
+ // Read the configuration
+ ConfigPartitionReader cpReader = new ConfigPartitionReader( configPartition );
+ ConfigBean configBean = cpReader.readConfig();
+
+ directoryServiceBean = configBean.getDirectoryServiceBean();
+
+ EntryNormalizer.init( schemaManager, directoryServiceBean.getDsReplicaId() );
+
+ new Thread( new Runnable()
{
-
+
@Override
public void run()
{
// Create the Component Hub object for component management.
componentHub = ComponentHub.createIPojoInstance( instanceDir, schemaPartition, configPartition );
-
+
}
- }).start();
-
+ } ).start();
// Instantiate HubClients for Interceptors and Partitions
interceptorsManager = new HubClientInterceptors();
@@ -340,16 +352,10 @@ public class ApacheDS implements EventHa
private void initDirectoryService() throws Exception
{
- // Read the configuration
- ConfigPartitionReader cpReader = new ConfigPartitionReader( configPartition );
- ConfigBean configBean = cpReader.readConfig();
-
LOG.info( "Initializing the DirectoryService..." );
long startTime = System.currentTimeMillis();
- DirectoryServiceBean directoryServiceBean = configBean.getDirectoryServiceBean();
-
// Get the core interceptor and partitions list from HubClients.
// Core ones must be set at the timt this method is called.
List<Interceptor> coreInterceptors = interceptorsManager.getCoreInterceptors();