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/11/12 14:52:59 UTC
svn commit: r835383 - in /directory/shared/branches/shared-schema:
ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java
ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java
Author: elecharny
Date: Thu Nov 12 13:52:59 2009
New Revision: 835383
URL: http://svn.apache.org/viewvc?rev=835383&view=rev
Log:
o Added some missing javadoc
o Implemented the verify() methods
o Added the destroy() method
Modified:
directory/shared/branches/shared-schema/ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java
directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java
Modified: directory/shared/branches/shared-schema/ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java?rev=835383&r1=835382&r2=835383&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java (original)
+++ directory/shared/branches/shared-schema/ldap-schema-loader/src/main/java/org/apache/directory/shared/schema/DefaultSchemaManager.java Thu Nov 12 13:52:59 2009
@@ -97,8 +97,8 @@
/** The list of errors produced when loading some schema elements */
private List<Throwable> errors;
- /** The Schema loader used by this SchemaManager */
- private SchemaLoader loader;
+ /** The Schema schemaLoader used by this SchemaManager */
+ private SchemaLoader schemaLoader;
/** the factory that generates respective SchemaObjects from LDIF entries */
protected final EntityFactory factory;
@@ -107,19 +107,20 @@
private LdapDN schemaModificationAttributesDN;
/**
- * Creates a new instance of DefaultSchemaManager with the default schema loader
+ * Creates a new instance of DefaultSchemaManager with the default schema schemaLoader
*
- * @param loader
+ * @param schemaLoader
*/
public DefaultSchemaManager( SchemaLoader loader ) throws Exception
{
// Default to the the root (one schemaManager for all the entries
namingContext = LdapDN.EMPTY_LDAPDN;
- this.loader = loader;
+ this.schemaLoader = loader;
errors = null;
registries = new Registries();
factory = new SchemaEntityFactory();
}
+
/**
* Creates a new instance of DefaultSchemaManager, for a specific
@@ -130,7 +131,7 @@
public DefaultSchemaManager( SchemaLoader loader, LdapDN namingContext ) throws Exception
{
this.namingContext = namingContext;
- this.loader = loader;
+ this.schemaLoader = loader;
errors = null;
registries = new Registries();
factory = new SchemaEntityFactory();
@@ -163,6 +164,53 @@
}
+ /**
+ * Transform a String[] array of schema to a Schema[]
+ */
+ private Schema[] toArray( String... schemas ) throws Exception
+ {
+ Schema[] schemaArray = new Schema[schemas.length];
+ int n = 0;
+
+ for ( String schemaName:schemas )
+ {
+ schemaArray[n++] = schemaLoader.getSchema( schemaName );
+ }
+
+ return schemaArray;
+ }
+
+
+ private void registerSchemaObjects( Schema schema, Registries registries ) throws Exception
+ {
+ registerComparators( schema, registries );
+ registerNormalizers( schema, registries );
+ registerSyntaxCheckers( schema, registries );
+ registerSyntaxes( schema, registries );
+ registerMatchingRules( schema, registries );
+ registerAttributeTypes( schema, registries );
+ registerObjectClasses( schema, registries );
+ registerMatchingRuleUses( schema, registries );
+ registerDitContentRules( schema, registries );
+ registerNameForms( schema, registries );
+ registerDitStructureRules( schema, registries );
+
+ //notifyListenerOrRegistries( schema, registries );
+ }
+
+
+ //-----------------------------------------------------------------------
+ // API methods
+ //-----------------------------------------------------------------------
+ /**
+ * {@inheritDoc}
+ */
+ public void destroy( Registries registries )
+ {
+ // TODO : Implement this method
+ }
+
+
/***
* {@inheritDoc}
*/
@@ -185,7 +233,7 @@
registries = targetRegistries;
// Delete the old registries to avoid memory leaks
- //destroy( oldRegistries );
+ destroy( oldRegistries );
return true;
}
@@ -203,40 +251,38 @@
/**
- * Transform a String[] array of schema to a Schema[]
+ * {@inheritDoc}
*/
- private Schema[] toArray( String... schemas ) throws Exception
- {
- Schema[] schemaArray = new Schema[schemas.length];
- int n = 0;
-
- for ( String schemaName:schemas )
- {
- schemaArray[n++] = loader.getSchema( schemaName );
- }
-
- return schemaArray;
- }
-
-
public boolean disable( Schema... schemas )
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean disable( String... schemas )
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean disabledRelaxed( Schema... schemas )
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean disabledRelaxed( String... schemas )
{
// TODO Auto-generated method stub
@@ -271,12 +317,20 @@
return enable( toArray( schemas ) );
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean enableRelaxed( Schema... schemas )
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean enableRelaxed( String... schemas )
{
// TODO Auto-generated method stub
@@ -292,6 +346,10 @@
return errors;
}
+
+ /**
+ * {@inheritDoc}
+ */
public Registries getRegistries()
{
return registries;
@@ -336,25 +394,6 @@
}
-
-
- private void registerSchemaObjects( Schema schema, Registries registries ) throws Exception
- {
- registerComparators( schema, registries );
- registerNormalizers( schema, registries );
- registerSyntaxCheckers( schema, registries );
- registerSyntaxes( schema, registries );
- registerMatchingRules( schema, registries );
- registerAttributeTypes( schema, registries );
- registerObjectClasses( schema, registries );
- registerMatchingRuleUses( schema, registries );
- registerDitContentRules( schema, registries );
- registerNameForms( schema, registries );
- registerDitStructureRules( schema, registries );
-
- //notifyListenerOrRegistries( schema, registries );
- }
-
/**
* Load the schema in the registries. We will load everything accordingly to the two flags :
* - isRelaxed
@@ -405,7 +444,7 @@
*/
private void registerAttributeTypes( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadAttributeTypes( schema ) )
+ for ( Entry entry : schemaLoader.loadAttributeTypes( schema ) )
{
registerAttributeType( registries, entry, schema );
}
@@ -417,7 +456,7 @@
*/
private void registerComparators( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadComparators( schema ) )
+ for ( Entry entry : schemaLoader.loadComparators( schema ) )
{
registerComparator( registries, entry, schema );
}
@@ -429,7 +468,7 @@
*/
private void registerDitContentRules( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadDitContentRules( schema ) )
+ for ( Entry entry : schemaLoader.loadDitContentRules( schema ) )
{
registerDitContentRule( registries, entry, schema );
}
@@ -441,7 +480,7 @@
*/
private void registerDitStructureRules( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadDitStructureRules( schema ) )
+ for ( Entry entry : schemaLoader.loadDitStructureRules( schema ) )
{
registerDitStructureRule( registries, entry, schema );
}
@@ -453,7 +492,7 @@
*/
private void registerMatchingRules( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadMatchingRules( schema ) )
+ for ( Entry entry : schemaLoader.loadMatchingRules( schema ) )
{
registerMatchingRule( registries, entry, schema );
}
@@ -465,7 +504,7 @@
*/
private void registerMatchingRuleUses( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadMatchingRuleUses( schema ) )
+ for ( Entry entry : schemaLoader.loadMatchingRuleUses( schema ) )
{
registerMatchingRuleUse( registries, entry, schema );
}
@@ -477,7 +516,7 @@
*/
private void registerNameForms( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadNameForms( schema ) )
+ for ( Entry entry : schemaLoader.loadNameForms( schema ) )
{
registerNameForm( registries, entry, schema );
}
@@ -489,7 +528,7 @@
*/
private void registerNormalizers( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadNormalizers( schema ) )
+ for ( Entry entry : schemaLoader.loadNormalizers( schema ) )
{
registerNormalizer( registries, entry, schema );
}
@@ -501,7 +540,7 @@
*/
private void registerObjectClasses( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadObjectClasses( schema ) )
+ for ( Entry entry : schemaLoader.loadObjectClasses( schema ) )
{
registerObjectClass( registries, entry, schema );
}
@@ -513,7 +552,7 @@
*/
private void registerSyntaxes( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadSyntaxes( schema ) )
+ for ( Entry entry : schemaLoader.loadSyntaxes( schema ) )
{
registerSyntax( registries, entry, schema );
}
@@ -525,7 +564,7 @@
*/
private void registerSyntaxCheckers( Schema schema, Registries registries ) throws Exception
{
- for ( Entry entry : loader.loadSyntaxCheckers( schema ) )
+ for ( Entry entry : schemaLoader.loadSyntaxCheckers( schema ) )
{
registerSyntaxChecker( registries, entry, schema );
}
@@ -941,11 +980,15 @@
*/
public boolean loadAllEnabled() throws Exception
{
- Schema[] schemas = loader.getAllEnabled().toArray( new Schema[0] );
+ Schema[] schemas = schemaLoader.getAllEnabled().toArray( new Schema[0] );
return loadWithDeps( schemas );
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean loadAllEnabledRelaxed() throws Exception
{
// TODO Auto-generated method stub
@@ -985,12 +1028,20 @@
return loadDisabled( toArray( schemas ) );
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean loadRelaxed( Schema... schemas ) throws Exception
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean loadRelaxed( String... schemas ) throws Exception
{
// TODO Auto-generated method stub
@@ -1077,7 +1128,7 @@
else
{
// Call recursively this method
- Schema schemaDep = loader.getSchema( depName );
+ Schema schemaDep = schemaLoader.getSchema( depName );
loadDepsFirst( schemaDep, registries );
}
}
@@ -1087,52 +1138,115 @@
}
+ /**
+ * {@inheritDoc}
+ */
public boolean loadWithDepsRelaxed( Schema... schemas ) throws Exception
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean loadWithDepsRelaxed( String... schemas ) throws Exception
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public void setRegistries( Registries registries )
{
// TODO Auto-generated method stub
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean unload( Schema... schemas )
{
// TODO Auto-generated method stub
return false;
}
+
+ /**
+ * {@inheritDoc}
+ */
public boolean unload( String... schemas )
{
// TODO Auto-generated method stub
return false;
}
- public boolean verify( Schema... schemas )
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean verify( Schema... schemas ) throws Exception
{
- // TODO Auto-generated method stub
- return false;
+ Registries clonedRegistries = null;
+
+ clonedRegistries = registries.clone();
+ clonedRegistries.setRelaxed();
+
+ for ( Schema schema : schemas )
+ {
+ try
+ {
+
+ // Inject the schema
+ boolean loaded = load( clonedRegistries, schema );
+
+ if ( !loaded )
+ {
+ destroy( clonedRegistries );
+ return false;
+ }
+
+ // Now, check the registries
+ List<Throwable> errors = clonedRegistries.checkRefInteg();
+
+ if ( errors.size() != 0 )
+ {
+ destroy( clonedRegistries );
+ return false;
+ }
+ }
+ catch ( Exception e )
+ {
+ destroy( clonedRegistries );
+ return false;
+ }
+ }
+
+ return true;
}
- public boolean verify( String... schemas )
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean verify( String... schemas ) throws Exception
{
- // TODO Auto-generated method stub
- return false;
+ return verify( toArray( schemas ) );
}
+
+ /**
+ * {@inheritDoc}
+ */
public void setSchemaLoader( SchemaLoader schemaLoader )
{
- // TODO Auto-generated method stub
-
+ this.schemaLoader = schemaLoader;
}
@@ -1170,7 +1284,7 @@
*/
public SchemaLoader getLoader()
{
- return loader;
+ return schemaLoader;
}
@@ -1308,6 +1422,7 @@
return registries.unregister( schemaObject );
}
+
/**
* {@inheritDoc}
*/
@@ -1333,7 +1448,7 @@
{
try
{
- return loader.getSchema( schemaName );
+ return schemaLoader.getSchema( schemaName );
}
catch ( Exception e )
{
@@ -1349,7 +1464,7 @@
{
try
{
- Schema schema = loader.getSchema( schemaName );
+ Schema schema = schemaLoader.getSchema( schemaName );
return schema != null;
}
catch ( Exception e )
Modified: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java?rev=835383&r1=835382&r2=835383&view=diff
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java (original)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/SchemaManager.java Thu Nov 12 13:52:59 2009
@@ -231,9 +231,25 @@
*/
boolean loadAllEnabledRelaxed() throws Exception;
+
+ /**
+ * Unload the given set of Schemas
+ *
+ * @param schemas The list of Schema to unload
+ * @return True if all the schemas have been unloaded
+ */
boolean unload( Schema... schemas );
+
+
+ /**
+ * Unload the given set of Schemas
+ *
+ * @param schemas The list of Schema to unload
+ * @return True if all the schemas have been unloaded
+ */
boolean unload( String... schemas );
+
//---------------------------------------------------------------------------------
// Other Schema methods
//---------------------------------------------------------------------------------
@@ -257,19 +273,83 @@
*
* If the modification is ok, the Registries will be updated.
*
- * @param schemas The list of schemas to enable
+ * @param schemas The list of schema name to enable
* @return true if the Registries is still consistent, false otherwise.
*/
boolean enable( String... schemas ) throws Exception;
+
+ /**
+ * Enables a set of Schemas, and returns true if all the schema have been
+ * enabled, with all the dependent schemas. No check is done, the Registries
+ * might become inconsistent after this operation.
+ *
+ * @param schemas The list of schemas to enable
+ * @return true if all the schemas have been enabled
+ */
boolean enableRelaxed( Schema... schemas );
+
+
+ /**
+ * Enables a set of Schemas, and returns true if all the schema have been
+ * enabled, with all the dependent schemas. No check is done, the Registries
+ * might become inconsistent after this operation.
+ *
+ * @param schemas The list of schema names to enable
+ * @return true if all the schemas have been enabled
+ */
boolean enableRelaxed( String... schemas );
+ /**
+ * Disables a set of Schemas, and returns true if all the schema have been
+ * disabled, with all the dependent schemas, and if the registries is
+ * still consistent.
+ *
+ * If the modification is ok, the Registries will be updated.
+ *
+ * @param schemas The list of schemas to disable
+ * @return true if the Registries is still consistent, false otherwise.
+ */
boolean disable( Schema... schemas );
+
+
+ /**
+ * Disables a set of Schemas, and returns true if all the schema have been
+ * disabled, with all the dependent schemas, and if the registries is
+ * still consistent.
+ *
+ * If the modification is ok, the Registries will be updated.
+ *
+ * @param schemas The list of schema names to disable
+ * @return true if the Registries is still consistent, false otherwise.
+ */
boolean disable( String... schemas );
+
+ /**
+ * Disables a set of Schemas, and returns true if all the schema have been
+ * disabled, with all the dependent schemas. The Registries is not checked
+ * and can be inconsistent after this operation
+ *
+ * If the modification is ok, the Registries will be updated.
+ *
+ * @param schemas The list of schemas to disable
+ * @return true if all the schemas have been disabled
+ */
boolean disabledRelaxed( Schema... schemas );
+
+
+ /**
+ * Disables a set of Schemas, and returns true if all the schema have been
+ * disabled, with all the dependent schemas. The Registries is not checked
+ * and can be inconsistent after this operation
+ *
+ * If the modification is ok, the Registries will be updated.
+ *
+ * @param schemas The list of schema names to disable
+ * @return true if all the schemas have been disabled
+ */
boolean disabledRelaxed( String... schemas );
@@ -278,9 +358,19 @@
*
* @param schemas The schemas to check
* @return true if the schemas can be loaded in the registries
+ * @throws Exception if something went wrong
*/
- boolean verify( Schema... schemas );
- boolean verify( String... schemas );
+ boolean verify( Schema... schemas ) throws Exception;
+
+
+ /**
+ * Check that the Schemas are consistent regarding the current Registries.
+ *
+ * @param schemas The schema names to check
+ * @return true if the schemas can be loaded in the registries
+ * @throws Exception if something went wrong
+ */
+ boolean verify( String... schemas ) throws Exception;
/**
@@ -405,6 +495,11 @@
Map<String, OidNormalizer> getNormalizerMapping();
+ /**
+ * Associate a new Registries to the SchemaManager
+ *
+ * @param registries The new Registries
+ */
void setRegistries( Registries registries );
@@ -419,11 +514,25 @@
/**
+ * Delete the given registries and all its content. This method is called
+ * to avoid memory leaks.
+ *
+ * @param registries The registries to be deleted
+ */
+ public void destroy( Registries registries );
+
+
+ /**
* @return The errors obtained when checking the registries
*/
List<Throwable> getErrors();
+ /**
+ * Associate a Schema loader to this SchemaManager
+ *
+ * @param schemaLoader The schema loader to use
+ */
void setSchemaLoader( SchemaLoader schemaLoader );