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 2006/05/25 23:00:44 UTC

svn commit: r409467 - in /directory/branches/apacheds/1.0: core-unit/src/main/java/org/apache/directory/server/core/unit/ core/src/main/java/org/apache/directory/server/core/ core/src/main/java/org/apache/directory/server/core/configuration/ core/src/m...

Author: elecharny
Date: Thu May 25 14:00:43 2006
New Revision: 409467

URL: http://svn.apache.org/viewvc?rev=409467&view=rev
Log:
merging ldif modification into 1.0-trunks

Added:
    directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/ImportCommand.java
      - copied unchanged from r409441, directory/branches/elecharny/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ImportCommand.java
Modified:
    directory/branches/apacheds/1.0/core-unit/src/main/java/org/apache/directory/server/core/unit/AbstractTestCase.java
    directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
    directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java
    directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/ConfigurationUtil.java
    directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java
    directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java
    directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/AbstractBackingStoreTest.java
    directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/store/LdifFileLoader.java
    directory/branches/apacheds/1.0/server-main/log4j.properties
    directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java
    directory/branches/apacheds/1.0/server-unit/src/main/java/org/apache/directory/server/unit/AbstractServerTest.java

Modified: directory/branches/apacheds/1.0/core-unit/src/main/java/org/apache/directory/server/core/unit/AbstractTestCase.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core-unit/src/main/java/org/apache/directory/server/core/unit/AbstractTestCase.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core-unit/src/main/java/org/apache/directory/server/core/unit/AbstractTestCase.java (original)
+++ directory/branches/apacheds/1.0/core-unit/src/main/java/org/apache/directory/server/core/unit/AbstractTestCase.java Thu May 25 14:00:43 2006
@@ -24,6 +24,7 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.List;
 
 import javax.naming.Context;
@@ -36,13 +37,11 @@
 import junit.framework.TestCase;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.exception.NestableRuntimeException;
 import org.apache.directory.server.core.configuration.Configuration;
 import org.apache.directory.server.core.configuration.MutableStartupConfiguration;
 import org.apache.directory.server.core.configuration.ShutdownConfiguration;
-import org.apache.directory.shared.ldap.ldif.LdifIterator;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
-import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
+import org.apache.directory.shared.ldap.ldif.Entry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 
 
 /**
@@ -53,12 +52,24 @@
  */
 public abstract class AbstractTestCase extends TestCase
 {
-    public static final String LDIF = "dn: uid=akarasulu,ou=users,ou=system\n" + "cn: Alex Karasulu\n"
-        + "sn: Karasulu\n" + "givenname: Alex\n" + "objectclass: top\n" + "objectclass: person\n"
-        + "objectclass: organizationalPerson\n" + "objectclass: inetOrgPerson\n" + "ou: Engineering\n" + "ou: People\n"
-        + "l: Bogusville\n" + "uid: akarasulu\n" + "mail: akarasulu@apache.org\n"
-        + "telephonenumber: +1 408 555 4798\n" + "facsimiletelephonenumber: +1 408 555 9751\n" + "roomnumber: 4612\n"
-        + "userpassword: test\n";
+    public static final String LDIF = 
+    	"dn: uid=akarasulu,ou=users,ou=system\n" + 
+    	"cn: Alex Karasulu\n" +
+        "sn: Karasulu\n" + 
+        "givenname: Alex\n" + 
+        "objectclass: top\n" + 
+        "objectclass: person\n" +
+        "objectclass: organizationalPerson\n" + 
+        "objectclass: inetOrgPerson\n" + 
+        "ou: Engineering\n" + 
+        "ou: People\n" +
+        "l: Bogusville\n" + 
+        "uid: akarasulu\n" + 
+        "mail: akarasulu@apache.org\n" +
+        "telephonenumber: +1 408 555 4798\n" + 
+        "facsimiletelephonenumber: +1 408 555 9751\n" + 
+        "roomnumber: 4612\n" +
+        "userpassword: test\n";
 
     private final String username;
 
@@ -136,17 +147,13 @@
         // Add a single test entry
         // -------------------------------------------------------------------
 
-        Attributes attributes = new LockableAttributesImpl();
-        LdifParserImpl parser = new LdifParserImpl();
-        try
-        {
-            parser.parse( attributes, LDIF );
-        }
-        catch ( NamingException e )
-        {
-            throw new NestableRuntimeException( e );
-        }
-        testEntries.add( attributes );
+        LdifReader reader = new LdifReader();
+        
+    	List entries = reader.parseLdif( LDIF );
+        
+        Entry entry = (Entry)entries.get(0);
+
+        testEntries.add( entry );
 
         // -------------------------------------------------------------------
         // Add more from an optional LDIF file if they exist
@@ -177,13 +184,13 @@
 
         if ( in != null )
         {
-            LdifIterator list = new LdifIterator( in );
+            Iterator list = new LdifReader( in );
+            
             while ( list.hasNext() )
             {
-                String ldif = ( String ) list.next();
-                attributes = new LockableAttributesImpl();
-                parser.parse( attributes, ldif );
-                testEntries.add( attributes );
+                entry = ( Entry ) list.next();
+                
+                testEntries.add( entry );
             }
         }
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Thu May 25 14:00:43 2006
@@ -48,6 +48,7 @@
 import org.apache.directory.shared.ldap.exception.LdapAuthenticationNotSupportedException;
 import org.apache.directory.shared.ldap.exception.LdapConfigurationException;
 import org.apache.directory.shared.ldap.exception.LdapNoPermissionException;
+import org.apache.directory.shared.ldap.ldif.Entry;
 import org.apache.directory.shared.ldap.message.LockableAttributeImpl;
 import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
@@ -670,17 +671,25 @@
         Iterator i = startupConfiguration.getTestEntries().iterator();
         while ( i.hasNext() )
         {
-            Attributes entry = ( Attributes ) ( ( Attributes ) i.next() ).clone();
-            String dn = ( String ) entry.remove( "dn" ).get();
-
-            try
-            {
-                ctx.createSubcontext( dn, entry );
-            }
-            catch ( Exception e )
-            {
-                log.warn( dn + " test entry already exists.", e );
-            }
+        	try
+        	{
+	        	Entry entry =  (Entry)( ( Entry ) i.next() ).clone();
+	            Attributes attributes = entry.getAttributes();
+	            String dn = entry.getDn();
+
+	            try
+	            {
+	                ctx.createSubcontext( dn, attributes );
+	            }
+	            catch ( Exception e )
+	            {
+	                log.warn( dn + " test entry already exists.", e );
+	            }
+        	}
+        	catch ( CloneNotSupportedException cnse )
+        	{
+                log.warn( "Cannot clone the entry ", cnse );
+        	}
         }
     }
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java Thu May 25 14:00:43 2006
@@ -18,9 +18,11 @@
  */
 package org.apache.directory.server.core.configuration;
 
-
 import java.beans.PropertyEditor;
 import java.beans.PropertyEditorSupport;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
@@ -35,17 +37,16 @@
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.shared.ldap.ldif.LdifComposer;
 import org.apache.directory.shared.ldap.ldif.LdifComposerImpl;
-import org.apache.directory.shared.ldap.ldif.LdifParser;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.util.MultiMap;
-
+import org.apache.directory.shared.ldap.util.StringTools;
 
 /**
- * A JavaBeans {@link PropertyEditor} that can convert {@link Attributes}
- * to LDIF string and vice versa.  This class is useful when you're going
- * to configure a {@link DirectoryService} with 3rd party containers
- * such as <a href="http://www.springframework.org/">Spring Framework</a>.
- *
+ * A JavaBeans {@link PropertyEditor} that can convert {@link Attributes} to
+ * LDIF string and vice versa. This class is useful when you're going to
+ * configure a {@link DirectoryService} with 3rd party containers such as <a
+ * href="http://www.springframework.org/">Spring Framework</a>.
+ * 
  * @author The Apache Directory Project
  * @version $Rev$, $Date$
  */
@@ -60,16 +61,14 @@
         super();
     }
 
-
     /**
      * Creates a new instance with source object.
      */
-    public AttributesPropertyEditor(Object source)
+    public AttributesPropertyEditor( Object source )
     {
         super( source );
     }
 
-
     /**
      * Returns LDIF string of {@link Attributes} object.
      */
@@ -81,92 +80,79 @@
             // FIXME Stop forking commons-collections.
             private final MultiHashMap map = new MultiHashMap();
 
-
             public Object remove( Object arg0, Object arg1 )
             {
                 return map.remove( arg0, arg1 );
             }
 
-
             public int size()
             {
                 return map.size();
             }
 
-
             public Object get( Object arg0 )
             {
                 return map.get( arg0 );
             }
 
-
             public boolean containsValue( Object arg0 )
             {
                 return map.containsValue( arg0 );
             }
 
-
             public Object put( Object arg0, Object arg1 )
             {
                 return map.put( arg0, arg1 );
             }
 
-
             public Object remove( Object arg0 )
             {
                 return map.remove( arg0 );
             }
 
-
             public Collection values()
             {
                 return map.values();
             }
 
-
             public boolean isEmpty()
             {
                 return map.isEmpty();
             }
 
-
             public boolean containsKey( Object key )
             {
                 return map.containsKey( key );
             }
 
-
             public void putAll( Map arg0 )
             {
                 map.putAll( arg0 );
             }
 
-
             public void clear()
             {
                 map.clear();
             }
 
-
             public Set keySet()
             {
                 return map.keySet();
             }
 
-
             public Set entrySet()
             {
                 return map.entrySet();
             }
         };
 
-        Attributes attrs = ( Attributes ) getValue();
+        Attributes attrs = (Attributes) getValue();
         try
         {
             NamingEnumeration e = attrs.getAll();
             while ( e.hasMore() )
             {
-                Attribute attr = ( Attribute ) e.next();
+                Attribute attr = (Attribute) e.next();
                 NamingEnumeration e2 = attr.getAll();
                 while ( e2.hasMoreElements() )
                 {
@@ -177,12 +163,71 @@
 
             return composer.compose( map );
         }
-        catch ( Exception e )
+        catch (Exception e)
         {
             throw new ConfigurationException( e );
         }
     }
 
+    /**
+     * Read an entry (without DN)
+     * 
+     * @param text
+     *            The ldif format file
+     * @return An Attributes.
+     */
+    private Attributes readEntry( String text )
+    {
+        StringReader strIn = new StringReader( text );
+        BufferedReader in = new BufferedReader( strIn );
+
+        String line = null;
+        Attributes attributes = new BasicAttributes( true );
+
+        try
+        {
+            while ( ( line = ( (BufferedReader) in ).readLine() ) != null )
+            {
+                if ( line.length() == 0 )
+                {
+                    continue;
+                }
+
+                String addedLine = line.trim();
+
+                if ( StringTools.isEmpty( addedLine ) )
+                {
+                    continue;
+                }
+
+                Attribute attribute = LdifReader.parseAttributeValue( addedLine );
+                Attribute oldAttribute = attributes.get( attribute.getID() );
+
+                if ( oldAttribute != null )
+                {
+                    try
+                    {
+                        oldAttribute.add( attribute.get() );
+                        attributes.put( oldAttribute );
+                    }
+                    catch (NamingException ne)
+                    {
+                        // Do nothing
+                    }
+                }
+                else
+                {
+                    attributes.put( attribute );
+                }
+            }
+        }
+        catch (IOException ioe)
+        {
+            // Do nothing : we can't reach this point !
+        }
+
+        return attributes;
+    }
 
     /**
      * Converts the specified LDIF string into {@link Attributes}.
@@ -194,16 +239,6 @@
             text = "";
         }
 
-        Attributes attrs = new BasicAttributes( true );
-        LdifParser parser = new LdifParserImpl();
-        try
-        {
-            parser.parse( attrs, text.trim() );
-            setValue( attrs );
-        }
-        catch ( NamingException e )
-        {
-            throw ( IllegalArgumentException ) new IllegalArgumentException().initCause( e );
-        }
+        setValue( readEntry( text ) );
     }
 }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/ConfigurationUtil.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/ConfigurationUtil.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/ConfigurationUtil.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/ConfigurationUtil.java Thu May 25 14:00:43 2006
@@ -28,6 +28,8 @@
 
 import javax.naming.directory.Attributes;
 
+import org.apache.directory.shared.ldap.ldif.Entry;
+
 
 /**
  * A utility class that provides common functionality while validating configuration.
@@ -105,13 +107,14 @@
     /**
      * Returns the deep clone of the specified {@link Attributes} list.
      */
-    public static List getClonedAttributesList( List list )
+    public static List getClonedAttributesList( List list ) throws CloneNotSupportedException
     {
         List newList = new ArrayList();
         Iterator i = list.iterator();
+        
         while ( i.hasNext() )
         {
-            newList.add( ( ( Attributes ) i.next() ).clone() );
+            newList.add( ( ( Entry ) i.next() ).clone() );
         }
         return newList;
     }

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/configuration/StartupConfiguration.java Thu May 25 14:00:43 2006
@@ -43,6 +43,7 @@
 import org.apache.directory.server.core.schema.SchemaService;
 import org.apache.directory.server.core.schema.bootstrap.*;
 import org.apache.directory.server.core.subtree.SubentryService;
+import org.apache.directory.shared.ldap.ldif.Entry;
 
 
 /**
@@ -366,7 +367,14 @@
      */
     public List getTestEntries()
     {
-        return ConfigurationUtil.getClonedAttributesList( testEntries );
+    	try
+    	{
+    		return ConfigurationUtil.getClonedAttributesList( testEntries );
+    	}
+    	catch ( CloneNotSupportedException cnse )
+    	{
+    		return null;
+    	}
     }
 
 
@@ -376,20 +384,17 @@
      */
     protected void setTestEntries( List testEntries )
     {
-        testEntries = ConfigurationUtil.getClonedAttributesList( ConfigurationUtil.getTypeSafeList( testEntries,
-            Attributes.class ) );
-
-        Iterator i = testEntries.iterator();
-        while ( i.hasNext() )
-        {
-            Attributes entry = ( Attributes ) i.next();
-            if ( entry.get( "dn" ) == null )
-            {
-                throw new ConfigurationException( "Test entries must have DN attributes" );
-            }
-        }
-
-        this.testEntries = testEntries;
+    	try
+    	{
+	        testEntries = ConfigurationUtil.getClonedAttributesList( ConfigurationUtil.getTypeSafeList( testEntries,
+	            Entry.class ) );
+	
+	        this.testEntries = testEntries;
+    	}
+    	catch ( CloneNotSupportedException cnse )
+    	{
+    		this.testEntries = null;
+    	}
     }
 
 

Modified: directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java (original)
+++ directory/branches/apacheds/1.0/core/src/main/java/org/apache/directory/server/core/partition/impl/btree/gui/PartitionFrame.java Thu May 25 14:00:43 2006
@@ -26,7 +26,6 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.IOException;
 import java.math.BigInteger;
 import java.util.HashMap;
 import java.util.Hashtable;
@@ -67,11 +66,9 @@
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.filter.FilterParser;
 import org.apache.directory.shared.ldap.filter.FilterParserImpl;
-import org.apache.directory.shared.ldap.ldif.LdifIterator;
-import org.apache.directory.shared.ldap.ldif.LdifParser;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
+import org.apache.directory.shared.ldap.ldif.Entry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.message.DerefAliasesEnum;
-import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
 import org.apache.directory.shared.ldap.name.LdapName;
 import org.apache.directory.shared.ldap.util.StringTools;
 import org.slf4j.Logger;
@@ -427,8 +424,6 @@
     public void doImport()
     {
         FileReader in = null;
-        LdifIterator list = null;
-        LdifParser parser = new LdifParserImpl();
         JFileChooser chooser = new JFileChooser();
         int choice = chooser.showOpenDialog( this );
         File selected = chooser.getSelectedFile();
@@ -441,16 +436,15 @@
         try
         {
             in = new FileReader( selected );
-            list = new LdifIterator( in );
+            Iterator list = new LdifReader( in );
 
             while ( list.hasNext() )
             {
-                String dif = ( String ) list.next();
-                LockableAttributesImpl attrs = new LockableAttributesImpl();
-                parser.parse( attrs, dif );
-                String updn = ( String ) attrs.get( "dn" ).get();
+                Entry entry = ( Entry ) list.next();
+                String updn = entry.getDn();
+                Attributes attrs = entry.getAttributes();
+                
                 LdapName ndn = new LdapName( StringTools.deepTrimToLower( updn ) );
-                attrs.remove( "dn" );
 
                 if ( null == partition.getEntryId( ndn.toString() ) )
                 {
@@ -466,12 +460,6 @@
             return;
         }
         catch ( FileNotFoundException e )
-        {
-            // @todo display popup with error here!
-            e.printStackTrace();
-            return;
-        }
-        catch ( IOException e )
         {
             // @todo display popup with error here!
             e.printStackTrace();

Modified: directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/AbstractBackingStoreTest.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/AbstractBackingStoreTest.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/AbstractBackingStoreTest.java (original)
+++ directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/AbstractBackingStoreTest.java Thu May 25 14:00:43 2006
@@ -26,6 +26,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.Properties;
 import java.util.Set;
 
@@ -56,9 +57,8 @@
 import org.apache.directory.server.core.schema.bootstrap.Krb5kdcSchema;
 import org.apache.directory.server.core.schema.bootstrap.SystemSchema;
 import org.apache.directory.server.protocol.shared.store.KerberosAttribute;
-import org.apache.directory.shared.ldap.ldif.LdifIterator;
-import org.apache.directory.shared.ldap.ldif.LdifParser;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
+import org.apache.directory.shared.ldap.ldif.Entry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.message.LockableAttributeImpl;
 import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
 import org.slf4j.Logger;
@@ -298,18 +298,14 @@
         {
             InputStream in = getLdifStream( ldifPath );
 
-            LdifIterator iterator = new LdifIterator( in );
-
-            LdifParser ldifParser = new LdifParserImpl();
+            Iterator iterator = new LdifReader( in );
 
             while ( iterator.hasNext() )
             {
-                String ldif = ( String ) iterator.next();
-
-                Attributes attributes = new LockableAttributesImpl();
-                ldifParser.parse( attributes, ldif );
+                Entry entry = ( Entry ) iterator.next();
 
-                String dn = ( String ) attributes.remove( "dn" ).get();
+                String dn = entry.getDn();
+                Attributes attributes = entry.getAttributes();
 
                 if ( attributes.get( "objectClass" ).contains( "krb5KDCEntry" ) )
                 {
@@ -347,11 +343,6 @@
             log.error( "LDIF file does not exist." );
             return;
         }
-        catch ( IOException ioe )
-        {
-            log.error( "Failed to import LDIF into backing store.", ioe );
-            return;
-        }
         catch ( NamingException ne )
         {
             log.error( "Failed to import LDIF into backing store.", ne );
@@ -362,19 +353,13 @@
         {
             InputStream in = getLdifStream( ldifPath );
 
-            LdifIterator iterator = new LdifIterator( in );
-
-            LdifParser ldifParser = new LdifParserImpl();
+            Iterator iterator = new LdifReader( in );
 
             while ( iterator.hasNext() )
             {
-                String ldif = ( String ) iterator.next();
-
-                Attributes attributes = new LockableAttributesImpl();
-
-                ldifParser.parse( attributes, ldif );
+                Entry entry = ( Entry ) iterator.next();
 
-                String dn = ( String ) attributes.remove( "dn" ).get();
+                String dn = entry.getDn();
 
                 rdn = getRelativeName( ctx.getNameInNamespace(), dn );
 

Modified: directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/store/LdifFileLoader.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/store/LdifFileLoader.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/store/LdifFileLoader.java (original)
+++ directory/branches/apacheds/1.0/protocol-shared/src/main/java/org/apache/directory/server/protocol/shared/store/LdifFileLoader.java Thu May 25 14:00:43 2006
@@ -17,10 +17,12 @@
 package org.apache.directory.server.protocol.shared.store;
 
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
@@ -31,10 +33,9 @@
 import javax.naming.directory.Attributes;
 import javax.naming.directory.DirContext;
 
-import org.apache.directory.shared.ldap.ldif.LdifIterator;
-import org.apache.directory.shared.ldap.ldif.LdifParser;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
-import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
+import org.apache.directory.shared.ldap.ldif.Entry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,7 +44,6 @@
  * Support for commands to load an LDIF file into a DirContext.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$, $Date$
  */
 public class LdifFileLoader
 {
@@ -146,16 +146,21 @@
         try
         {
             in = getLdifStream();
-            LdifIterator iterator = new LdifIterator( in );
-            LdifParser ldifParser = new LdifParserImpl();
+            LdifReader ldifIterator = new LdifReader( new BufferedReader( new InputStreamReader( in ) ) );
 
-            while ( iterator.hasNext() )
+            while ( ldifIterator.hasNext() )
             {
-                String ldif = ( String ) iterator.next();
-                Attributes attributes = new LockableAttributesImpl();
-                ldifParser.parse( attributes, ldif );
-                String dn = ( String ) attributes.remove( "dn" ).get();
+                Entry entry = ( Entry ) ldifIterator.next();
+                
+                String dn = entry.getDn();
+                
+                if ( entry.isEntry() == false)
+                {
+                	// If the entry is a modification, just skip it
+                	continue;
+                }
 
+                Attributes attributes = entry.getAttributes();
                 boolean filterAccepted = applyFilters( dn, attributes );
 
                 if ( !filterAccepted )

Modified: directory/branches/apacheds/1.0/server-main/log4j.properties
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/server-main/log4j.properties?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/server-main/log4j.properties (original)
+++ directory/branches/apacheds/1.0/server-main/log4j.properties Thu May 25 14:00:43 2006
@@ -1,12 +1,11 @@
-log4j.rootCategory=WARN, stdout
+log4j.rootCategory=DEBUG, stdout
 
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
 
 # with these we'll not get innundated when switching to DEBUG
-log4j.logger.org.apache.directory.shared.ldap.name=WARN
+#log4j.logger.org.apache.directory.shared.ldap.name=WARN
 log4j.logger.org.springframework=WARN
-log4j.logger.org.apache.directory.shared.codec=WARN
-log4j.logger.org.apache.directory.shared.asn1=WARN
+log4j.logger.org.apache.directory.shared.ldap.codec.TwixDecoder=DEBUG
 

Modified: directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java (original)
+++ directory/branches/apacheds/1.0/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java Thu May 25 14:00:43 2006
@@ -16,19 +16,23 @@
  */
 package org.apache.directory.server.tools;
 
-
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.cli.AlreadySelectedException;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.MissingArgumentException;
+import org.apache.commons.cli.MissingOptionException;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
-
+import org.apache.commons.cli.UnrecognizedOptionException;
 
 /**
  * The primary command base class.
@@ -39,31 +43,49 @@
 public class BaseCommand
 {
     private Map commands = new HashMap();
+
+    private List commandsOrdered = new ArrayList();
+
     private Options global = new Options();
+
     private String productCommand;
+
     private String productVersion;
+
     private String productDisplayName;
+
     private String productUrl;
+
     private String productBanner;
-    
-    
+
     public BaseCommand()
     {
         init();
     }
-    
-    
+
     protected void init()
     {
         ToolCommand command;
+
+        command = new DiagnosticCommand();
+        commands.put( command.getName(), command );
+        commandsOrdered.add( command.getName() );
+
         command = new DumpCommand();
-        getCommands().put( command.getName(), command );
+        commands.put( command.getName(), command );
+        commandsOrdered.add( command.getName() );
+
         command = new GracefulShutdownCommand();
-        getCommands().put( command.getName(), command );
-        command = new DiagnosticCommand();
-        getCommands().put( command.getName(), command );
+        commands.put( command.getName(), command );
+        commandsOrdered.add( command.getName() );
+
+        command = new ImportCommand();
+        commands.put( command.getName(), command );
+        commandsOrdered.add( command.getName() );
+
         command = new DisconnectNotificationCommand();
-        getCommands().put( command.getName(), command );
+        commands.put( command.getName(), command );
+        commandsOrdered.add( command.getName() );
 
         Option op = new Option( "i", "install-path", true, "path to installation directory" );
         getGlobal().addOption( op );
@@ -80,8 +102,7 @@
         op = new Option( "version", false, "print the version information and exit" );
         getGlobal().addOption( op );
     }
-    
-    
+
     public static boolean hasBannerOption( String[] args )
     {
         for ( int ii = 0; ii < args.length; ii++ )
@@ -94,7 +115,6 @@
         return false;
     }
 
-
     public CommandLine getCommandLine( String command, String[] args )
     {
         Options all = allOptions( command );
@@ -104,15 +124,38 @@
         {
             cmdline = parser.parse( all, args );
         }
-        catch ( ParseException e )
+        catch (AlreadySelectedException ase)
+        {
+            System.err.println( "Command line parsing failed for " + command + ".  Reason: already selected "
+                    + ase.getMessage() );
+            System.exit( 1 );
+        }
+        catch (MissingArgumentException mae)
+        {
+            System.err.println( "Command line parsing failed for " + command + ".  Reason: missing argument "
+                    + mae.getMessage() );
+            System.exit( 1 );
+        }
+        catch (MissingOptionException moe)
+        {
+            System.err.println( "Command line parsing failed for " + command + ".  Reason: missing option " + moe.getMessage() );
+            System.exit( 1 );
+        }
+        catch (UnrecognizedOptionException uoe)
         {
-            System.err.println( "Command line parsing failed for " + command + ".  Reason: " + e.getMessage() );
+            System.err.println( "Command line parsing failed for " + command + ".  Reason: unrecognized option"
+                    + uoe.getMessage() );
             System.exit( 1 );
         }
+        catch (ParseException pe)
+        {
+            System.err.println( "Command line parsing failed for " + command + ".  Reason: " + pe.getClass() );
+            System.exit( 1 );
+        }
+
         return cmdline;
     }
 
-
     public Options allOptions( String command )
     {
         if ( command.equals( "help" ) )
@@ -121,20 +164,20 @@
         }
 
         Options all = new Options();
-        ToolCommand cmd = ( ToolCommand ) getCommands().get( command );
+        ToolCommand cmd = (ToolCommand) getCommands().get( command );
+
         for ( Iterator ii = getGlobal().getOptions().iterator(); ii.hasNext(); )
         {
-            all.addOption( ( Option ) ii.next() );
+            all.addOption( (Option) ii.next() );
         }
 
         for ( Iterator ii = cmd.getOptions().getOptions().iterator(); ii.hasNext(); )
         {
-            all.addOption( ( Option ) ii.next() );
+            all.addOption( (Option) ii.next() );
         }
         return all;
     }
 
-
     public static void dumpArgs( String msg, String[] args )
     {
         if ( args.length == 0 )
@@ -146,6 +189,7 @@
 
         StringBuffer buf = new StringBuffer();
         buf.append( msg ).append( "\n" );
+
         for ( int ii = 0; ii < args.length; ii++ )
         {
             buf.append( "\targs[" + ii + "] = " ).append( args[ii] ).append( "\n" );
@@ -153,7 +197,6 @@
         System.out.println( buf );
     }
 
-
     public void helpOnCommand( String command )
     {
         if ( command.equals( "help" ) )
@@ -161,11 +204,12 @@
             printUsage();
             System.exit( 0 );
         }
+
         if ( getCommands().containsKey( command ) )
         {
-            ToolCommand cmd = ( ToolCommand ) getCommands().get( command );
+            ToolCommand cmd = (ToolCommand) getCommands().get( command );
             HelpFormatter formatter = new HelpFormatter();
-            formatter.printHelp(  getProductCommand() + " " + cmd + " [options]", cmd.getOptions() );
+            formatter.printHelp( getProductCommand() + " " + cmd + " [options]", cmd.getOptions() );
         }
         else
         {
@@ -174,15 +218,16 @@
         }
     }
 
-
     public void printUsage()
     {
         HelpFormatter formatter = new HelpFormatter();
-        formatter.printHelp( getProductCommand() + " <command> [options]", "\nGlobal options:", getGlobal(),
-            "\nType \"" + getProductCommand() + " help <command>\" for help on a command." );
-        System.out.println( "\nAvalable commands:" );
-        Iterator it = getCommands().values().iterator();
+        formatter.printHelp( getProductCommand() + " <command> [options]", "\nGlobal options:", getGlobal(), "\nType \""
+                + getProductCommand() + " help <command>\" for help on a command." );
+        System.out.println( "\nAvailable commands:" );
+
+        Iterator it = commandsOrdered.iterator();
         System.out.println( "\thelp" );
+
         while ( it.hasNext() )
         {
             System.out.println( "\t" + it.next() );
@@ -193,96 +238,81 @@
     }
 
     static final String BANNER = "       _                     _          ____  ____    _____           _      \n"
-        + "      / \\   _ __   __ _  ___| |__   ___|  _ \\/ ___|  |_   _|__   ___ | |___  \n"
-        + "     / _ \\ | '_ \\ / _` |/ __| '_ \\ / _ \\ | | \\___ \\    | |/ _ \\ / _ \\| / __| \n"
-        + "    / ___ \\| |_) | (_| | (__| | | |  __/ |_| |___) |   | | (_) | (_) | \\__ \\ \n"
-        + "   /_/   \\_\\ .__/ \\__,_|\\___|_| |_|\\___|____/|____/    |_|\\___/ \\___/|_|___/ \n"
-        + "           |_|                                                               \n";
-
+            + "      / \\   _ __   __ _  ___| |__   ___|  _ \\/ ___|  |_   _|__   ___ | |___  \n"
+            + "     / _ \\ | '_ \\ / _` |/ __| '_ \\ / _ \\ | | \\___ \\    | |/ _ \\ / _ \\| / __| \n"
+            + "    / ___ \\| |_) | (_| | (__| | | |  __/ |_| |___) |   | | (_) | (_) | \\__ \\ \n"
+            + "   /_/   \\_\\ .__/ \\__,_|\\___|_| |_|\\___|____/|____/    |_|\\___/ \\___/|_|___/ \n"
+            + "           |_|                                                               \n";
 
     public void printBanner()
     {
         System.out.println( getProductBanner() );
     }
 
-
     public void setProductCommand( String productCommand )
     {
         this.productCommand = productCommand;
     }
 
-
     public String getProductCommand()
     {
         return productCommand;
     }
 
-
     public void setProductVersion( String productVersion )
     {
         this.productVersion = productVersion;
     }
 
-
     public String getProductVersion()
     {
         return productVersion;
     }
 
-
     public void setProductDisplayName( String productDisplayName )
     {
         this.productDisplayName = productDisplayName;
     }
 
-
     public String getProductDisplayName()
     {
         return productDisplayName;
     }
 
-
     public void setProductUrl( String productUrl )
     {
         this.productUrl = productUrl;
     }
 
-
     public String getProductUrl()
     {
         return productUrl;
     }
 
-
     public void setProductBanner( String productBanner )
     {
         this.productBanner = productBanner;
     }
 
-
     public String getProductBanner()
     {
         return productBanner;
     }
 
-
     public void setCommands( Map commands )
     {
         this.commands = commands;
     }
 
-
     public Map getCommands()
     {
         return commands;
     }
 
-
     public void setGlobal( Options global )
     {
         this.global = global;
     }
-
 
     public Options getGlobal()
     {

Modified: directory/branches/apacheds/1.0/server-unit/src/main/java/org/apache/directory/server/unit/AbstractServerTest.java
URL: http://svn.apache.org/viewvc/directory/branches/apacheds/1.0/server-unit/src/main/java/org/apache/directory/server/unit/AbstractServerTest.java?rev=409467&r1=409466&r2=409467&view=diff
==============================================================================
--- directory/branches/apacheds/1.0/server-unit/src/main/java/org/apache/directory/server/unit/AbstractServerTest.java (original)
+++ directory/branches/apacheds/1.0/server-unit/src/main/java/org/apache/directory/server/unit/AbstractServerTest.java Thu May 25 14:00:43 2006
@@ -21,12 +21,12 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Hashtable;
+import java.util.Iterator;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.Name;
 import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
 import javax.naming.ldap.InitialLdapContext;
 import javax.naming.ldap.LdapContext;
 
@@ -37,10 +37,8 @@
 import org.apache.directory.server.core.configuration.ShutdownConfiguration;
 import org.apache.directory.server.jndi.ServerContextFactory;
 import org.apache.directory.shared.ldap.exception.LdapConfigurationException;
-import org.apache.directory.shared.ldap.ldif.LdifIterator;
-import org.apache.directory.shared.ldap.ldif.LdifParser;
-import org.apache.directory.shared.ldap.ldif.LdifParserImpl;
-import org.apache.directory.shared.ldap.message.LockableAttributesImpl;
+import org.apache.directory.shared.ldap.ldif.Entry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
 import org.apache.directory.shared.ldap.name.LdapName;
 import org.apache.mina.util.AvailablePortFinder;
 
@@ -181,19 +179,19 @@
         Hashtable env = new Hashtable();
         env.putAll( sysRoot.getEnvironment() );
         LdapContext ctx = new InitialLdapContext( env, null );
-        LdifParser parser = new LdifParserImpl();
 
         try
         {
-            LdifIterator iterator = new LdifIterator( in );
+            Iterator iterator = new LdifReader( in );
+            
             while ( iterator.hasNext() )
             {
-                Attributes attributes = new LockableAttributesImpl();
-                String ldif = ( String ) iterator.next();
-                parser.parse( attributes, ldif );
-                Name dn = new LdapName( ( String ) attributes.remove( "dn" ).get() );
+                Entry entry = ( Entry) iterator.next();
+
+                Name dn = new LdapName( entry.getDn() );
                 dn.remove( 0 );
-                ctx.createSubcontext( dn, attributes );
+
+                ctx.createSubcontext( dn, entry.getAttributes() );
             }
         }
         catch ( Exception e )