You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2007/11/04 20:10:26 UTC

svn commit: r591817 [2/4] - in /directory/studio/trunk: studio-aciitemeditor/src/main/java/org/apache/directory/studio/aciitemeditor/valueeditors/ studio-connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ studio-ldapbrow...

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionManager.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionManager.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionManager.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionManager.java Sun Nov  4 11:10:19 2007
@@ -31,6 +31,7 @@
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
@@ -38,7 +39,6 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
@@ -47,6 +47,7 @@
 import org.apache.directory.studio.connection.core.ConnectionFolder;
 import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
+import org.apache.directory.studio.connection.core.io.ConnectionIOException;
 import org.apache.directory.studio.ldapbrowser.core.events.BookmarkUpdateEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.BookmarkUpdateListener;
 import org.apache.directory.studio.ldapbrowser.core.events.BrowserConnectionUpdateEvent;
@@ -388,33 +389,63 @@
      */
     private void saveBrowserConnections()
     {
-        Object[][] object = new Object[connectionMap.size()][3];
-
-        Iterator<IBrowserConnection> connectionIterator = connectionMap.values().iterator();
-        for ( int i = 0; connectionIterator.hasNext(); i++ )
+        // To avoid a corrupt file, save object to a temp file first 
+        try
         {
-            IBrowserConnection browserConnection = connectionIterator.next();
-            
-            ISearch[] searches = browserConnection.getSearchManager().getSearches();
-            SearchParameter[] searchParameters = new SearchParameter[searches.length];
-            for ( int k = 0; k < searches.length; k++ )
-            {
-                searchParameters[k] = searches[k].getSearchParameter();
-            }
-            
-            IBookmark[] bookmarks = browserConnection.getBookmarkManager().getBookmarks();
-            BookmarkParameter[] bookmarkParameters = new BookmarkParameter[bookmarks.length];
-            for ( int k = 0; k < bookmarks.length; k++ )
-            {
-                bookmarkParameters[k] = bookmarks[k].getBookmarkParameter();
-            }
+            BrowserConnectionIO.save( new FileOutputStream( getBrowserConnectionStoreFileName() + "-temp" ), connectionMap );
+        }
+        catch ( IOException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
 
-            object[i][0] = browserConnection.getConnection().getId();
-            object[i][1] = searchParameters;
-            object[i][2] = bookmarkParameters;
+        // move temp file to good file
+        File file = new File( getBrowserConnectionStoreFileName() );
+        File tempFile = new File( getBrowserConnectionStoreFileName() + "-temp" );
+        if ( file.exists() )
+        {
+            file.delete();
         }
 
-        save( object, getBrowserConnectionStoreFileName() );
+        try
+        {
+            String content = FileUtils.readFileToString( tempFile, "UTF-8" );
+            FileUtils.writeStringToFile( file, content, "UTF-8" );
+        }
+        catch ( IOException e )
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+//        Object[][] object = new Object[connectionMap.size()][3];
+//
+//        Iterator<IBrowserConnection> connectionIterator = connectionMap.values().iterator();
+//        for ( int i = 0; connectionIterator.hasNext(); i++ )
+//        {
+//            IBrowserConnection browserConnection = connectionIterator.next();
+//            
+//            ISearch[] searches = browserConnection.getSearchManager().getSearches();
+//            SearchParameter[] searchParameters = new SearchParameter[searches.length];
+//            for ( int k = 0; k < searches.length; k++ )
+//            {
+//                searchParameters[k] = searches[k].getSearchParameter();
+//            }
+//            
+//            IBookmark[] bookmarks = browserConnection.getBookmarkManager().getBookmarks();
+//            BookmarkParameter[] bookmarkParameters = new BookmarkParameter[bookmarks.length];
+//            for ( int k = 0; k < bookmarks.length; k++ )
+//            {
+//                bookmarkParameters[k] = bookmarks[k].getBookmarkParameter();
+//            }
+//
+//            object[i][0] = browserConnection.getConnection().getId();
+//            object[i][1] = searchParameters;
+//            object[i][2] = bookmarkParameters;
+//        }
+//
+//        save( object, getBrowserConnectionStoreFileName() );
     }
 
 
@@ -465,64 +496,88 @@
             }
         }
         
+        // java.beans.XMLDecoder
         try
         {
-            Object[][] object = ( Object[][] ) this.load( getBrowserConnectionStoreFileName() );
-
-            if ( object != null )
+            String fileName = getBrowserConnectionStoreFileName();
+            File file = new File( fileName );
+            if ( file.exists() )
             {
-                try
+                String oldContent = FileUtils.readFileToString( file, "UTF-8" );
+                if(!oldContent.contains( "java.beans.XMLDecoder" ))
                 {
-                    for ( int i = 0; i < object.length; i++ )
+                    // new file format
+                    try
+                    {
+                        BrowserConnectionIO.load( new FileInputStream( getBrowserConnectionStoreFileName() ), connectionMap );
+                    }
+                    catch ( Exception e )
                     {
-                        String connectionId = ( String ) object[i][0];
-                        IBrowserConnection browserConnection = getBrowserConnectionById( connectionId );
-                        
-                        if( browserConnection != null )
+                        // If loading failed, try with temp file
+                        try
                         {
-                            if ( object[i].length > 0 )
-                            {
-                                SearchParameter[] searchParameters = ( SearchParameter[] ) object[i][1];
-                                for ( int k = 0; k < searchParameters.length; k++ )
-                                {
-                                    ISearch search = new Search( browserConnection, searchParameters[k] );
-                                    browserConnection.getSearchManager().addSearch( search );
-                                }
-                            }
-    
-                            if ( object[i].length > 1 )
+                            BrowserConnectionIO
+                                .load( new FileInputStream( getBrowserConnectionStoreFileName() + "-temp" ), connectionMap );
+                        }
+                        catch ( FileNotFoundException e1 )
+                        {
+                            // TODO Auto-generated catch block
+                            return;
+                        }
+                        catch ( ConnectionIOException e1 )
+                        {
+                            // TODO Auto-generated catch block
+                            return;
+                        }
+                    }
+                }
+                else 
+                {
+                    // old file format
+                    Object[][] object = ( Object[][] ) this.load( getBrowserConnectionStoreFileName() );
+
+                    if ( object != null )
+                    {
+                        try
+                        {
+                            for ( int i = 0; i < object.length; i++ )
                             {
-                                BookmarkParameter[] bookmarkParameters = ( BookmarkParameter[] ) object[i][2];
-                                for ( int k = 0; k < bookmarkParameters.length; k++ )
+                                String connectionId = ( String ) object[i][0];
+                                IBrowserConnection browserConnection = getBrowserConnectionById( connectionId );
+
+                                if ( browserConnection != null )
                                 {
-                                    IBookmark bookmark = new Bookmark( browserConnection, bookmarkParameters[k] );
-                                    browserConnection.getBookmarkManager().addBookmark( bookmark );
+                                    if ( object[i].length > 0 )
+                                    {
+                                        SearchParameter[] searchParameters = ( SearchParameter[] ) object[i][1];
+                                        for ( int k = 0; k < searchParameters.length; k++ )
+                                        {
+                                            ISearch search = new Search( browserConnection, searchParameters[k] );
+                                            browserConnection.getSearchManager().addSearch( search );
+                                        }
+                                    }
+
+                                    if ( object[i].length > 1 )
+                                    {
+                                        BookmarkParameter[] bookmarkParameters = ( BookmarkParameter[] ) object[i][2];
+                                        for ( int k = 0; k < bookmarkParameters.length; k++ )
+                                        {
+                                            IBookmark bookmark = new Bookmark( browserConnection, bookmarkParameters[k] );
+                                            browserConnection.getBookmarkManager().addBookmark( bookmark );
+                                        }
+                                    }
                                 }
                             }
-    
-//                            try
-//                            {
-//                                String schemaFilename = getSchemaCacheFileName( browserConnection.getName() );
-//                                FileReader reader = new FileReader( schemaFilename );
-//                                Schema schema = new Schema();
-//                                schema.loadFromLdif( reader );
-//                                browserConnection.setSchema( schema );
-//                            }
-//                            catch ( Exception e )
-//                            {
-//                            }
-    
+                        }
+                        catch ( ArrayIndexOutOfBoundsException e )
+                        {
+                            // Thrown by decoder.readObject(), signals EOF
+                        }
+                        catch ( Exception e )
+                        {
+                            e.printStackTrace();
                         }
                     }
-
-                }
-                catch ( ArrayIndexOutOfBoundsException e )
-                {
-                    // Thrown by decoder.readObject(), signals EOF
-                }
-                catch ( Exception e )
-                {
-                    e.printStackTrace();
                 }
             }
         }
@@ -579,60 +634,6 @@
     }
 
 
-    /**
-     * Saves an Object into a serialized XML file
-     *
-     * @param object
-     *      the object to save
-     * @param filename
-     *      the filename to save to
-     */
-    private synchronized void save( Object object, String filename )
-    {
-        XMLEncoder encoder = null;
-        try
-        {
-            // to avoid a corrupt file, save object to a temp file first 
-            String tempFilename = filename + "-temp";
-            Thread.currentThread().setContextClassLoader( getClass().getClassLoader() );
-            encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream( tempFilename ) ) );
-            encoder.setPersistenceDelegate( SearchScope.class, new TypeSafeEnumPersistenceDelegate() );
-            encoder.setPersistenceDelegate( ReferralHandlingMethod.class, new TypeSafeEnumPersistenceDelegate() );
-            encoder.setPersistenceDelegate( AliasDereferencingMethod.class, new TypeSafeEnumPersistenceDelegate() );
-            encoder.setExceptionListener( new ExceptionListener()
-            {
-                public void exceptionThrown( Exception e )
-                {
-                    e.printStackTrace();
-                }
-            } );
-            encoder.writeObject( object );
-            encoder.close();
-
-            // move temp file to good file
-            File file = new File( filename );
-            File tempFile = new File( tempFilename );
-            if ( file.exists() )
-            {
-                file.delete();
-            }
-            String content = FileUtils.readFileToString( tempFile, "UTF-8" );
-            FileUtils.writeStringToFile( file, content, "UTF-8" );
-        }
-        catch ( Exception e )
-        {
-            e.printStackTrace();
-        }
-        finally
-        {
-            if ( encoder != null )
-            {
-                encoder.close();
-            }
-        }
-    }
-    
-    
     class TypeSafeEnumPersistenceDelegate extends PersistenceDelegate
     {
         protected boolean mutatesTo( Object oldInstance, Object newInstance )

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeAddedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeAddedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeAddedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeAddedEvent.java Sun Nov  4 11:10:19 2007
@@ -71,7 +71,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__added_att_to_dn, new String[]
-            { getAddedAttribute().getDescription(), getModifiedEntry().getDn().toString() } );
+            { getAddedAttribute().getDescription(), getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeDeletedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeDeletedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeDeletedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributeDeletedEvent.java Sun Nov  4 11:10:19 2007
@@ -71,7 +71,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__deleted_att_from_dn, new String[]
-            { getDeletedAttribute().getDescription(), getModifiedEntry().getDn().toString() } );
+            { getDeletedAttribute().getDescription(), getModifiedEntry().getDn().getUpName() } );
     }
     
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributesInitializedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributesInitializedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributesInitializedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/AttributesInitializedEvent.java Sun Nov  4 11:10:19 2007
@@ -54,7 +54,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__dn_attributes_initialized, new String[]
-            { getModifiedEntry().getDn().toString() } );
+            { getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ChildrenInitializedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ChildrenInitializedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ChildrenInitializedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ChildrenInitializedEvent.java Sun Nov  4 11:10:19 2007
@@ -53,7 +53,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__dn_children_initialized, new String[]
-            { getModifiedEntry().getDn().toString() } );
+            { getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueAddedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueAddedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueAddedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueAddedEvent.java Sun Nov  4 11:10:19 2007
@@ -89,7 +89,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__empty_value_added_to_att_at_dn, new String[]
-            { getModifiedAttribute().getDescription(), getModifiedEntry().getDn().toString() } );
+            { getModifiedAttribute().getDescription(), getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueDeletedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueDeletedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueDeletedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EmptyValueDeletedEvent.java Sun Nov  4 11:10:19 2007
@@ -89,7 +89,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__empty_value_deleted_from_att_at_dn, new String[]
-            { getModifiedAttribute().getDescription(), getModifiedEntry().getDn().toString() } );
+            { getModifiedAttribute().getDescription(), getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryAddedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryAddedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryAddedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryAddedEvent.java Sun Nov  4 11:10:19 2007
@@ -53,7 +53,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__added_dn, new String[]
-            { getModifiedEntry().getDn().toString() } );
+            { getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryDeletedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryDeletedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryDeletedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryDeletedEvent.java Sun Nov  4 11:10:19 2007
@@ -53,7 +53,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__deleted_dn, new String[]
-            { getModifiedEntry().getDn().toString() } );
+            { getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryMovedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryMovedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryMovedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryMovedEvent.java Sun Nov  4 11:10:19 2007
@@ -84,8 +84,8 @@
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__moved_oldrdn_from_oldparent_to_newparent,
             new String[]
-                { getOldEntry().getDn().getRdn().toString(), getOldEntry().getParententry().getDn().toString(),
-                    getNewEntry().getParententry().getDn().toString() } );
+                { getOldEntry().getDn().getRdn().getUpName(), getOldEntry().getParententry().getDn().getUpName(),
+                    getNewEntry().getParententry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryRenamedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryRenamedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryRenamedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EntryRenamedEvent.java Sun Nov  4 11:10:19 2007
@@ -83,7 +83,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__renamed_olddn_to_newdn, new String[]
-            { getOldEntry().getDn().toString(), getNewEntry().getDn().toString() } );
+            { getOldEntry().getDn().getUpName(), getNewEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueAddedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueAddedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueAddedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueAddedEvent.java Sun Nov  4 11:10:19 2007
@@ -90,7 +90,7 @@
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__added_val_to_att_at_dn, new String[]
             { getAddedValue().getStringValue(), getModifiedAttribute().getDescription(),
-                getModifiedEntry().getDn().toString() } );
+                getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueDeletedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueDeletedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueDeletedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueDeletedEvent.java Sun Nov  4 11:10:19 2007
@@ -90,7 +90,7 @@
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__deleted_val_from_att_at_dn, new String[]
             { getDeletedValue().getStringValue(), getModifiedAttribute().getDescription(),
-                getModifiedEntry().getDn().toString() } );
+                getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueModifiedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueModifiedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueModifiedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueModifiedEvent.java Sun Nov  4 11:10:19 2007
@@ -107,7 +107,7 @@
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__replaced_oldval_by_newval_at_att_at_dn,
             new String[]
                 { getOldValue().getStringValue(), getNewValue().getStringValue(),
-                    getModifiedAttribute().getDescription(), getModifiedEntry().getDn().toString() } );
+                    getModifiedAttribute().getDescription(), getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueRenamedEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueRenamedEvent.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueRenamedEvent.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/ValueRenamedEvent.java Sun Nov  4 11:10:19 2007
@@ -88,7 +88,7 @@
     public String toString()
     {
         return BrowserCoreMessages.bind( BrowserCoreMessages.event__renamed_oldval_by_newval_at_dn, new String[]
-            { getOldValue().toString(), getNewValue().toString(), getModifiedEntry().getDn().toString() } );
+            { getOldValue().toString(), getNewValue().toString(), getModifiedEntry().getDn().getUpName() } );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractEclipseJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractEclipseJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractEclipseJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractEclipseJob.java Sun Nov  4 11:10:19 2007
@@ -149,18 +149,6 @@
 
     public final void execute()
     {
-        // prevent from running the job if there are no connections 
-        Connection[] connections = getConnections();
-        for ( Connection connection : connections )
-        {
-            if(connection == null)
-            {
-                // TODO: logger
-                System.out.println( "Null connection: " + this.getClass().getName() );
-                return;
-            }
-        }
-        
         setUser( true );
         schedule();
     }
@@ -283,7 +271,7 @@
     protected static String getLockIdentifier( IEntry entry )
     {
         return getLockIdentifier( entry.getBrowserConnection() ) + "_"
-            + new StringBuffer( entry.getDn().toString() ).reverse().toString();
+            + new StringBuffer( entry.getDn().getNormName() ).reverse().toString();
     }
 
 
@@ -302,7 +290,7 @@
     protected static String getLockIdentifier( ISearch search )
     {
         return getLockIdentifier( search.getBrowserConnection() ) + "_"
-            + new StringBuffer( search.getSearchBase().toString() ).reverse().toString();
+            + new StringBuffer( search.getSearchBase().getNormName() ).reverse().toString();
     }
 
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CopyEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CopyEntriesJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CopyEntriesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CopyEntriesJob.java Sun Nov  4 11:10:19 2007
@@ -23,8 +23,13 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Iterator;
 import java.util.List;
 
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.shared.ldap.name.AttributeTypeAndValue;
+import org.apache.directory.shared.ldap.name.Rdn;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
@@ -35,9 +40,6 @@
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
 import org.apache.directory.studio.ldapbrowser.core.model.IValue;
-import org.apache.directory.studio.ldapbrowser.core.model.NameException;
-import org.apache.directory.studio.ldapbrowser.core.model.RDN;
-import org.apache.directory.studio.ldapbrowser.core.model.RDNPart;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.AliasDereferencingMethod;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
@@ -47,6 +49,7 @@
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Search;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Value;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.SchemaUtils;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**
@@ -114,9 +117,9 @@
     {
         monitor.beginTask( entriesToCopy.length == 1 ? BrowserCoreMessages.bind(
             BrowserCoreMessages.jobs__copy_entries_task_1, new String[]
-                { entriesToCopy[0].getDn().toString(), parent.getDn().toString() } ) : BrowserCoreMessages.bind(
+                { entriesToCopy[0].getDn().getUpName(), parent.getDn().getUpName() } ) : BrowserCoreMessages.bind(
             BrowserCoreMessages.jobs__copy_entries_task_n, new String[]
-                { Integer.toString( entriesToCopy.length ), parent.getDn().toString() } ), 2 + entriesToCopy.length );
+                { Integer.toString( entriesToCopy.length ), parent.getDn().getUpName() } ), 2 + entriesToCopy.length );
 
         monitor.reportProgress( " " ); //$NON-NLS-1$
         monitor.worked( 1 );
@@ -129,7 +132,7 @@
                 IEntry entryToCopy = entriesToCopy[i];
 
                 if ( scope == SearchScope.OBJECT
-                    || !parent.getDn().toString().endsWith( entryToCopy.getDn().toString() ) )
+                    || !parent.getDn().getNormName().endsWith( entryToCopy.getDn().getNormName() ) )
                 {
                     num = copyEntryRecursive( entryToCopy, parent, scope, num, monitor );
                 }
@@ -198,7 +201,7 @@
                 IAttribute[] attributesToCopy = entryToCopy.getAttributes();
 
                 // create new entry
-                RDN rdn = entryToCopy.getRdn();
+                Rdn rdn = entryToCopy.getRdn();
                 IEntry newEntry = new Entry( parent, rdn );
 
                 // change RDN if entry already exists
@@ -206,9 +209,9 @@
                 IEntry testEntry = ReadEntryJob.getEntry( parent.getBrowserConnection(), newEntry.getDn(), testMonitor );
                 if ( testEntry != null )
                 {
-                    String rdnValue = rdn.getValue();
+                    Object rdnValue = rdn.getUpValue();
                     String newRdnValue = BrowserCoreMessages.bind( BrowserCoreMessages.copy_n_of_s, "", rdnValue ); //$NON-NLS-1$
-                    RDN newRdn = getNewRdn( rdn, newRdnValue );
+                    Rdn newRdn = getNewRdn( rdn, newRdnValue );
                     newEntry = new Entry( parent, newRdn );
                     testEntry = ReadEntryJob.getEntry( parent.getBrowserConnection(), newEntry.getDn(), testMonitor );
                     for ( int i = 2; testEntry != null; i++ )
@@ -241,18 +244,18 @@
                 }
 
                 // check if RDN attributes ar present
-                RDN newRdn = newEntry.getRdn();
-                RDNPart[] oldRdnParts = rdn.getParts();
-                for ( int i = 0; i < oldRdnParts.length; i++ )
+                Rdn newRdn = newEntry.getRdn();
+                Iterator<AttributeTypeAndValue> atavIterator = newRdn.iterator();
+                while(atavIterator.hasNext())
                 {
-                    RDNPart part = oldRdnParts[i];
-                    IAttribute rdnAttribute = newEntry.getAttribute( part.getType() );
+                    AttributeTypeAndValue atav = atavIterator.next();
+                    IAttribute rdnAttribute = newEntry.getAttribute( atav.getUpType() );
                     if ( rdnAttribute != null )
                     {
                         IValue[] values = rdnAttribute.getValues();
                         for ( int ii = 0; ii < values.length; ii++ )
                         {
-                            if ( part.getUnencodedValue().equals( values[ii].getRawValue() ) )
+                            if ( atav.getUpValue().equals( values[ii].getRawValue() ) )
                             {
                                 rdnAttribute.deleteValue( values[ii] );
                             }
@@ -263,16 +266,16 @@
                         }
                     }
                 }
-                RDNPart[] newRdnParts = newRdn.getParts();
-                for ( int i = 0; i < newRdnParts.length; i++ )
+                atavIterator = newRdn.iterator();
+                while(atavIterator.hasNext())
                 {
-                    RDNPart part = newRdnParts[i];
-                    IAttribute rdnAttribute = newEntry.getAttribute( part.getType() );
+                    AttributeTypeAndValue atav = atavIterator.next();
+                    IAttribute rdnAttribute = newEntry.getAttribute( atav.getUpType() );
                     if ( rdnAttribute == null )
                     {
-                        rdnAttribute = new Attribute( newEntry, part.getType() );
+                        rdnAttribute = new Attribute( newEntry, atav.getUpType() );
                         newEntry.addAttribute( rdnAttribute );
-                        rdnAttribute.addValue( new Value( rdnAttribute, part.getUnencodedValue() ) );
+                        rdnAttribute.addValue( new Value( rdnAttribute, atav.getUpValue() ) );
                     }
                     else
                     {
@@ -280,7 +283,7 @@
                         IValue[] values = rdnAttribute.getValues();
                         for ( int ii = 0; ii < values.length; ii++ )
                         {
-                            if ( part.getUnencodedValue().equals( values[ii].getStringValue() ) )
+                            if ( atav.getUpValue().equals( values[ii].getStringValue() ) )
                             {
                                 mustAdd = false;
                                 break;
@@ -288,7 +291,7 @@
                         }
                         if ( mustAdd )
                         {
-                            rdnAttribute.addValue( new Value( rdnAttribute, part.getUnencodedValue() ) );
+                            rdnAttribute.addValue( new Value( rdnAttribute, atav.getUpValue() ) );
                         }
                     }
                 }
@@ -352,15 +355,23 @@
      * @param newRdnValue the new rdn value
      * 
      * @return the new rdn
-     * 
-     * @throws NameException the name exception
+     * @throws InvalidNameException 
      */
-    private RDN getNewRdn( RDN rdn, String newRdnValue ) throws NameException
+    private Rdn getNewRdn( Rdn rdn, String newRdnValue ) throws InvalidNameException
     {
-        String[] names = rdn.getTypes();
-        String[] values = rdn.getValues();
-        values[0] = newRdnValue;
-        RDN newRdn = new RDN( names, values, true );
+        String[] rdnTypes = new String[rdn.size()];
+        String[] rdnValues = new String[rdn.size()];
+        int i = 0;
+        Iterator<AttributeTypeAndValue> atavIterator = rdn.iterator();
+        while(atavIterator.hasNext())
+        {
+            AttributeTypeAndValue atav = atavIterator.next();
+            rdnTypes[i] = atav.getUpType();
+            rdnValues[i] = ( String ) atav.getUpValue();
+            i++;
+        }
+        rdnValues[0] = newRdnValue;
+        Rdn newRdn = DnUtils.composeRdn( rdnTypes, rdnValues );
         return newRdn;
     }
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryJob.java Sun Nov  4 11:10:19 2007
@@ -98,7 +98,7 @@
     protected void executeNotificationJob( StudioProgressMonitor monitor )
     {
         monitor.beginTask( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__create_entry_task_1, new String[]
-            { entryToCreate.getDn().toString() } ), 2 + 1 );
+            { entryToCreate.getDn().getUpName() } ), 2 + 1 );
         monitor.reportProgress( " " ); //$NON-NLS-1$
         monitor.worked( 1 );
 
@@ -147,7 +147,7 @@
     static void createEntry( IBrowserConnection browserConnection, IEntry entryToCreate, StudioProgressMonitor monitor )
     {
         // dn
-        String dn = entryToCreate.getDn().toString();
+        String dn = entryToCreate.getDn().getUpName();
 
         // attributes
         Attributes jndiAttributes = new BasicAttributes();

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateValuesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateValuesJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateValuesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateValuesJob.java Sun Nov  4 11:10:19 2007
@@ -190,7 +190,7 @@
         if ( browserConnection.getConnection() != null )
         {
             // dn
-            String dn = entryToModify.getDn().toString();
+            String dn = entryToModify.getDn().getUpName();
 
             // modification items
             ModificationItem[] modificationItems = new ModificationItem[valuesToCreate.length];

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteAttributesValueJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteAttributesValueJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteAttributesValueJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteAttributesValueJob.java Sun Nov  4 11:10:19 2007
@@ -222,7 +222,7 @@
         if ( browserConnection.getConnection() != null )
         {
             // dn
-            String dn = entry.getDn().toString();
+            String dn = entry.getDn().getUpName();
 
             // modification items
             List<ModificationItem> modificationItems = new ArrayList<ModificationItem>();

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java Sun Nov  4 11:10:19 2007
@@ -104,7 +104,7 @@
 
         monitor.beginTask( entriesToDelete.length == 1 ? BrowserCoreMessages.bind(
             BrowserCoreMessages.jobs__delete_entries_task_1, new String[]
-                { entriesToDelete[0].getDn().toString() } ) : BrowserCoreMessages.bind(
+                { entriesToDelete[0].getDn().getUpName() } ) : BrowserCoreMessages.bind(
             BrowserCoreMessages.jobs__delete_entries_task_n, new String[]
                 { Integer.toString( entriesToDelete.length ) } ), 2 + entriesToDelete.length );
         monitor.reportProgress( " " ); //$NON-NLS-1$
@@ -291,7 +291,7 @@
     static void deleteEntry( IBrowserConnection browserConnection, IEntry entry, StudioProgressMonitor monitor )
     {
         // dn
-        String dn = entry.getDn().toString();
+        String dn = entry.getDn().getUpName();
 
         // controls
         Control[] controls = null;

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportDsmlJob.java Sun Nov  4 11:10:19 2007
@@ -50,7 +50,6 @@
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.filter.SubstringNode;
 import org.apache.directory.shared.ldap.message.ScopeEnum;
-import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.dsmlv2.engine.Dsmlv2Engine;
@@ -140,7 +139,7 @@
             searchRequest.setProtocolOP( searchRequest );
 
             // DN
-            searchRequest.setBaseObject( new LdapDN( searchParameter.getSearchBase().toString() ) );
+            searchRequest.setBaseObject( searchParameter.getSearchBase( ) );
 
             // Scope
             SearchScope scope = searchParameter.getScope();

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ExportLdifJob.java Sun Nov  4 11:10:19 2007
@@ -34,14 +34,13 @@
 import javax.naming.directory.SearchResult;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
-import org.apache.directory.studio.ldapbrowser.core.model.NameException;
 import org.apache.directory.studio.ldapbrowser.core.model.ReferralException;
 import org.apache.directory.studio.ldapbrowser.core.model.SearchParameter;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
@@ -266,7 +265,7 @@
             try
             {
                 SearchResult sr = enumeration.next();
-                DN dn = JNDIUtils.getDn( sr );
+                LdapDN dn = JNDIUtils.getDn( sr );
                 LdifContentRecord record = LdifContentRecord.create( dn.toString() );
 
                 NamingEnumeration<? extends Attribute> attributeEnumeration = sr.getAttributes().getAll();
@@ -297,14 +296,6 @@
             catch ( NamingException e )
             {
                 throw JNDIUtils.createConnectionException( parameter, e );
-            }
-            catch ( NameException e )
-            {
-                throw new ConnectionException( e );
-            }
-            catch ( NoSuchFieldException e )
-            {
-                throw new ConnectionException( e );
             }
         }
     }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java Sun Nov  4 11:10:19 2007
@@ -35,6 +35,7 @@
 import java.util.Date;
 import java.util.List;
 
+import javax.naming.InvalidNameException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
 import javax.naming.directory.BasicAttribute;
@@ -45,6 +46,7 @@
 import javax.naming.ldap.Control;
 
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants;
@@ -52,10 +54,8 @@
 import org.apache.directory.studio.ldapbrowser.core.events.BulkModificationEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
-import org.apache.directory.studio.ldapbrowser.core.model.NameException;
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.LdifEnumeration;
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeAddRecord;
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.container.LdifChangeDeleteRecord;
@@ -71,6 +71,7 @@
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifControlLine;
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.lines.LdifModSpecTypeLine;
 import org.apache.directory.studio.ldapbrowser.core.model.ldif.parser.LdifParser;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**
@@ -248,9 +249,9 @@
                         importedCount++;
 
                         // update cache and adjust attribute/children initialization flags
-                        DN dn = new DN( record.getDnLine().getValueAsString() );
+                        LdapDN dn = new LdapDN( record.getDnLine().getValueAsString() );
                         IEntry entry = browserConnection.getEntryFromCache( dn );
-                        DN parentDn = dn.getParentDn();
+                        LdapDN parentDn = DnUtils.getParent( dn );
                         IEntry parentEntry = parentDn != null ? browserConnection.getEntryFromCache( parentDn ) : null;
 
                         if ( record instanceof LdifChangeDeleteRecord )
@@ -279,7 +280,7 @@
                             LdifChangeModDnRecord modDnRecord = ( LdifChangeModDnRecord ) record;
                             if ( modDnRecord.getNewsuperiorLine() != null )
                             {
-                                DN newSuperiorDn = new DN( modDnRecord.getNewsuperiorLine().getValueAsString() );
+                                LdapDN newSuperiorDn = new LdapDN( modDnRecord.getNewsuperiorLine().getValueAsString() );
                                 IEntry newSuperiorEntry = browserConnection.getEntryFromCache( newSuperiorDn );
                                 if ( newSuperiorEntry != null )
                                 {
@@ -452,19 +453,20 @@
 
                 try
                 {
-                    DN newDn;
+                    LdapDN newDn;
                     if ( modDnRecord.getNewsuperiorLine() != null )
-                        newDn = new DN( newRdn, modDnRecord.getNewsuperiorLine().getValueAsString() );
+                        newDn = DnUtils.composeDn( newRdn, modDnRecord.getNewsuperiorLine().getValueAsString() );
                     else
                     {
-                        DN dnObject = new DN( dn );
-                        newDn = new DN( newRdn.toString(), dnObject.getParentDn().toString() );
+                        LdapDN dnObject = new LdapDN( dn );
+                        LdapDN parent = DnUtils.getParent( dnObject );
+                        newDn = DnUtils.composeDn( newRdn, parent.getUpName() );
                     }
 
                     browserConnection.getConnection().getJNDIConnectionWrapper().rename( dn, newDn.toString(),
                         deleteOldRdn, getControls( modDnRecord ), monitor );
                 }
-                catch ( NameException ne )
+                catch ( InvalidNameException ne )
                 {
                     throw new ConnectionException( ne );
                 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeAttributesJob.java Sun Nov  4 11:10:19 2007
@@ -28,19 +28,20 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.AttributesInitializedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
-import org.apache.directory.studio.ldapbrowser.core.model.NameException;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.AliasDereferencingMethod;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch.SearchScope;
@@ -136,7 +137,7 @@
         for ( int pi = 0; pi < entries.length && !monitor.isCanceled(); pi++ )
         {
             monitor.setTaskName( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_task, new String[]
-                { this.entries[pi].getDn().toString() } ) );
+                { this.entries[pi].getDn().getUpName() } ) );
             monitor.worked( 1 );
             if ( entries[pi].getBrowserConnection() != null && entries[pi].isDirectoryEntry() )
             {
@@ -209,7 +210,7 @@
     {
         monitor.reportProgress( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_progress_att,
             new String[]
-                { entry.getDn().toString() } ) );
+                { entry.getDn().getUpName() } ) );
 
         // entry.setAttributesInitialized(false, entry.getConnection());
 
@@ -293,7 +294,7 @@
         browserConnection.getRootDSE().setChildrenInitialized( false );
 
         // get well-known root DSE attributes, includes + and *
-        ISearch search = new Search( null, browserConnection, new DN(), ISearch.FILTER_TRUE,
+        ISearch search = new Search( null, browserConnection, LdapDN.EMPTY_LDAPDN, ISearch.FILTER_TRUE,
             InitializeAttributesJob.ROOT_DSE_ATTRIBUTES, SearchScope.OBJECT, 0, 0,
             AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, false, false,
             null );
@@ -302,17 +303,24 @@
         // get base DNs
         if( !browserConnection.isFetchBaseDNs() && browserConnection.getBaseDN() != null && !"".equals( browserConnection.getBaseDN().toString() ))
         {
-            // only add the specified base DN
-            DN dn = browserConnection.getBaseDN();
-            IEntry entry = new BaseDNEntry( new DN( dn ), browserConnection );
-            browserConnection.cacheEntry( entry );
-            browserConnection.getRootDSE().addChild( entry );
-            
-            // check if entry exists
-            // TODO: use browserConnection.getEntry( dn, monitor ) ??
-            search = new Search( null, browserConnection, dn, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.OBJECT, 1, 0,
-                AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, true, true, null );
-            SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
+            try
+            {
+                // only add the specified base DN
+                LdapDN dn = browserConnection.getBaseDN();
+                IEntry entry = new BaseDNEntry( new LdapDN( dn ), browserConnection );
+                browserConnection.cacheEntry( entry );
+                browserConnection.getRootDSE().addChild( entry );
+                
+                // check if entry exists
+                // TODO: use browserConnection.getEntry( dn, monitor ) ??
+                search = new Search( null, browserConnection, dn, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.OBJECT, 1, 0,
+                    AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, true, true, null );
+                SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
+            }
+            catch ( InvalidNameException e )
+            {
+                monitor.reportError( BrowserCoreMessages.model__error_setting_base_dn, e );
+            }
         }
         else
         {
@@ -332,11 +340,11 @@
                 if ( !"".equals( namingContext ) ) { //$NON-NLS-1$
                     try
                     {
-                        IEntry entry = new BaseDNEntry( new DN( namingContext ), browserConnection );
+                        IEntry entry = new BaseDNEntry( new LdapDN( namingContext ), browserConnection );
                         browserConnection.getRootDSE().addChild( entry );
                         browserConnection.cacheEntry( entry );
                     }
-                    catch ( Exception e )
+                    catch ( InvalidNameException e )
                     {
                         monitor.reportError( BrowserCoreMessages.model__error_setting_base_dn, e );
                     }
@@ -344,7 +352,7 @@
                 else
                 {
                     // special handling of empty namingContext: perform a one-level search and add all result DNs to the set
-                    search = new Search( null, browserConnection, new DN(), ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.ONELEVEL, 0,
+                    search = new Search( null, browserConnection, LdapDN.EMPTY_LDAPDN, ISearch.FILTER_TRUE, ISearch.NO_ATTRIBUTES, SearchScope.ONELEVEL, 0,
                         0, AliasDereferencingMethod.NEVER, ReferralHandlingMethod.IGNORE, false, false, null );
                     SearchJob.searchAndUpdateModel( browserConnection, search, monitor );
                     ISearchResult[] results = search.getSearchResults();
@@ -390,7 +398,7 @@
 
     private static DirectoryMetadataEntry[] getDirectoryMetadataEntries( IBrowserConnection browserConnection, String metadataAttributeName )
     {
-        List<DN> metadataEntryList = new ArrayList<DN>();
+        List<LdapDN> metadataEntryList = new ArrayList<LdapDN>();
         IAttribute attribute = browserConnection.getRootDSE().getAttribute( metadataAttributeName );
         if ( attribute != null )
         {
@@ -399,9 +407,9 @@
             {
                 try
                 {
-                    metadataEntryList.add( new DN( values[i] ) );
+                    metadataEntryList.add( new LdapDN( values[i] ) );
                 }
-                catch ( NameException e )
+                catch ( InvalidNameException e )
                 {
                 }
             }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/InitializeChildrenJob.java Sun Nov  4 11:10:19 2007
@@ -115,9 +115,8 @@
 
         for ( int pi = 0; pi < entries.length && !monitor.isCanceled(); pi++ )
         {
-
             monitor.setTaskName( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_task, new String[]
-                { this.entries[pi].getDn().toString() } ) );
+                { this.entries[pi].getDn().getUpName() } ) );
             monitor.worked( 1 );
 
             if ( entries[pi].getBrowserConnection() != null && entries[pi].isDirectoryEntry() )
@@ -161,7 +160,7 @@
         {
             monitor.reportProgress( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_progress_sub,
                 new String[]
-                    { parent.getDn().toString() } ) );
+                    { parent.getDn().getUpName() } ) );
 
             // clear old children
             IEntry[] oldChildren = parent.getChildren();
@@ -199,7 +198,7 @@
             ISearchResult[] srs = search.getSearchResults();
             monitor.reportProgress( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_progress_subcount,
                 new String[]
-                    { srs == null ? Integer.toString( 0 ) : Integer.toString( srs.length ), parent.getDn().toString() } ) );
+                    { srs == null ? Integer.toString( 0 ) : Integer.toString( srs.length ), parent.getDn().getUpName() } ) );
 
             // fill children in search result
             if ( srs != null && srs.length > 0 )
@@ -264,7 +263,7 @@
                 monitor.reportProgress( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__init_entries_progress_subcount,
                     new String[]
                         { subSrs == null ? Integer.toString( 0 ) : Integer.toString( subSrs.length ),
-                            parent.getDn().toString() } ) );
+                            parent.getDn().getUpName() } ) );
                 // fill children in search result
                 if ( subSrs != null && subSrs.length > 0 )
                 {

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ModifyValueJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ModifyValueJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ModifyValueJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ModifyValueJob.java Sun Nov  4 11:10:19 2007
@@ -160,7 +160,7 @@
         if ( browserConnection.getConnection() != null )
         {
             // dn
-            String dn = entry.getDn().toString();
+            String dn = entry.getDn().getUpName();
 
             // modification items
             // perform a replace if the current attribute is single-valued

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/MoveEntriesJob.java Sun Nov  4 11:10:19 2007
@@ -30,17 +30,18 @@
 import javax.naming.ldap.Control;
 import javax.naming.ldap.ManageReferralControl;
 
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.EntryMovedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.events.SearchUpdateEvent;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**
@@ -128,12 +129,12 @@
         {
             IEntry oldEntry = oldEntries[i];
             IEntry oldParent = oldEntry.getParententry();
-            DN newDn = new DN( oldEntry.getRdn(), newParent.getDn() );
+            LdapDN newDn = DnUtils.composeDn( oldEntry.getRdn(), newParent.getDn() );
 
             // move in directory
             // TODO: use manual/simulated move, if move of subtree is not supported (JNDI)
             int errorStatusSize1 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$
-            moveEntry( browserConnection, oldEntry, newDn.toString(), monitor );
+            moveEntry( browserConnection, oldEntry, newDn, monitor );
             //connection.move( oldEntry, newParent.getDn(), monitor );
             int errorStatusSize2 = monitor.getErrorStatus( "" ).getChildren().length; //$NON-NLS-1$
 
@@ -216,14 +217,15 @@
      * 
      * @param browserConnection the browser connection
      * @param oldEntry the old entry
-     * @param newDn the new dn
+     * @param newDn the new DN
      * @param monitor the progress monitor
      */
-    private void moveEntry( IBrowserConnection browserConnection, IEntry oldEntry, String newDn,
+    private void moveEntry( IBrowserConnection browserConnection, IEntry oldEntry, LdapDN newDn,
         StudioProgressMonitor monitor )
     {
         // dn
-        String oldDn = oldEntry.getDn().toString();
+        String oldDnString = oldEntry.getDn().getUpName();
+        String newDnString = newDn.getUpName();
 
         // controls
         Control[] controls = null;
@@ -233,7 +235,8 @@
                 { new ManageReferralControl() };
         }
 
-        browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDn, newDn, false, controls, monitor );
+        browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDnString, newDnString, false, controls,
+            monitor );
     }
 
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReadEntryJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReadEntryJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReadEntryJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReadEntryJob.java Sun Nov  4 11:10:19 2007
@@ -21,10 +21,10 @@
 package org.apache.directory.studio.ldapbrowser.core.jobs;
 
 
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
@@ -48,7 +48,7 @@
     private IBrowserConnection browserConnection;
 
     /** The DN of the entry. */
-    private DN dn;
+    private LdapDN dn;
 
     /** The entry read from directory. */
     private IEntry readEntry;
@@ -60,7 +60,7 @@
      * @param browserConnection the browser connection
      * @param dn the DN of the entry
      */
-    public ReadEntryJob( IBrowserConnection browserConnection, DN dn )
+    public ReadEntryJob( IBrowserConnection browserConnection, LdapDN dn )
     {
         this.browserConnection = browserConnection;
         this.dn = dn;
@@ -145,7 +145,7 @@
      * 
      * @return the read entry
      */
-    static IEntry getEntry( IBrowserConnection browserConnection, DN dn, StudioProgressMonitor monitor )
+    static IEntry getEntry( IBrowserConnection browserConnection, LdapDN dn, StudioProgressMonitor monitor )
     {
         try
         {

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java Sun Nov  4 11:10:19 2007
@@ -21,12 +21,12 @@
 package org.apache.directory.studio.ldapbrowser.core.jobs;
 
 
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.BrowserConnectionUpdateEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IRootDSE;
@@ -141,7 +141,7 @@
             if ( browserConnection.getRootDSE().getAttribute( IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY ) != null )
             {
                 SearchParameter sp = new SearchParameter();
-                sp.setSearchBase( new DN( browserConnection.getRootDSE().getAttribute( IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY )
+                sp.setSearchBase( new LdapDN( browserConnection.getRootDSE().getAttribute( IRootDSE.ROOTDSE_ATTRIBUTE_SUBSCHEMASUBENTRY )
                     .getStringValue() ) );
                 sp.setFilter( Schema.SCHEMA_FILTER );
                 sp.setScope( SearchScope.OBJECT );

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Sun Nov  4 11:10:19 2007
@@ -29,18 +29,19 @@
 import javax.naming.ldap.Control;
 import javax.naming.ldap.ManageReferralControl;
 
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.name.Rdn;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.EntryRenamedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.events.SearchUpdateEvent;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult;
-import org.apache.directory.studio.ldapbrowser.core.model.RDN;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 
 
 /**
@@ -59,7 +60,7 @@
     private IEntry oldEntry;
 
     /** The new rdn. */
-    private RDN newRdn;
+    private Rdn newRdn;
 
     /** The delete old rdn flag. */
     private boolean deleteOldRdn;
@@ -78,7 +79,7 @@
      * @param newRdn the new rdn
      * @param deleteOldRdn the delete old rdn flag
      */
-    public RenameEntryJob( IEntry entry, RDN newRdn, boolean deleteOldRdn )
+    public RenameEntryJob( IEntry entry, Rdn newRdn, boolean deleteOldRdn )
     {
         this.browserConnection = entry.getBrowserConnection();
         this.oldEntry = entry;
@@ -117,17 +118,17 @@
     protected void executeNotificationJob( StudioProgressMonitor monitor )
     {
         monitor.beginTask( BrowserCoreMessages.bind( BrowserCoreMessages.jobs__rename_entry_task, new String[]
-            { oldEntry.getDn().toString() } ), 3 );
+            { oldEntry.getDn().getUpName() } ), 3 );
         monitor.reportProgress( " " ); //$NON-NLS-1$
         monitor.worked( 1 );
 
         IEntry parent = oldEntry.getParententry();
-        DN newDn = new DN( newRdn, parent.getDn() );
+        LdapDN newDn = DnUtils.composeDn( newRdn, parent.getDn() );
 
         // rename in directory
         // TODO: use manual/simulated rename, if rename of subtree is not
         // supported
-        renameEntry( browserConnection, oldEntry, newDn.toString(), deleteOldRdn, monitor );
+        renameEntry( browserConnection, oldEntry, newDn, deleteOldRdn, monitor );
 
         if ( !monitor.errorsReported() )
         {
@@ -205,15 +206,16 @@
      * 
      * @param browserConnection the browser connection
      * @param oldEntry the old entry
-     * @param newDn the new dn
-     * @param deleteOldRdn the delete old rdn flag
+     * @param newDn the new DN
+     * @param deleteOldRdn the delete old RDN flag
      * @param monitor the progress monitor
      */
-    static void renameEntry( IBrowserConnection browserConnection, IEntry oldEntry, String newDn, boolean deleteOldRdn,
+    static void renameEntry( IBrowserConnection browserConnection, IEntry oldEntry, LdapDN newDn, boolean deleteOldRdn,
         StudioProgressMonitor monitor )
     {
         // dn
-        String oldDn = oldEntry.getDn().toString();
+        String oldDnString = oldEntry.getDn().getUpName();
+        String newDnString = newDn.getUpName();
 
         // controls
         Control[] controls = null;
@@ -223,7 +225,7 @@
                 { new ManageReferralControl() };
         }
 
-        browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDn, newDn, deleteOldRdn, controls,
+        browserConnection.getConnection().getJNDIConnectionWrapper().rename( oldDnString, newDnString, deleteOldRdn, controls,
             monitor );
     }
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java Sun Nov  4 11:10:19 2007
@@ -37,6 +37,7 @@
 import javax.naming.ldap.BasicControl;
 import javax.naming.ldap.Control;
 
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
@@ -44,7 +45,6 @@
 import org.apache.directory.studio.ldapbrowser.core.events.SearchUpdateEvent;
 import org.apache.directory.studio.ldapbrowser.core.model.AttributeHierarchy;
 import org.apache.directory.studio.ldapbrowser.core.model.ConnectionException;
-import org.apache.directory.studio.ldapbrowser.core.model.DN;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
@@ -58,6 +58,7 @@
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Entry;
 import org.apache.directory.studio.ldapbrowser.core.model.impl.Value;
 import org.apache.directory.studio.ldapbrowser.core.model.schema.ObjectClassDescription;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.JNDIUtils;
 import org.apache.directory.studio.ldapbrowser.core.utils.Utils;
 
@@ -186,7 +187,7 @@
                     while ( !monitor.isCanceled() && enumeration.hasMore() )
                     {
                         SearchResult sr = enumeration.nextElement(); // TODO: referrals exception
-                        DN dn = JNDIUtils.getDn( sr );
+                        LdapDN dn = JNDIUtils.getDn( sr );
 
                         // get entry from cache or create it
                         IEntry entry = browserConnection.getEntryFromCache( dn );
@@ -271,7 +272,7 @@
     static NamingEnumeration<SearchResult> search( IBrowserConnection browserConnection, SearchParameter parameter,
         StudioProgressMonitor monitor )
     {
-        String searchBase = parameter.getSearchBase().toString();
+        String searchBase = parameter.getSearchBase().getUpName();
         SearchControls controls = new SearchControls();
         switch ( parameter.getScope() )
         {
@@ -466,28 +467,29 @@
      * 
      * @return the created entry
      */
-    private static IEntry createAndCacheEntry( IBrowserConnection browserConnection, DN dn )
+    private static IEntry createAndCacheEntry( IBrowserConnection browserConnection, LdapDN dn )
     {
         IEntry entry = null;
 
         // build tree to parent
-        LinkedList<DN> parentDnList = new LinkedList<DN>();
-        DN parentDN = dn;
+        LinkedList<LdapDN> parentDnList = new LinkedList<LdapDN>();
+        LdapDN parentDN = dn;
         while ( parentDN != null && browserConnection.getEntryFromCache( parentDN ) == null )
         {
             parentDnList.addFirst( parentDN );
-            parentDN = parentDN.getParentDn();
+            parentDN = DnUtils.getParent( parentDN );
         }
-        for ( DN aDN : parentDnList )
+        for ( LdapDN aDN : parentDnList )
         {
-            if ( aDN.getParentDn() == null )
+            parentDN = DnUtils.getParent( aDN );
+            if ( parentDN == null )
             {
                 entry = new BaseDNEntry( aDN, browserConnection );
                 browserConnection.cacheEntry( entry );
             }
-            else if ( browserConnection.getEntryFromCache( aDN.getParentDn() ) != null )
+            else if ( browserConnection.getEntryFromCache( parentDN ) != null )
             {
-                IEntry parentEntry = browserConnection.getEntryFromCache( aDN.getParentDn() );
+                IEntry parentEntry = browserConnection.getEntryFromCache( parentDN );
                 entry = new Entry( parentEntry, aDN.getRdn() );
                 entry.setDirectoryEntry( true );
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/BookmarkParameter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/BookmarkParameter.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/BookmarkParameter.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/BookmarkParameter.java Sun Nov  4 11:10:19 2007
@@ -23,6 +23,10 @@
 
 import java.io.Serializable;
 
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.shared.ldap.name.LdapDN;
+
 
 /**
  * A Bean class to hold the bookmark parameters. 
@@ -38,7 +42,7 @@
     private static final long serialVersionUID = 105108281861642267L;
 
     /** The target DN. */
-    private DN dn;
+    private LdapDN dn;
 
     /** The symbolic name. */
     private String name;
@@ -58,7 +62,7 @@
      * @param dn the target DN
      * @param name the symbolic name
      */
-    public BookmarkParameter( DN dn, String name )
+    public BookmarkParameter( LdapDN dn, String name )
     {
         this.dn = dn;
         this.name = name;
@@ -70,7 +74,7 @@
      * 
      * @return the target DN
      */
-    public DN getDn()
+    public LdapDN getDn()
     {
         return dn;
     }
@@ -81,12 +85,34 @@
      * 
      * @param dn the target DN
      */
-    public void setDn( DN dn )
+    public void setDn( LdapDN dn )
     {
         this.dn = dn;
     }
 
 
+    /**
+     * Sets the target DN.
+     * 
+     *  * @deprecated This method will be removed in the next version. The DN/RDN/RDNPart 
+     * classes are replaced with the shared-ldap LdapDN/Rdn/ATAV. This method just 
+     * remains to provide backward compatibility of the old browserconnections.xml
+     * file that stores searches and bookmarks.
+     * 
+     * @param dn the target DN
+     */
+    public void setDn( DN dn )
+    {
+        try
+        {
+            setDn( new LdapDN( dn.toString() ) );
+        }
+        catch ( InvalidNameException e )
+        {
+        }
+    }
+    
+    
     /**
      * Gets the symbolic name.
      * 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/DN.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/DN.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/DN.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/DN.java Sun Nov  4 11:10:19 2007
@@ -32,6 +32,11 @@
 /**
  * A DN represents a LDAP distinguished name.
  *
+ * @deprecated This class will be removed in the next version. The DN/RDN/RDNPart 
+ * classes are replaced with the shared-ldap LdapDN/Rdn/ATAV. This class just 
+ * remains to provide backward compatibility of the old browserconnections.xml
+ * file that stores searches and bookmarks.
+ * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBookmark.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBookmark.java?rev=591817&r1=591816&r2=591817&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBookmark.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/IBookmark.java Sun Nov  4 11:10:19 2007
@@ -23,6 +23,7 @@
 
 import java.io.Serializable;
 
+import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.studio.connection.core.ConnectionPropertyPageProvider;
 import org.apache.directory.studio.ldapbrowser.core.propertypageproviders.BookmarkPropertyPageProvider;
 import org.apache.directory.studio.ldapbrowser.core.propertypageproviders.EntryPropertyPageProvider;
@@ -45,7 +46,7 @@
      * 
      * @return the DN
      */
-    public DN getDn();
+    public LdapDN getDn();
 
 
     /**
@@ -53,7 +54,7 @@
      * 
      * @param dn the DN
      */
-    public void setDn( DN dn );
+    public void setDn( LdapDN dn );
 
 
     /**