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 2009/08/27 01:55:12 UTC
svn commit: r808228 - in /directory:
apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/
apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/
apacheds/branches/apacheds-schema/schema-loader/...
Author: akarasulu
Date: Wed Aug 26 23:55:11 2009
New Revision: 808228
URL: http://svn.apache.org/viewvc?rev=808228&view=rev
Log:
moved and un-abstracted the AbstractSchema to be the DefaultSchema while moving it from apacheds to shared
Added:
directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/
directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/
directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoaderTest.java
directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchema.java
Removed:
directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/AbstractSchema.java
Modified:
directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/SchemaEntityFactory.java
directory/apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/schema.ldif
Modified: directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/SchemaEntityFactory.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/SchemaEntityFactory.java?rev=808228&r1=808227&r2=808228&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/SchemaEntityFactory.java (original)
+++ directory/apacheds/branches/apacheds-schema/core/src/main/java/org/apache/directory/server/core/schema/SchemaEntityFactory.java Wed Aug 26 23:55:11 2009
@@ -52,6 +52,7 @@
import org.apache.directory.shared.ldap.schema.parsers.NormalizerDescription;
import org.apache.directory.shared.ldap.schema.parsers.SyntaxCheckerDescription;
import org.apache.directory.shared.ldap.schema.registries.Registries;
+import org.apache.directory.shared.ldap.schema.registries.DefaultSchema;
import org.apache.directory.shared.ldap.util.Base64;
@@ -136,7 +137,7 @@
dependencies = depsSet.toArray( EMPTY_ARRAY );
}
- return new AbstractSchema( name, owner, dependencies, isDisabled ){};
+ return new DefaultSchema( name, owner, dependencies, isDisabled ){};
}
Modified: directory/apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/schema.ldif
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/schema.ldif?rev=808228&r1=808227&r2=808228&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/schema.ldif (original)
+++ directory/apacheds/branches/apacheds-schema/schema-data/src/main/resources/schema/schema.ldif Wed Aug 26 23:55:11 2009
@@ -4,3 +4,5 @@
objectclass: organizationalUnit
objectclass: top
entrycsn: 20090818052725.311000Z#000000#000#000000
+creatorsname: uid=admin,ou=system
+createtimestamp: 20090818022726Z
Added: directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java?rev=808228&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java (added)
+++ directory/apacheds/branches/apacheds-schema/schema-loader/src/main/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoader.java Wed Aug 26 23:55:11 2009
@@ -0,0 +1,175 @@
+/*
+ * 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.schema.loader.ldif;
+
+
+import org.apache.directory.shared.ldap.schema.registries.AbstractSchemaLoader;
+import org.apache.directory.shared.ldap.schema.registries.Schema;
+import org.apache.directory.shared.ldap.schema.registries.Registries;
+import org.apache.directory.shared.ldap.schema.registries.DefaultSchema;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+import org.apache.directory.shared.ldap.constants.SchemaConstants;
+import org.apache.directory.shared.ldap.entry.Value;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileFilter;
+import java.io.FilenameFilter;
+
+
+/**
+ * Loads schema data from an LDIF files containing entries representing schema
+ * objects, using the meta schema format.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Revision$
+ */
+public class LdifSchemaLoader extends AbstractSchemaLoader
+{
+ /** static class logger */
+ private static final Logger LOG = LoggerFactory.getLogger( LdifSchemaLoader.class );
+
+ /** Speedup for DEBUG mode */
+ private static final boolean IS_DEBUG = LOG.isDebugEnabled();
+
+ private final File baseDirectory;
+ private final Set<Schema> schemas = new HashSet<Schema>();
+ private final FilenameFilter ldifFilter = new FilenameFilter()
+ {
+ @Override
+ public boolean accept( File file, String name )
+ {
+ return name.endsWith( "ldif" );
+ }
+ };
+
+
+ /**
+ * Creates a new LDIF based SchemaLoader. The constructor checks to make
+ * sure the supplied base directory exists and contains a schema.ldif file
+ * and if not complains about it.
+ *
+ * @param baseDirectory the schema LDIF base directory
+ * @throws Exception if the base directory does not exist or does not
+ * a valid schema.ldif file
+ */
+ public LdifSchemaLoader( File baseDirectory ) throws Exception
+ {
+ this.baseDirectory = baseDirectory;
+
+ if ( ! baseDirectory.exists() )
+ {
+ throw new IllegalArgumentException( "Provided baseDirectory '" +
+ baseDirectory.getAbsolutePath() + "' does not exist." );
+ }
+
+ File schemaLdif = new File( baseDirectory, "schema.ldif" );
+ if ( ! schemaLdif.exists() )
+ {
+ throw new FileNotFoundException( "Expecting to find a schema.ldif file in provided baseDirectory " +
+ "path '" + baseDirectory.getAbsolutePath() + "' but no such file found." );
+ }
+
+ initializeSchemas();
+ }
+
+
+ /**
+ * Scans for LDIF files just describing the various schema contained in
+ * the schema repository.
+ *
+ * @throws Exception
+ */
+ private void initializeSchemas() throws Exception
+ {
+ File schemaDirectory = new File( baseDirectory, "schema" );
+ String[] ldifFiles = schemaDirectory.list( ldifFilter );
+
+ for ( int ii = 0; ii < ldifFiles.length; ii++ )
+ {
+ LdifReader reader = new LdifReader( new File( schemaDirectory, ldifFiles[ii] ) );
+ LdifEntry entry = reader.next();
+ schemas.add( ldifToSchema( entry ) );
+ }
+ }
+
+
+ private Schema ldifToSchema( LdifEntry entry ) throws Exception
+ {
+ String name = entry.get( SchemaConstants.CN_AT ).getString();
+
+ boolean isDisabled = false;
+ if ( entry.get( "m-disabled" ) != null )
+ {
+ isDisabled = Boolean.getBoolean( entry.get( "m-disabled" ).getString() );
+ }
+
+ String[] dependencies = null;
+ if ( entry.get( "m-dependencies" ) != null )
+ {
+ dependencies = new String[ entry.get( "m-dependencies" ).size() ];
+ int ii = 0;
+ Iterator<Value<?>> list = entry.get( "m-dependencies" ).getAll();
+ while ( list.hasNext() )
+ {
+ dependencies[ii] = list.next().getString();
+ ii++;
+ }
+ }
+
+ return new DefaultSchema( name, null, dependencies, isDisabled );
+ }
+
+
+ @Override
+ public Schema getSchema( String schemaName ) throws Exception
+ {
+ return null;
+ }
+
+
+ @Override
+ public Schema getSchema( String schemaName, Properties schemaProperties ) throws Exception
+ {
+ return null;
+ }
+
+
+ @Override
+ public void loadWithDependencies( Collection<Schema> schemas, Registries registries ) throws Exception
+ {
+ }
+
+
+ @Override
+ public void loadWithDependencies( Schema schemas, Registries registries ) throws Exception
+ {
+ }
+
+
+ @Override
+ public void load( Schema schema, Registries registries, boolean isDepLoad ) throws Exception
+ {
+ }
+}
Added: directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoaderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoaderTest.java?rev=808228&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoaderTest.java (added)
+++ directory/apacheds/branches/apacheds-schema/schema-loader/src/test/java/org/apache/directory/server/schema/loader/ldif/LdifSchemaLoaderTest.java Wed Aug 26 23:55:11 2009
@@ -0,0 +1,40 @@
+/*
+ * 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.schema.loader.ldif;
+
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+
+/**
+ * Tests the LdifSchemaLoader.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Revision$
+ */
+public class LdifSchemaLoaderTest extends TestCase
+{
+ public static void testConstructor() throws Exception
+ {
+ LdifSchemaLoader loader = new LdifSchemaLoader( new File( "/Users/akarasulu/schema" ) );
+ }
+}
Added: directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchema.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchema.java?rev=808228&view=auto
==============================================================================
--- directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchema.java (added)
+++ directory/shared/branches/shared-schema/ldap/src/main/java/org/apache/directory/shared/ldap/schema/registries/DefaultSchema.java Wed Aug 26 23:55:11 2009
@@ -0,0 +1,144 @@
+/*
+ * 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.shared.ldap.schema.registries;
+
+
+
+/**
+ * The default Schema interface implementation.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class DefaultSchema implements Schema
+{
+ private static final String[] NONE = new String[0];
+ private static final String DEFAULT_OWNER = "uid=admin,ou=system";
+
+ private boolean disabled;
+ private String[] dependencies;
+ private String owner;
+ private String name;
+
+
+ public DefaultSchema( String name )
+ {
+ this( name, null, null, false );
+ }
+
+
+ public DefaultSchema( String name, String owner )
+ {
+ this( name, owner, null, false );
+ }
+
+
+ public DefaultSchema( String name, String owner, String[] dependencies )
+ {
+ this( name, owner, dependencies, false );
+ }
+
+
+ public DefaultSchema( String name, String owner, String[] dependencies, boolean disabled )
+ {
+ if ( name == null )
+ {
+ throw new NullPointerException( "name cannot be null" );
+ }
+
+ this.name = name;
+
+ if ( owner != null )
+ {
+ this.owner = owner;
+ }
+ else
+ {
+ this.owner = DEFAULT_OWNER;
+ }
+
+ if ( dependencies != null )
+ {
+ this.dependencies = dependencies;
+ }
+ else
+ {
+ this.dependencies = NONE;
+ }
+
+ this.disabled = disabled;
+ }
+
+
+ public String[] getDependencies()
+ {
+ String[] copy = new String[dependencies.length];
+ System.arraycopy( dependencies, 0, copy, 0, dependencies.length );
+ return copy;
+ }
+
+
+ public String getOwner()
+ {
+ return owner;
+ }
+
+
+ public String getSchemaName()
+ {
+ return name;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isDisabled()
+ {
+ return disabled;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isEnabled()
+ {
+ return !disabled;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void disable()
+ {
+ this.disabled = true;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void enable()
+ {
+ this.disabled = false;
+ }
+}