You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2006/12/13 00:33:02 UTC
svn commit: r486412 - in /directory/branches/trunks/schema/apacheds:
bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/
core/src/main/java/org/apache/directory/server/core/schema/
core/src/main/java/org/apache/directory/s...
Author: akarasulu
Date: Tue Dec 12 15:32:55 2006
New Revision: 486412
URL: http://svn.apache.org/viewvc?view=rev&rev=486412
Log:
got objectClass loading into the bootstrap schema partition working
Modified:
directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/AttributesFactory.java
directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java
directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/ObjectClassRegistry.java
directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/SchemaService.java
directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapObjectClassRegistry.java
directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapRegistries.java
directory/branches/trunks/schema/apacheds/core/src/main/schema/apachemeta.schema
Modified: directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/AttributesFactory.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/AttributesFactory.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/AttributesFactory.java (original)
+++ directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/AttributesFactory.java Tue Dec 12 15:32:55 2006
@@ -36,6 +36,7 @@
import org.apache.directory.shared.ldap.schema.NameForm;
import org.apache.directory.shared.ldap.schema.Normalizer;
import org.apache.directory.shared.ldap.schema.ObjectClass;
+import org.apache.directory.shared.ldap.schema.SchemaObject;
import org.apache.directory.shared.ldap.schema.Syntax;
import org.apache.directory.shared.ldap.schema.syntax.SyntaxChecker;
@@ -49,6 +50,7 @@
*/
public class AttributesFactory
{
+ private static final String META_OBJECT_CLASS_OC = "metaObjectClass";
private static final String META_ATTRIBUTE_TYPE_OC = "metaAttributeType";
private static final String META_MATCHING_RULE_OC = "metaMatchingRule";
private static final String META_NORMALIZER_OC = "metaNormalizer";
@@ -77,7 +79,6 @@
private static final String M_NAME_AT = "m-name";
private static final String M_DESC_AT = "m-description";
private static final String M_OBSOLETE_AT = "m-obsolete";
- private static final String M_SUB_OBJECT_CLASS_AT = "m-supObjectClass";
private static final String M_MUST_AT = "m-must";
private static final String M_MAY_AT = "m-may";
private static final String M_TYPE_OBJECT_CLASS_AT = "m-typeObjectClass";
@@ -94,6 +95,7 @@
private static final String M_SINGLE_VALUE_AT = "m-singleValue";
private static final String M_USAGE_AT = "m-usage";
// private static final String M_EXTENSION_ATTRIBUTE_TYPE_AT = "m-extensionAttributeType";
+ private static final String M_SUP_OBJECT_CLASS_AT = "m-supObjectClass";
/*
@@ -120,15 +122,8 @@
{
BasicAttributes entry = new BasicAttributes( OBJECT_CLASS_AT, "top", true );
entry.get( OBJECT_CLASS_AT ).add( META_SYNTAX_OC );
- entry.put( M_OID_AT, syntax.getOid() );
- entry.put( M_OBSOLETE_AT, getBoolean( syntax.isObsolete() ) );
entry.put( M_HUMAN_READIBLE_AT, getBoolean( syntax.isHumanReadible() ) );
-
- if ( syntax.getDescription() != null )
- {
- entry.put( M_DESC_AT, syntax.getDescription() );
- }
-
+ injectCommon( syntax, entry );
return entry;
}
@@ -163,25 +158,8 @@
{
BasicAttributes entry = new BasicAttributes( OBJECT_CLASS_AT, "top", true );
entry.get( OBJECT_CLASS_AT ).add( META_MATCHING_RULE_OC );
- entry.put( M_OID_AT, matchingRule.getOid() );
entry.put( M_SYNTAX_AT, matchingRule.getSyntax().getOid() );
- entry.put( M_OBSOLETE_AT, getBoolean( matchingRule.isObsolete() ) );
-
- if ( matchingRule.getName() != null )
- {
- Attribute attr = new BasicAttribute( M_NAME_AT );
- for ( String name: matchingRule.getNames() )
- {
- attr.add( name );
- }
- entry.put( attr );
- }
-
- if ( matchingRule.getDescription() != null )
- {
- entry.put( M_DESC_AT, matchingRule.getDescription() );
- }
-
+ injectCommon( matchingRule, entry );
return entry;
}
@@ -240,14 +218,13 @@
{
BasicAttributes entry = new BasicAttributes( OBJECT_CLASS_AT, "top", true );
entry.get( OBJECT_CLASS_AT ).add( META_ATTRIBUTE_TYPE_OC );
-
- entry.put( M_OID_AT, attributeType.getOid() );
entry.put( M_SYNTAX_AT, attributeType.getSyntax().getOid() );
- entry.put( M_OBSOLETE_AT, getBoolean( attributeType.isObsolete() ) );
entry.put( M_COLLECTIVE_AT, getBoolean( attributeType.isCollective() ) );
entry.put( M_NO_USER_MODIFICATION_AT, getBoolean( ! attributeType.isCanUserModify() ) );
entry.put( M_SINGLE_VALUE_AT, getBoolean( attributeType.isSingleValue() ) );
entry.put( M_USAGE_AT, attributeType.getUsage().toString() );
+
+ injectCommon( attributeType, entry );
AttributeType superior = attributeType.getSuperior();
if ( superior == null )
@@ -300,31 +277,116 @@
entry.put( M_ORDERING_AT, ordering );
}
+
+ return entry;
+ }
+
+
+ /**
+ * Creates the attributes of an entry representing an objectClass.
+ *
+ * <pre>
+ * objectclass ( 1.3.6.1.4.1.18060.0.4.0.3.2
+ * NAME 'metaObjectclass'
+ * DESC 'meta definition of the objectclass object'
+ * SUP metaTop
+ * STRUCTURAL
+ * MUST m-oid
+ * MAY ( m-name $ m-obsolete $ m-supObjectClass $ m-typeObjectClass $ m-must $
+ * m-may $ m-extensionObjectClass )
+ * )
+ * </pre>
+ *
+ * @param objectClass the objectClass to produce a meta schema entry for
+ * @return the attributes of the metaSchema entry representing the objectClass
+ * @throws NamingException if there are any problems
+ */
+ public Attributes getAttributes( ObjectClass objectClass ) throws NamingException
+ {
+ BasicAttributes entry = new BasicAttributes( OBJECT_CLASS_AT, "top", true );
+ entry.get( OBJECT_CLASS_AT ).add( META_OBJECT_CLASS_OC );
+ entry.put( M_TYPE_OBJECT_CLASS_AT, objectClass.getType().toString() );
- Attribute attr = new BasicAttribute( M_NAME_AT );
- for ( String name: attributeType.getNames() )
+ injectCommon( objectClass, entry );
+
+ // handle the superior objectClasses
+ if ( objectClass.getSuperClasses() != null && objectClass.getSuperClasses().length != 0 )
{
- attr.add( name );
+ Attribute attr = new BasicAttribute( M_SUP_OBJECT_CLASS_AT );
+ for ( ObjectClass superClass: objectClass.getSuperClasses() )
+ {
+ attr.add( getNameOrNumericoid( superClass ) );
+ }
+ entry.put( attr );
+ }
+
+ // add the must list
+ if ( objectClass.getMustList() != null && objectClass.getMustList().length != 0 )
+ {
+ Attribute attr = new BasicAttribute( M_MUST_AT );
+ for ( AttributeType mustAttribute: objectClass.getMustList() )
+ {
+ attr.add( getNameOrNumericoid( mustAttribute ) );
+ }
+ entry.put( attr );
}
- entry.put( attr );
- if ( attributeType.getDescription() != null )
+ // add the may list
+ if ( objectClass.getMayList() != null && objectClass.getMayList().length != 0 )
{
- entry.put( M_DESC_AT, attributeType.getDescription() );
+ Attribute attr = new BasicAttribute( M_MAY_AT );
+ for ( AttributeType mayAttribute: objectClass.getMayList() )
+ {
+ attr.add( getNameOrNumericoid( mayAttribute ) );
+ }
+ entry.put( attr );
}
-
+
return entry;
}
- public Attributes getAttributes( ObjectClass objectClass )
+ private final String getNameOrNumericoid( SchemaObject object )
{
- BasicAttributes entry = new BasicAttributes( OBJECT_CLASS_AT, "top", true );
- entry.get( OBJECT_CLASS_AT ).add( "" );
- return entry;
+ // first try to use userfriendly name if we can
+ if ( object.getName() != null )
+ {
+ return object.getName();
+ }
+
+ return object.getOid();
+ }
+
+
+ private final void injectCommon( SchemaObject object, Attributes entry )
+ {
+ injectNames( object.getNames(), entry );
+ entry.put( M_OBSOLETE_AT, getBoolean( object.isObsolete() ) );
+ entry.put( M_OID_AT, object.getOid() );
+
+ if ( object.getDescription() != null )
+ {
+ entry.put( M_DESC_AT, object.getDescription() );
+ }
+ }
+
+
+ private final void injectNames( String[] names, Attributes entry )
+ {
+ if ( names == null || names.length == 0 )
+ {
+ return;
+ }
+
+ Attribute attr = new BasicAttribute( M_NAME_AT );
+ for ( String name: names )
+ {
+ attr.add( name );
+ }
+ entry.put( attr );
}
-
+
private final String getBoolean( boolean value )
{
if ( value )
Modified: directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java (original)
+++ directory/branches/trunks/schema/apacheds/bootstrap-plugin/src/main/java/org/apache/directory/server/core/bootstrap/plugin/BootstrapPlugin.java Tue Dec 12 15:32:55 2006
@@ -39,6 +39,7 @@
import org.apache.directory.server.core.schema.ComparatorRegistry;
import org.apache.directory.server.core.schema.MatchingRuleRegistry;
import org.apache.directory.server.core.schema.NormalizerRegistry;
+import org.apache.directory.server.core.schema.ObjectClassRegistry;
import org.apache.directory.server.core.schema.Registries;
import org.apache.directory.server.core.schema.SyntaxCheckerRegistry;
import org.apache.directory.server.core.schema.SyntaxRegistry;
@@ -55,6 +56,7 @@
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.MatchingRule;
+import org.apache.directory.shared.ldap.schema.ObjectClass;
import org.apache.directory.shared.ldap.schema.Syntax;
import org.apache.directory.shared.ldap.schema.syntax.SyntaxChecker;
import org.apache.maven.plugin.AbstractMojo;
@@ -135,6 +137,7 @@
addComparators();
addMatchingRules();
addAttributeTypes();
+ addObjectClasses();
listEntries();
}
@@ -174,6 +177,31 @@
checkCreateContainer( dn );
Attributes entry = attributesFactory.getAttributes( at );
dn.add( "m-oid=" + at.getOid() );
+ dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
+ partition.add( dn, entry );
+ }
+ }
+
+
+ private void addObjectClasses() throws NamingException
+ {
+ getLog().info( "------------------------------------------------------------------------" );
+ getLog().info( " Adding objectClasses" );
+ getLog().info( "------------------------------------------------------------------------" );
+
+ ObjectClassRegistry objectClassRegistry = registries.getObjectClassRegistry();
+ Iterator<ObjectClass> ii = objectClassRegistry.iterator();
+ while ( ii.hasNext() )
+ {
+ ObjectClass oc = ii.next();
+ getLog().info( "Adding objectClass with oid = " + oc.getOid() );
+ String schemaName = objectClassRegistry.getSchemaName( oc.getOid() );
+ LdapDN dn = checkCreateSchema( schemaName );
+ dn.add( "ou=objectClasses" );
+ dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
+ checkCreateContainer( dn );
+ Attributes entry = attributesFactory.getAttributes( oc );
+ dn.add( "m-oid=" + oc.getOid() );
dn.normalize( registries.getAttributeTypeRegistry().getNormalizerMapping() );
partition.add( dn, entry );
}
Modified: directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/ObjectClassRegistry.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/ObjectClassRegistry.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/ObjectClassRegistry.java (original)
+++ directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/ObjectClassRegistry.java Tue Dec 12 15:32:55 2006
@@ -81,5 +81,5 @@
*
* @return an iterator over all ObjectClasses in registry
*/
- Iterator list();
+ Iterator<ObjectClass> iterator();
}
Modified: directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/SchemaService.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/SchemaService.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/SchemaService.java (original)
+++ directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/SchemaService.java Tue Dec 12 15:32:55 2006
@@ -279,10 +279,10 @@
if ( returnAllOperationalAttributes || set.contains( "objectclasses" ) )
{
attr = new LockableAttributeImpl( "objectClasses" );
- Iterator list = registries.getObjectClassRegistry().list();
+ Iterator<ObjectClass> list = registries.getObjectClassRegistry().iterator();
while ( list.hasNext() )
{
- ObjectClass oc = ( ObjectClass ) list.next();
+ ObjectClass oc = list.next();
attr.add( SchemaUtils.render( oc ).toString() );
}
attrs.put( attr );
Modified: directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapObjectClassRegistry.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapObjectClassRegistry.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapObjectClassRegistry.java (original)
+++ directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapObjectClassRegistry.java Tue Dec 12 15:32:55 2006
@@ -44,9 +44,9 @@
/** static class logger */
private final static Logger log = LoggerFactory.getLogger( BootstrapObjectClassRegistry.class );
/** maps an OID to an ObjectClass */
- private final Map byOid;
+ private final Map<String,ObjectClass> byOid;
/** maps an OID to a schema name*/
- private final Map oidToSchema;
+ private final Map<String,String> oidToSchema;
/** the registry used to resolve names to OIDs */
private final OidRegistry oidRegistry;
@@ -60,8 +60,8 @@
*/
public BootstrapObjectClassRegistry(OidRegistry oidRegistry)
{
- this.byOid = new HashMap();
- this.oidToSchema = new HashMap();
+ this.byOid = new HashMap<String,ObjectClass>();
+ this.oidToSchema = new HashMap<String,String>();
this.oidRegistry = oidRegistry;
}
@@ -139,7 +139,7 @@
}
- public Iterator list()
+ public Iterator<ObjectClass> iterator()
{
return byOid.values().iterator();
}
Modified: directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapRegistries.java
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapRegistries.java?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapRegistries.java (original)
+++ directory/branches/trunks/schema/apacheds/core/src/main/java/org/apache/directory/server/core/schema/bootstrap/BootstrapRegistries.java Tue Dec 12 15:32:55 2006
@@ -189,7 +189,7 @@
{
ArrayList errors = new ArrayList();
- Iterator list = objectClassRegistry.list();
+ Iterator list = objectClassRegistry.iterator();
while ( list.hasNext() )
{
ObjectClass oc = ( ObjectClass ) list.next();
Modified: directory/branches/trunks/schema/apacheds/core/src/main/schema/apachemeta.schema
URL: http://svn.apache.org/viewvc/directory/branches/trunks/schema/apacheds/core/src/main/schema/apachemeta.schema?view=diff&rev=486412&r1=486411&r2=486412
==============================================================================
--- directory/branches/trunks/schema/apacheds/core/src/main/schema/apachemeta.schema (original)
+++ directory/branches/trunks/schema/apacheds/core/src/main/schema/apachemeta.schema Tue Dec 12 15:32:55 2006
@@ -476,9 +476,9 @@
SINGLE-VALUE
)
-# --- m-attributeTypeUusage AttributeType -------------------------------------
-attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.18 NAME 'm-attributeTypeUsage'
- DESC 'Type of operation'
+# --- m-usage AttributeType -------------------------------------
+attributetype ( 1.3.6.1.4.1.18060.0.4.0.2.18 NAME 'm-usage'
+ DESC 'Usage type of an attributeType'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE