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 2005/10/31 03:36:38 UTC

svn commit: r329711 - /directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java

Author: akarasulu
Date: Sun Oct 30 18:36:35 2005
New Revision: 329711

URL: http://svn.apache.org/viewcvs?rev=329711&view=rev
Log:
Found and fixed bug where the objectClass name was used for the RDN of the 
loaded LDIF file instead of the RDN attribute.  All works nicely now.

Modified:
    directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java

Modified: directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java?rev=329711&r1=329710&r2=329711&view=diff
==============================================================================
--- directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java (original)
+++ directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java Sun Oct 30 18:36:35 2005
@@ -207,24 +207,24 @@
         StringBuffer buf = new StringBuffer();
         buf.append( rdnAttr );
         buf.append( "=" );
-        buf.append( ldif.getAbsolutePath() );
+        buf.append( getCanonical( ldif ) );
         buf.append( "," );
         buf.append( LDIF_FILES_DN );
 
-        Attributes entry = new BasicAttributes( rdnAttr, ldif.getAbsolutePath(), true );
+        Attributes entry = new BasicAttributes( rdnAttr, getCanonical( ldif ), true );
         entry.put( "objectClass", "top" );
         entry.get( "objectClass" ).add( oc );
         root.createSubcontext( buf.toString(), entry );
     }
 
 
-    private Attributes getLdifFileEntry( DirContext root, File ldif )
+    private Attributes getLdifFileEntry( DirContext root, File ldif ) throws NamingException
     {
-        String rdnAttr = File.pathSeparatorChar == '\\' ? "windowsFile" : "unixFile";
+        String rdnAttr = File.pathSeparatorChar == '\\' ? WINDOWSFILE_ATTR : UNIXFILE_ATTR;
         StringBuffer buf = new StringBuffer();
         buf.append( rdnAttr );
         buf.append( "=" );
-        buf.append( ldif.getAbsolutePath() );
+        buf.append( getCanonical( ldif ) );
         buf.append( "," );
         buf.append( LDIF_FILES_DN );
 
@@ -239,6 +239,22 @@
     }
 
 
+    private String getCanonical( File file ) throws NamingException
+    {
+        String canonical = null;
+        try
+        {
+            canonical = file.getCanonicalPath();
+        }
+        catch (IOException e)
+        {
+            log.error( "could not get canonical path", e );
+            return null;
+        }
+        return canonical;
+    }
+
+
     private void loadLdifs( DirectoryService service ) throws NamingException
     {
         ServerStartupConfiguration cfg =
@@ -254,7 +270,7 @@
         // log and bail if LDIF directory does not exists
         if ( !cfg.getLdifDirectory().exists() )
         {
-            log.warn( "LDIF load directory '" + cfg.getLdifDirectory().getAbsolutePath()
+            log.warn( "LDIF load directory '" + getCanonical( cfg.getLdifDirectory() )
                     + "' does not exist.  No LDIF files will be loaded.");
             return;
         }
@@ -270,13 +286,13 @@
         // if ldif directory is a file try to load it
         if ( !cfg.getLdifDirectory().isDirectory() )
         {
-            log.info( "LDIF load directory '" + cfg.getLdifDirectory().getAbsolutePath()
+            log.info( "LDIF load directory '" + getCanonical( cfg.getLdifDirectory() )
                     + "' is a file.  Will attempt to load as LDIF." );
             Attributes fileEntry = getLdifFileEntry( root, cfg.getLdifDirectory() );
             if ( fileEntry != null )
             {
                 String time = ( String ) fileEntry.get( "createTimestamp" ).get();
-                log.info( "Load of LDIF file '" + cfg.getLdifDirectory().getAbsolutePath()
+                log.info( "Load of LDIF file '" + getCanonical( cfg.getLdifDirectory() )
                         + "' skipped.  It has already been loaded on " + time + "." );
                 return;
             }
@@ -300,7 +316,7 @@
         // log and bail if we could not find any LDIF files
         if ( ldifFiles == null || ldifFiles.length == 0 )
         {
-            log.warn( "LDIF load directory '" + cfg.getLdifDirectory().getAbsolutePath()
+            log.warn( "LDIF load directory '" + getCanonical( cfg.getLdifDirectory() )
                     + "' does not contain any LDIF files.  No LDIF files will be loaded.");
             return;
         }
@@ -312,14 +328,17 @@
             if ( fileEntry != null )
             {
                 String time = ( String ) fileEntry.get( "createTimestamp" ).get();
-                log.info( "Load of LDIF file '" + ldifFiles[ii].getAbsolutePath()
+                log.info( "Load of LDIF file '" + getCanonical( ldifFiles[ii] )
                         + "' skipped.  It has already been loaded on " + time + "." );
                 continue;
             }
             LdifFileLoader loader = new LdifFileLoader( root, ldifFiles[ii], cfg.getLdifFilters() );
             int count = loader.execute();
-            addFileEntry( root, cfg.getLdifDirectory() );
-            log.info( "Loaded " + count + " entries from LDIF file '" + ldifFiles[ii].getAbsolutePath() + "'" );
+            log.info( "Loaded " + count + " entries from LDIF file '" + getCanonical( ldifFiles[ii] ) + "'" );
+            if ( fileEntry == null )
+            {
+                addFileEntry( root, ldifFiles[ii] );
+            }
         }
     }