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/08/31 00:13:31 UTC

svn commit: r571334 - in /directory/studio/trunk: studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/ studio...

Author: seelmann
Date: Thu Aug 30 15:13:30 2007
New Revision: 571334

URL: http://svn.apache.org/viewvc?rev=571334&view=rev
Log:
Added schema cache

Added:
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateEvent.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateListener.java
Modified:
    directory/studio/trunk/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ConnectionPropertyPage.java
    directory/studio/trunk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/BrowserParameterPage.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionManager.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserCorePlugin.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/AbstractEntry.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/JNDIConnectionProvider.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ModificationLogger.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractEclipseJob.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryJob.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/FetchBaseDNsJob.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ReloadSchemasJob.java
    directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/SearchJob.java
    directory/studio/trunk/studio-ldapbrowser-core/src/test/java/org/apache/directory/studio/ldapbrowser/core/model/PasswordTest.java
    directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/RootDSEPropertyPage.java
    directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/SchemaPropertyPage.java

Modified: directory/studio/trunk/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ConnectionPropertyPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ConnectionPropertyPage.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ConnectionPropertyPage.java (original)
+++ directory/studio/trunk/studio-connection-ui/src/main/java/org/apache/directory/studio/connection/ui/properties/ConnectionPropertyPage.java Thu Aug 30 15:13:30 2007
@@ -207,6 +207,7 @@
         boolean parametersModified = false;
         boolean reconnectionRequired = false;
         ConnectionParameter connectionParameter = new ConnectionParameter();
+        connectionParameter.setId( connection.getConnectionParameter().getId() );
         for ( int i = 0; i < pages.length; i++ )
         {
             pages[i].saveParameters( connectionParameter );

Modified: directory/studio/trunk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/BrowserParameterPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/BrowserParameterPage.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/BrowserParameterPage.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/connection/BrowserParameterPage.java Thu Aug 30 15:13:30 2007
@@ -402,7 +402,9 @@
         boolean fetchBaseDns = connectionParameter
             .getExtendedBoolProperty( IBrowserConnection.CONNECTION_PARAMETER_FETCH_BASE_DNS );
         String baseDn = connectionParameter.getExtendedProperty( IBrowserConnection.CONNECTION_PARAMETER_BASE_DN );
-        return fetchBaseDns != isAutoFetchBaseDns() || !( baseDn.equals( getBaseDN() ) );
+        return fetchBaseDns != isAutoFetchBaseDns() || ( baseDn == null && getBaseDN() != null )
+            || ( baseDn != null && getBaseDN() == null )
+            || ( baseDn != getBaseDN() && !( baseDn.equals( getBaseDN() ) ) );
     }
 
 }

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=571334&r1=571333&r2=571334&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 Thu Aug 30 15:13:30 2007
@@ -29,6 +29,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.HashMap;
@@ -42,6 +43,8 @@
 import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
 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;
+import org.apache.directory.studio.ldapbrowser.core.events.BrowserConnectionUpdateListener;
 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.events.SearchUpdateListener;
@@ -53,6 +56,7 @@
 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.SearchParameter;
+import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
 import org.apache.directory.studio.ldapbrowser.core.utils.LdifUtils;
 import org.eclipse.core.runtime.IPath;
 
@@ -63,7 +67,7 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class BrowserConnectionManager implements ConnectionUpdateListener, SearchUpdateListener, BookmarkUpdateListener
+public class BrowserConnectionManager implements ConnectionUpdateListener, BrowserConnectionUpdateListener, SearchUpdateListener, BookmarkUpdateListener
 {
 
     /** The list of connections. */
@@ -80,33 +84,34 @@
         ConnectionEventRegistry.addConnectionUpdateListener( this, ConnectionCorePlugin.getDefault().getEventRunner() );
         EventRegistry.addSearchUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
         EventRegistry.addBookmarkUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
+        EventRegistry.addBrowserConnectionUpdateListener( this, BrowserCorePlugin.getDefault().getEventRunner() );
     }
 
 
     /**
-     * Gets the Schema Cache filename for the corresponding Connection name.
+     * Gets the Schema Cache filename for the corresponding browser connection.
      *
-     * @param connectionName
-     *      the connection name
+     * @param browserConnection
+     *      the browser connection
      * @return
-     *      the Schema Cache filename for the corresponding Connection name
+     *      the Schema Cache filename for the corresponding browser connection
      */
-    public static final String getSchemaCacheFileName( String connectionName )
+    public static final String getSchemaCacheFileName( IBrowserConnection browserConnection )
     {
         return BrowserCorePlugin.getDefault().getStateLocation().append(
-            "schema-" + toSaveString( connectionName ) + ".ldif" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
+            "schema-" + toSaveString( browserConnection.getConnection().getId() ) + ".ldif" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
     }
 
 
     /**
-     * Gets the Modification Log filename for the corresponding Connection name.
+     * Gets the Modification Log filename for the corresponding browser connection.
      *
-     * @param connectionName
-     *      the connection name
+     * @param browserConnection
+     *      the browser connection
      * @return
      *      the Modification Log filename
      */
-    public static final String getModificationLogFileName( String connectionName )
+    public static final String getModificationLogFileName( IBrowserConnection browserConnection )
     {
         IPath p = BrowserCorePlugin.getDefault().getStateLocation().append( "logs" ); //$NON-NLS-1$
         File file = p.toFile();
@@ -114,7 +119,8 @@
         {
             file.mkdir();
         }
-        return p.append( "modifications-" + toSaveString( connectionName ) + "-%u-%g.ldiflog" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
+        return p
+            .append( "modifications-" + toSaveString( browserConnection.getConnection().getId() ) + "-%u-%g.ldiflog" ).toOSString(); //$NON-NLS-1$ //$NON-NLS-2$
     }
 
 
@@ -203,20 +209,6 @@
     }
 
 
-//    /**
-//     * Gets a connection from its name.
-//     *
-//     * @param name
-//     *      the name of the Connection
-//     * @return
-//     *      the corresponding IConnection
-//     */
-//    public IBrowserConnection getConnectionByName( String name )
-//    {
-//        return connectionMap.get( name );
-//    }
-    
-    
     /**
      * Gets a browser connection from its id.
      *
@@ -278,10 +270,10 @@
     public void connectionRemoved( Connection connection )
     {
         // update connection list
-        connectionMap.remove( connection.getId() );
+        IBrowserConnection browserConnection = connectionMap.remove( connection.getId() );
 
         // remove schema file
-        File schemaFile = new File( getSchemaCacheFileName( connection.getId() ) );
+        File schemaFile = new File( getSchemaCacheFileName( browserConnection ) );
         if ( schemaFile.exists() )
         {
             schemaFile.delete();
@@ -312,6 +304,7 @@
     public void connectionUpdated( Connection connection )
     {
         saveBrowserConnections();
+        saveSchema( getBrowserConnection( connection ) );
     }
 
 
@@ -330,6 +323,19 @@
     {
     }
 
+ 
+    /**
+     * @see org.apache.directory.studio.ldapbrowser.core.events.BrowserConnectionUpdateListener#browserConnectionUpdated(org.apache.directory.studio.ldapbrowser.core.events.BrowserConnectionUpdateEvent)
+     */
+    public void browserConnectionUpdated( BrowserConnectionUpdateEvent browserConnectionUpdateEvent )
+    {
+        if ( browserConnectionUpdateEvent.getDetail() == BrowserConnectionUpdateEvent.Detail.BROWSER_CONNECTION_OPENED
+            || browserConnectionUpdateEvent.getDetail() == BrowserConnectionUpdateEvent.Detail.SCHEMA_UPDATED )
+        {
+            saveSchema( browserConnectionUpdateEvent.getBrowserConnection() );
+        }
+    }
+
 
     /**
      * {@inheritDoc}
@@ -405,7 +411,7 @@
     {
         try
         {
-            String filename = getSchemaCacheFileName( connection.getConnection().getId() );
+            String filename = getSchemaCacheFileName( connection );
             FileWriter writer = new FileWriter( filename );
             connection.getSchema().saveToLdif( writer );
             writer.close();
@@ -428,22 +434,20 @@
             Connection connection = connections[i];
             BrowserConnection browserConnection = new BrowserConnection( connection );
             connectionMap.put( connection.getId(), browserConnection );
+            
+            try
+            {
+                String schemaFilename = getSchemaCacheFileName( browserConnection );
+                FileReader reader = new FileReader( schemaFilename );
+                Schema schema = new Schema();
+                schema.loadFromLdif( reader );
+                browserConnection.setSchema( schema );
+            }
+            catch ( Exception e )
+            {
+            }
         }
-
-        //        try
-        //        {
-        //            String schemaFilename = getSchemaCacheFileName( conn.getName() );
-        //            FileReader reader = new FileReader( schemaFilename );
-        //            Schema schema = new Schema();
-        //            schema.loadFromLdif( reader );
-        //            conn.setSchema( schema );
-        //        }
-        //        catch ( Exception e )
-        //        {
-        //        }
         
-//        connectionList.clear();
-//        
         try
         {
             Object[][] object = ( Object[][] ) this.load( getBrowserConnectionStoreFileName() );

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserCorePlugin.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserCorePlugin.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserCorePlugin.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserCorePlugin.java Thu Aug 30 15:13:30 2007
@@ -23,7 +23,6 @@
 
 import org.apache.directory.studio.ldapbrowser.core.events.CoreEventRunner;
 import org.apache.directory.studio.ldapbrowser.core.events.EventRunner;
-import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.IReferralHandler;
 import org.eclipse.core.runtime.Plugin;
 import org.osgi.framework.BundleContext;

Added: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateEvent.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateEvent.java?rev=571334&view=auto
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateEvent.java (added)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateEvent.java Thu Aug 30 15:13:30 2007
@@ -0,0 +1,92 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+
+package org.apache.directory.studio.ldapbrowser.core.events;
+
+
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+
+
+/**
+ * An BrowserConnectionUpdateEvent indicates that an {@link IBrowserConnection} was modified.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class BrowserConnectionUpdateEvent
+{
+
+    /**
+     * Contains constants to specify the event detail.
+     */
+    public enum Detail
+    {
+        /** Indicates that the browser connection was opened. */
+        BROWSER_CONNECTION_OPENED,
+
+        /** Indicates that the browser connection was closed. */
+        BROWSER_CONNECTION_CLOSED,
+
+        /** Indicates that the schema was updated. */
+        SCHEMA_UPDATED
+    }
+
+    /** The event detail. */
+    private Detail detail;
+
+    /** The updated browser connection. */
+    private IBrowserConnection browserConnection;
+
+
+    /**
+     * Creates a new instance of BrowserConnectionUpdateEvent.
+     *
+     * @param browserConnection the updated browser connection
+     * @param detail the event detail
+     */
+    public BrowserConnectionUpdateEvent( IBrowserConnection browserConnection, Detail detail )
+    {
+        this.browserConnection = browserConnection;
+        this.detail = detail;
+    }
+
+
+    /**
+     * Gets the updated browser connection.
+     *
+     * @return the updated browser connection
+     */
+    public IBrowserConnection getBrowserConnection()
+    {
+        return browserConnection;
+    }
+
+
+    /**
+     * Gets the event detail.
+     *
+     * @return the event detail
+     */
+    public Detail getDetail()
+    {
+        return detail;
+    }
+
+}

Added: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateListener.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateListener.java?rev=571334&view=auto
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateListener.java (added)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/BrowserConnectionUpdateListener.java Thu Aug 30 15:13:30 2007
@@ -0,0 +1,45 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ *
+ */
+
+package org.apache.directory.studio.ldapbrowser.core.events;
+
+
+import java.util.EventListener;
+
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+
+
+/**
+ * A listener for {@link BrowserConnectionUpdateEvent}s
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public interface BrowserConnectionUpdateListener extends EventListener
+{
+
+    /**
+     * Called when an {@link IBrowserConnection} was updated.
+     *
+     * @param browserConnectionUpdateEvent the browser connection update event
+     */
+    public void browserConnectionUpdated( BrowserConnectionUpdateEvent browserConnectionUpdateEvent );
+
+}

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java Thu Aug 30 15:13:30 2007
@@ -218,10 +218,82 @@
     }
 
     /** The map with entry update listeners and their runners */
-    private static Map<EntryUpdateListener, EventRunner> entryUpdateListeners = new HashMap<EntryUpdateListener, EventRunner>();
+    private static Map<BrowserConnectionUpdateListener, EventRunner> browserConnectionUpdateListeners = new HashMap<BrowserConnectionUpdateListener, EventRunner>();
+
+
+    /**
+     * Adds the browser connection update listener.
+     *
+     * @param listener the listener
+     * @param runner the runner
+     */
+    public static void addBrowserConnectionUpdateListener( BrowserConnectionUpdateListener listener, EventRunner runner )
+    {
+        assert listener != null;
+        assert runner != null;
+
+        if ( !browserConnectionUpdateListeners.containsKey( listener ) )
+        {
+            browserConnectionUpdateListeners.put( listener, runner );
+        }
+    }
+
+
+    /**
+     * Removes the browser connection update listener.
+     *
+     * @param listener the listener
+     */
+    public static void removeBrowserConnectionpdateListener( BrowserConnectionUpdateListener listener )
+    {
+        if ( browserConnectionUpdateListeners.containsKey( listener ) )
+        {
+            browserConnectionUpdateListeners.remove( listener );
+        }
+    }
 
 
     /**
+     * Notifies each {@link BrowserConnectionUpdateListener} about the the given {@link BrowserConnectionUpdateEvent}.
+     * Uses the {@link EventRunner}s.
+     *
+     * @param browserConnectionUpdateEvent the browser connection update event
+     * @param source the source
+     */
+    public static void fireBrowserConnectionUpdated( final BrowserConnectionUpdateEvent browserConnectionUpdateEvent,
+        final Object source )
+    {
+        if( isEventFireingSuspendedInCurrentThread() )
+        {
+            return;
+        }
+
+        Iterator<BrowserConnectionUpdateListener> it = browserConnectionUpdateListeners.keySet().iterator();
+        while( it.hasNext() )
+        {
+            final BrowserConnectionUpdateListener listener = it.next();
+            EventRunnable runnable = new EventRunnable()
+            {
+                public void run()
+                {
+                    listener.browserConnectionUpdated( browserConnectionUpdateEvent );
+                }
+            };
+
+            EventRunner runner = browserConnectionUpdateListeners.get( listener );
+            synchronized( lock )
+            {
+                runner.execute( runnable );
+            }
+        }
+    }
+
+
+    /** The map with entry update listeners and their runners */
+    private static Map<EntryUpdateListener, EventRunner> entryUpdateListeners = new HashMap<EntryUpdateListener, EventRunner>();
+    
+    
+    /**
      * Adds the entry update listener.
      *
      * @param listener the listener
@@ -231,14 +303,14 @@
     {
         assert listener != null;
         assert runner != null;
-
+        
         if ( !entryUpdateListeners.containsKey( listener ) )
         {
             entryUpdateListeners.put( listener, runner );
         }
     }
-
-
+    
+    
     /**
      * Removes the entry update listener.
      *
@@ -251,8 +323,8 @@
             entryUpdateListeners.remove( listener );
         }
     }
-
-
+    
+    
     /**
      * Notifies each {@link EntryUpdateListener} about the the given {@link EntryModificationEvent}.
      * Uses the {@link EventRunner}s.
@@ -266,7 +338,7 @@
         {
             return;
         }
-
+        
         Iterator<EntryUpdateListener> it = entryUpdateListeners.keySet().iterator();
         while( it.hasNext() )
         {
@@ -278,7 +350,7 @@
                     listener.entryUpdated( entryUpdateEvent );
                 }
             };
-
+            
             EventRunner runner = entryUpdateListeners.get( listener );
             synchronized( lock )
             {
@@ -286,6 +358,6 @@
             }
         }
     }
-
-
+    
+    
 }

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/AbstractEntry.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/AbstractEntry.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/AbstractEntry.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/AbstractEntry.java Thu Aug 30 15:13:30 2007
@@ -30,8 +30,6 @@
 import java.util.Map;
 
 import org.apache.directory.studio.connection.core.Connection;
-import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
-import org.apache.directory.studio.connection.core.event.EventRunner;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.events.AttributeAddedEvent;
 import org.apache.directory.studio.ldapbrowser.core.events.AttributeDeletedEvent;

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/BrowserConnection.java Thu Aug 30 15:13:30 2007
@@ -39,7 +39,10 @@
 import org.apache.directory.studio.ldapbrowser.core.BookmarkManager;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 import org.apache.directory.studio.ldapbrowser.core.SearchManager;
+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.internal.search.LdapSearchPageScoreComputer;
+import org.apache.directory.studio.ldapbrowser.core.jobs.InitializeAttributesJob;
 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;
@@ -150,7 +153,7 @@
      */
     public void reloadSchema( StudioProgressMonitor monitor )
     {
-        fetchRootDSE( monitor );
+        InitializeAttributesJob.initializeAttributes( getRootDSE(), true, monitor );
         
         monitor.reportProgress( BrowserCoreMessages.model__loading_schema );
         loadSchema( monitor );
@@ -1034,6 +1037,9 @@
         if(this.connection == connection)
         {
             new OpenBrowserConnectionsJob( this ).execute();
+            BrowserConnectionUpdateEvent browserConnectionUpdateEvent = new BrowserConnectionUpdateEvent( this,
+                BrowserConnectionUpdateEvent.Detail.BROWSER_CONNECTION_OPENED );
+            EventRegistry.fireBrowserConnectionUpdated( browserConnectionUpdateEvent , this );
         }
     }
     public void connectionClosed( org.apache.directory.studio.connection.core.Connection connection )
@@ -1041,6 +1047,9 @@
         if(this.connection == connection)
         {
             close();
+            BrowserConnectionUpdateEvent browserConnectionUpdateEvent = new BrowserConnectionUpdateEvent( this,
+                BrowserConnectionUpdateEvent.Detail.BROWSER_CONNECTION_CLOSED );
+            EventRegistry.fireBrowserConnectionUpdated( browserConnectionUpdateEvent , this );
         }
     }
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/JNDIConnectionProvider.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/JNDIConnectionProvider.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/JNDIConnectionProvider.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/JNDIConnectionProvider.java Thu Aug 30 15:13:30 2007
@@ -42,10 +42,7 @@
 import javax.naming.ldap.Control;
 
 import org.apache.directory.studio.connection.core.Connection;
-import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
-import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
-import org.apache.directory.studio.connection.core.ConnectionParameter.EncryptionMethod;
 import org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreConstants;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ModificationLogger.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ModificationLogger.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ModificationLogger.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/internal/model/ModificationLogger.java Thu Aug 30 15:13:30 2007
@@ -55,7 +55,7 @@
         this.logger = Logger.getAnonymousLogger();
         this.logger.setLevel( Level.ALL );
 
-        String logfileName = BrowserConnectionManager.getModificationLogFileName( connection.getName() );
+        String logfileName = BrowserConnectionManager.getModificationLogFileName( connection );
         try
         {
             fileHandler = new FileHandler( logfileName, 100000, 10, true );

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=571334&r1=571333&r2=571334&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 Thu Aug 30 15:13:30 2007
@@ -26,7 +26,6 @@
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
-import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 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;

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=571334&r1=571333&r2=571334&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 Thu Aug 30 15:13:30 2007
@@ -21,10 +21,6 @@
 package org.apache.directory.studio.ldapbrowser.core.jobs;
 
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/FetchBaseDNsJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/FetchBaseDNsJob.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/FetchBaseDNsJob.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/FetchBaseDNsJob.java Thu Aug 30 15:13:30 2007
@@ -27,10 +27,8 @@
 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.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;
 
 

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=571334&r1=571333&r2=571334&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 Thu Aug 30 15:13:30 2007
@@ -27,7 +27,10 @@
 
 import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.connection.core.StudioProgressMonitor;
+import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 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.IBrowserConnection;
 
 
@@ -82,11 +85,11 @@
 
     protected void runNotification()
     {
-        for ( int i = 0; i < browserConnections.length; i++ )
+        for ( IBrowserConnection browserConnection : browserConnections )
         {
-            // TODO: schema update event
-//            EventRegistry.fireConnectionUpdated( new ConnectionUpdateEvent( connections[i],
-//                ConnectionUpdateEvent.EventDetail.SCHEMA_LOADED ), this );
+            BrowserConnectionUpdateEvent browserConnectionUpdateEvent = new BrowserConnectionUpdateEvent(
+                browserConnection, BrowserConnectionUpdateEvent.Detail.SCHEMA_UPDATED );
+            EventRegistry.fireBrowserConnectionUpdated( browserConnectionUpdateEvent, this );
         }
     }
 

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=571334&r1=571333&r2=571334&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 Thu Aug 30 15:13:30 2007
@@ -30,7 +30,6 @@
 import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages;
 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.IBrowserConnection;
 import org.apache.directory.studio.ldapbrowser.core.model.ISearch;
 
 

Modified: directory/studio/trunk/studio-ldapbrowser-core/src/test/java/org/apache/directory/studio/ldapbrowser/core/model/PasswordTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-core/src/test/java/org/apache/directory/studio/ldapbrowser/core/model/PasswordTest.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-core/src/test/java/org/apache/directory/studio/ldapbrowser/core/model/PasswordTest.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-core/src/test/java/org/apache/directory/studio/ldapbrowser/core/model/PasswordTest.java Thu Aug 30 15:13:30 2007
@@ -20,8 +20,6 @@
 
 package org.apache.directory.studio.ldapbrowser.core.model;
 
-import org.apache.directory.studio.ldapbrowser.core.model.Password;
-
 import junit.framework.TestCase;
 
 /**

Modified: directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/RootDSEPropertyPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/RootDSEPropertyPage.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/RootDSEPropertyPage.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/RootDSEPropertyPage.java Thu Aug 30 15:13:30 2007
@@ -27,8 +27,11 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+import org.apache.directory.studio.connection.core.Connection;
 import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
 import org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.EntryEditorWidgetTableMetadata;
+import org.apache.directory.studio.ldapbrowser.core.BrowserConnectionManager;
+import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin;
 import org.apache.directory.studio.ldapbrowser.core.internal.model.RootDSE;
 import org.apache.directory.studio.ldapbrowser.core.model.IAttribute;
 import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
@@ -102,12 +105,17 @@
     
     static IBrowserConnection getConnection( Object element )
     {
-        IBrowserConnection connection = null;
+        IBrowserConnection browserConnection = null;
         if ( element instanceof IAdaptable )
         {
-            connection = ( IBrowserConnection ) ( ( IAdaptable ) element ).getAdapter( IBrowserConnection.class );
+            browserConnection = ( IBrowserConnection ) ( ( IAdaptable ) element ).getAdapter( IBrowserConnection.class );
+            if(browserConnection == null)
+            {
+                Connection connection = ( Connection ) ( ( IAdaptable ) element ).getAdapter( Connection.class );
+                browserConnection = BrowserCorePlugin.getDefault().getConnectionManager().getBrowserConnection( connection );
+            }
         }
-        return connection;
+        return browserConnection;
     }
 
 

Modified: directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/SchemaPropertyPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/SchemaPropertyPage.java?rev=571334&r1=571333&r2=571334&view=diff
==============================================================================
--- directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/SchemaPropertyPage.java (original)
+++ directory/studio/trunk/studio-ldapbrowser-ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/dialogs/properties/SchemaPropertyPage.java Thu Aug 30 15:13:30 2007
@@ -188,7 +188,7 @@
 
             if ( connection != null )
             {
-                String cacheFileName = BrowserConnectionManager.getSchemaCacheFileName( connection.getName() );
+                String cacheFileName = BrowserConnectionManager.getSchemaCacheFileName( connection );
                 File cacheFile = new File( cacheFileName );
                 if ( cacheFile.exists() )
                 {