directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From seelm...@apache.org
Subject svn commit: r774686 - in /directory/studio/trunk: connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ connection-core/src/main/java/org/apac...
Date Thu, 14 May 2009 08:41:56 GMT
Author: seelmann
Date: Thu May 14 08:41:55 2009
New Revision: 774686

URL: http://svn.apache.org/viewvc?rev=774686&view=rev
Log:
Fix for DIRSTUDIO-489 (LDIF Import very slow)

Added:
    directory/studio/trunk/test-integration-ui/src/main/resources/org/apache/directory/studio/test/integration/ui/ImportExportTest_ImportDontUpdateUI.ldif
Modified:
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ConnectionEventRegistry.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioConnectionJob.java
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/RunnableContextRunner.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/MultivaluedDialog.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/EditEntryWizard.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryAttributesWizardPage.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryDnWizardPage.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryObjectclassWizardPage.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryTypeWizardPage.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionListener.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractNotificationJob.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/StudioBrowserJob.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/ModelConverter.java
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ConnectionEventRegistry.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ConnectionEventRegistry.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ConnectionEventRegistry.java
(original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/event/ConnectionEventRegistry.java
Thu May 14 08:41:55 2009
@@ -21,14 +21,18 @@
 package org.apache.directory.studio.connection.core.event;
 
 
+import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.ConnectionCoreConstants;
+import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
 import org.apache.directory.studio.connection.core.ConnectionFolder;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 
 
 /**
@@ -41,39 +45,100 @@
 public class ConnectionEventRegistry
 {
 
-    /** The list of threads with suspended event fireing. */
-    private static Set<Thread> suspendedEventFireringThreads = new HashSet<Thread>();;
+    /** The list of threads with suspended event firing. */
+    private static List<Long> suspendedEventFiringThreads = new ArrayList<Long>();
 
-    /** The lock used to synchronize event fireings */
-    private static Object lock = new Object();
+    /** The lock used to synchronize event firings */
+    protected static Object lock = new Object();
+
+    /** The list with time stamps of recent event firings */
+    private static List<Long> fireTimeStamps = new ArrayList<Long>();
+
+    /** A counter for fired events */
+    private static long fireCount = 0L;
 
 
     /**
-     * Checks if event fireing is suspended in the current thread.
+     * Checks if event firing is suspended in the current thread.
      *
-     * @return true, if event fireing is suspended in the current thread
+     * @return true, if event firing is suspended in the current thread
+     */
+    protected static boolean isEventFiringSuspendedInCurrentThread()
+    {
+        boolean suspended = suspendedEventFiringThreads.contains( Thread.currentThread().getId()
);
+
+        // count the number of fired event in the last second
+        // if more then five per second: print a warning
+        if ( !suspended )
+        {
+            fireCount++;
+
+            synchronized ( fireTimeStamps )
+            {
+                long now = System.currentTimeMillis();
+
+                // remove all time stamps older than one second
+                for ( Iterator<Long> it = fireTimeStamps.iterator(); it.hasNext();
)
+                {
+                    Long ts = it.next();
+                    if ( ts + 1000 < now )
+                    {
+                        it.remove();
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+
+                fireTimeStamps.add( now );
+
+                if ( fireTimeStamps.size() > 5 )
+                {
+                    String message = "Warning: More then " + fireTimeStamps.size() + " events
were fired per second!";
+                    ConnectionCorePlugin.getDefault().getLog().log(
+                        new Status( IStatus.WARNING, ConnectionCoreConstants.PLUGIN_ID, message,
+                            new Exception( message ) ) );
+                }
+            }
+        }
+
+        return suspended;
+    }
+
+
+    /**
+     * Gets the number of fired events.
+     * 
+     * @return the number of fired events
      */
-    public static boolean isEventFireingSuspendedInCurrentThread()
+    public static long getFireCount()
     {
-        return suspendedEventFireringThreads.contains( Thread.currentThread() );
+        return fireCount;
     }
 
 
     /**
-     * Resumes event fireing in the current thread.
+     * Resumes event firing in the current thread.
      */
-    public static void resumeEventFireingInCurrentThread()
+    public static void resumeEventFiringInCurrentThread()
     {
-        suspendedEventFireringThreads.remove( Thread.currentThread() );
+        synchronized ( suspendedEventFiringThreads )
+        {
+            suspendedEventFiringThreads.remove( Thread.currentThread().getId() );
+        }
     }
 
 
     /**
-     * Suspends event fireing in the current thread.
+     * Suspends event firing in the current thread.
      */
-    public static void suspendEventFireingInCurrentThread()
+    public static void suspendEventFiringInCurrentThread()
     {
-        suspendedEventFireringThreads.add( Thread.currentThread() );
+        synchronized ( suspendedEventFiringThreads )
+        {
+            suspendedEventFiringThreads.add( Thread.currentThread().getId() );
+        }
     }
 
     /** The map with connection update listeners and their runners */
@@ -121,7 +186,7 @@
      */
     public static void fireConnectionOpened( final Connection connection, final Object source
)
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
@@ -158,7 +223,7 @@
      */
     public static void fireConnectionClosed( final Connection connection, final Object source
)
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
@@ -195,7 +260,7 @@
      */
     public static void fireConnectionUpdated( final Connection connection, final Object source
)
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
@@ -232,7 +297,7 @@
      */
     public static void fireConnectionAdded( final Connection connection, final Object source
)
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
@@ -269,7 +334,7 @@
      */
     public static void fireConnectionRemoved( final Connection connection, final Object source
)
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
@@ -295,8 +360,8 @@
             }
         }
     }
-    
-    
+
+
     /**
      * Notifies each {@link ConnectionUpdateListener} about the modified connection folder.
      * Uses the {@link EventRunner}s.
@@ -306,11 +371,11 @@
      */
     public static void fireConnectonFolderModified( final ConnectionFolder connectionFolder,
final Object source )
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
-        
+
         Map<ConnectionUpdateListener, EventRunner> listeners = new HashMap<ConnectionUpdateListener,
EventRunner>(
             connectionUpdateListeners );
         Iterator<ConnectionUpdateListener> it = listeners.keySet().iterator();
@@ -324,7 +389,7 @@
                     listener.connectionFolderModified( connectionFolder );
                 }
             };
-            
+
             EventRunner runner = listeners.get( listener );
             synchronized ( lock )
             {
@@ -332,6 +397,8 @@
             }
         }
     }
+
+
     /**
      * Notifies each {@link ConnectionUpdateListener} about the added connection folder.
      * Uses the {@link EventRunner}s.
@@ -341,11 +408,11 @@
      */
     public static void fireConnectonFolderAdded( final ConnectionFolder connectionFolder,
final Object source )
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
-        
+
         Map<ConnectionUpdateListener, EventRunner> listeners = new HashMap<ConnectionUpdateListener,
EventRunner>(
             connectionUpdateListeners );
         Iterator<ConnectionUpdateListener> it = listeners.keySet().iterator();
@@ -359,7 +426,7 @@
                     listener.connectionFolderAdded( connectionFolder );
                 }
             };
-            
+
             EventRunner runner = listeners.get( listener );
             synchronized ( lock )
             {
@@ -367,6 +434,8 @@
             }
         }
     }
+
+
     /**
      * Notifies each {@link ConnectionUpdateListener} about the removed connection folder.
      * Uses the {@link EventRunner}s.
@@ -376,11 +445,11 @@
      */
     public static void fireConnectonFolderRemoved( final ConnectionFolder connectionFolder,
final Object source )
     {
-        if ( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
-        
+
         Map<ConnectionUpdateListener, EventRunner> listeners = new HashMap<ConnectionUpdateListener,
EventRunner>(
             connectionUpdateListeners );
         Iterator<ConnectionUpdateListener> it = listeners.keySet().iterator();
@@ -394,7 +463,7 @@
                     listener.connectionFolderRemoved( connectionFolder );
                 }
             };
-            
+
             EventRunner runner = listeners.get( listener );
             synchronized ( lock )
             {

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
(original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
Thu May 14 08:41:55 2009
@@ -1077,7 +1077,7 @@
                 {
                     if ( monitor.isCanceled() )
                     {
-                        if ( jobThread.isAlive() )
+                        if ( jobThread != null && jobThread.isAlive() )
                         {
                             jobThread.interrupt();
                         }

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioConnectionJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioConnectionJob.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioConnectionJob.java
(original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioConnectionJob.java
Thu May 14 08:41:55 2009
@@ -166,7 +166,7 @@
      */
     protected void suspendEventFireingInCurrentThread()
     {
-        ConnectionEventRegistry.suspendEventFireingInCurrentThread();
+        ConnectionEventRegistry.suspendEventFiringInCurrentThread();
     }
 
 
@@ -175,7 +175,7 @@
      */
     protected void resumeEventFireingInCurrentThread()
     {
-        ConnectionEventRegistry.resumeEventFireingInCurrentThread();
+        ConnectionEventRegistry.resumeEventFiringInCurrentThread();
     }
 
 

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/RunnableContextRunner.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/RunnableContextRunner.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/RunnableContextRunner.java
(original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/RunnableContextRunner.java
Thu May 14 08:41:55 2009
@@ -108,14 +108,14 @@
                         if ( runnable instanceof StudioBulkRunnableWithProgress )
                         {
                             StudioBulkRunnableWithProgress bulkRunnable = ( StudioBulkRunnableWithProgress
) runnable;
-                            ConnectionEventRegistry.suspendEventFireingInCurrentThread();
+                            ConnectionEventRegistry.suspendEventFiringInCurrentThread();
                             try
                             {
                                 bulkRunnable.run( spm[0] );
                             }
                             finally
                             {
-                                ConnectionEventRegistry.resumeEventFireingInCurrentThread();
+                                ConnectionEventRegistry.resumeEventFiringInCurrentThread();
                             }
                             bulkRunnable.runNotification();
                         }

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/MultivaluedDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/MultivaluedDialog.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/MultivaluedDialog.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/MultivaluedDialog.java
Thu May 14 08:41:55 2009
@@ -317,11 +317,11 @@
             attributeHierarchie = entry.getAttributeWithSubtypes( attributeDescription );
             if ( attributeHierarchie == null )
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
                 IAttribute attribute = new Attribute( entry, attributeDescription );
                 entry.addAttribute( attribute );
                 attribute.addEmptyValue();
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
                 attributeHierarchie = entry.getAttributeWithSubtypes( attributeDescription
);
             }
             viewer.setInput( attributeHierarchie );

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/EditEntryWizard.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/EditEntryWizard.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/EditEntryWizard.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/EditEntryWizard.java
Thu May 14 08:41:55 2009
@@ -75,7 +75,7 @@
 
         try
         {
-            EventRegistry.suspendEventFireingInCurrentThread();
+            EventRegistry.suspendEventFiringInCurrentThread();
             LdifContentRecord record = ModelConverter.entryToLdifContentRecord( selectedEntry
);
             prototypeEntry = ModelConverter.ldifContentRecordToEntry( record, selectedConnection
);
         }
@@ -85,7 +85,7 @@
         }
         finally
         {
-            EventRegistry.resumeEventFireingInCurrentThread();
+            EventRegistry.resumeEventFiringInCurrentThread();
         }
     }
 

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryAttributesWizardPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryAttributesWizardPage.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryAttributesWizardPage.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryAttributesWizardPage.java
Thu May 14 08:41:55 2009
@@ -181,7 +181,7 @@
             DummyEntry newEntry = wizard.getPrototypeEntry();
             try
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
 
                 // remove empty must attributes
                 // necessary when navigating back, modifying object classes
@@ -222,7 +222,7 @@
             }
             finally
             {
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
             }
 
             // set the input

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryDnWizardPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryDnWizardPage.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryDnWizardPage.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryDnWizardPage.java
Thu May 14 08:41:55 2009
@@ -216,7 +216,7 @@
 
         try
         {
-            EventRegistry.suspendEventFireingInCurrentThread();
+            EventRegistry.suspendEventFiringInCurrentThread();
 
             // remove old RDN
             if ( newEntry.getRdn().size() > 0 )
@@ -293,7 +293,7 @@
         }
         finally
         {
-            EventRegistry.resumeEventFireingInCurrentThread();
+            EventRegistry.resumeEventFiringInCurrentThread();
         }
     }
 

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryObjectclassWizardPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryObjectclassWizardPage.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryObjectclassWizardPage.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryObjectclassWizardPage.java
Thu May 14 08:41:55 2009
@@ -255,7 +255,7 @@
 
         try
         {
-            EventRegistry.suspendEventFireingInCurrentThread();
+            EventRegistry.suspendEventFiringInCurrentThread();
 
             // set new objectClass values
             IAttribute ocAttribute = newEntry.getAttribute( SchemaConstants.OBJECT_CLASS_AT
);
@@ -276,7 +276,7 @@
         }
         finally
         {
-            EventRegistry.resumeEventFireingInCurrentThread();
+            EventRegistry.resumeEventFiringInCurrentThread();
         }
     }
 

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryTypeWizardPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryTypeWizardPage.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryTypeWizardPage.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/wizards/NewEntryTypeWizardPage.java
Thu May 14 08:41:55 2009
@@ -195,7 +195,7 @@
             // clone entry and remove non-modifiable attributes
             try
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
 
                 LdifContentRecord record = ModelConverter.entryToLdifContentRecord( templateEntries[0]
);
                 DummyEntry prototypeEntry = ModelConverter.ldifContentRecordToEntry( record,
browserConnection );
@@ -215,7 +215,7 @@
             }
             finally
             {
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
             }
         }
         else

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
(original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/valueeditors/ValueEditorManager.java
Thu May 14 08:41:55 2009
@@ -622,10 +622,10 @@
             }
             else
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
                 IAttribute attribute = new Attribute( entry, attributeDescription );
                 entry.addAttribute( attribute );
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
 
                 Object newValue;
                 if ( SchemaUtils.isString( entry.getBrowserConnection().getSchema().getAttributeTypeDescription(
@@ -694,9 +694,9 @@
         {
             if ( oldValue.isEmpty() )
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
                 attribute.deleteEmptyValue();
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
                 new CreateValuesJob( attribute, newRawValue ).execute();
             }
             else

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionListener.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionListener.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionListener.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/BrowserConnectionListener.java
Thu May 14 08:41:55 2009
@@ -61,13 +61,13 @@
         {
             try
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
                 openBrowserConnection( browserConnection, monitor );
                 setBinaryAttributes( browserConnection, monitor );
             }
             finally
             {
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
                 BrowserConnectionUpdateEvent browserConnectionUpdateEvent = new BrowserConnectionUpdateEvent(
                     browserConnection, BrowserConnectionUpdateEvent.Detail.BROWSER_CONNECTION_OPENED
);
                 EventRegistry.fireBrowserConnectionUpdated( browserConnectionUpdateEvent,
this );
@@ -90,12 +90,12 @@
         {
             try
             {
-                EventRegistry.suspendEventFireingInCurrentThread();
+                EventRegistry.suspendEventFiringInCurrentThread();
                 browserConnection.clearCaches();
             }
             finally
             {
-                EventRegistry.resumeEventFireingInCurrentThread();
+                EventRegistry.resumeEventFiringInCurrentThread();
                 BrowserConnectionUpdateEvent browserConnectionUpdateEvent = new BrowserConnectionUpdateEvent(
                     browserConnection, BrowserConnectionUpdateEvent.Detail.BROWSER_CONNECTION_CLOSED
);
                 EventRegistry.fireBrowserConnectionUpdated( browserConnectionUpdateEvent,
this );

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/events/EventRegistry.java
Thu May 14 08:41:55 2009
@@ -22,10 +22,8 @@
 
 
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 
@@ -37,47 +35,9 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class EventRegistry
+public class EventRegistry extends ConnectionEventRegistry
 {
 
-    /** The list of threads with suspended event fireing. */
-    private static Set<Thread> suspendedEventFireringThreads = new HashSet<Thread>();;
-
-    /** The lock used to synchronize event fireings */
-    private static Object lock = new Object();
-
-
-    /**
-     * Checks if event fireing is suspended in the current thread.
-     *
-     * @return true, if event fireing is suspended in the current thread
-     */
-    public static boolean isEventFireingSuspendedInCurrentThread()
-    {
-        return suspendedEventFireringThreads.contains( Thread.currentThread() )
-            || ConnectionEventRegistry.isEventFireingSuspendedInCurrentThread();
-    }
-
-
-    /**
-     * Resumes event fireing in the current thread.
-     */
-    public static void resumeEventFireingInCurrentThread()
-    {
-        suspendedEventFireringThreads.remove( Thread.currentThread() );
-    }
-
-
-    /**
-     * Suspends event fireing in the current thread.
-     */
-    public static void suspendEventFireingInCurrentThread()
-    {
-        suspendedEventFireringThreads.add( Thread.currentThread() );
-    }
-
-
-
     /** The map with search update listeners and their runners */
     private static Map<SearchUpdateListener, EventRunner> searchUpdateListeners = new
HashMap<SearchUpdateListener, EventRunner>();
 
@@ -123,13 +83,13 @@
      */
     public static void fireSearchUpdated( final SearchUpdateEvent searchUpdateEvent, final
Object source )
     {
-        if( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
 
         Iterator<SearchUpdateListener> it = searchUpdateListeners.keySet().iterator();
-        while( it.hasNext() )
+        while ( it.hasNext() )
         {
             final SearchUpdateListener listener = it.next();
             EventRunnable runnable = new EventRunnable()
@@ -142,14 +102,13 @@
 
             EventRunner runner = searchUpdateListeners.get( listener );
 
-            synchronized( lock )
+            synchronized ( lock )
             {
                 runner.execute( runnable );
             }
         }
     }
 
-
     /** The map with bookmark update listeners and their runners */
     private static Map<BookmarkUpdateListener, EventRunner> bookmarkUpdateListeners
= new HashMap<BookmarkUpdateListener, EventRunner>();
 
@@ -195,13 +154,13 @@
      */
     public static void fireBookmarkUpdated( final BookmarkUpdateEvent bookmarkUpdateEvent,
final Object source )
     {
-        if( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
 
         Iterator<BookmarkUpdateListener> it = bookmarkUpdateListeners.keySet().iterator();
-        while( it.hasNext() )
+        while ( it.hasNext() )
         {
             final BookmarkUpdateListener listener = it.next();
             EventRunnable runnable = new EventRunnable()
@@ -213,7 +172,7 @@
             };
 
             EventRunner runner = bookmarkUpdateListeners.get( listener );
-            synchronized( lock )
+            synchronized ( lock )
             {
                 runner.execute( runnable );
             }
@@ -266,13 +225,13 @@
     public static void fireBrowserConnectionUpdated( final BrowserConnectionUpdateEvent browserConnectionUpdateEvent,
         final Object source )
     {
-        if( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
 
         Iterator<BrowserConnectionUpdateListener> it = browserConnectionUpdateListeners.keySet().iterator();
-        while( it.hasNext() )
+        while ( it.hasNext() )
         {
             final BrowserConnectionUpdateListener listener = it.next();
             EventRunnable runnable = new EventRunnable()
@@ -284,18 +243,17 @@
             };
 
             EventRunner runner = browserConnectionUpdateListeners.get( listener );
-            synchronized( lock )
+            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.
      *
@@ -306,14 +264,14 @@
     {
         assert listener != null;
         assert runner != null;
-        
+
         if ( !entryUpdateListeners.containsKey( listener ) )
         {
             entryUpdateListeners.put( listener, runner );
         }
     }
-    
-    
+
+
     /**
      * Removes the entry update listener.
      *
@@ -326,8 +284,8 @@
             entryUpdateListeners.remove( listener );
         }
     }
-    
-    
+
+
     /**
      * Notifies each {@link EntryUpdateListener} about the the given {@link EntryModificationEvent}.
      * Uses the {@link EventRunner}s.
@@ -337,13 +295,13 @@
      */
     public static void fireEntryUpdated( final EntryModificationEvent entryUpdateEvent, final
Object source )
     {
-        if( isEventFireingSuspendedInCurrentThread() )
+        if ( isEventFiringSuspendedInCurrentThread() )
         {
             return;
         }
-        
+
         Iterator<EntryUpdateListener> it = entryUpdateListeners.keySet().iterator();
-        while( it.hasNext() )
+        while ( it.hasNext() )
         {
             final EntryUpdateListener listener = it.next();
             EventRunnable runnable = new EventRunnable()
@@ -353,14 +311,13 @@
                     listener.entryUpdated( entryUpdateEvent );
                 }
             };
-            
+
             EventRunner runner = entryUpdateListeners.get( listener );
-            synchronized( lock )
+            synchronized ( lock )
             {
                 runner.execute( runnable );
             }
         }
     }
-    
-    
+
 }

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractNotificationJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractNotificationJob.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractNotificationJob.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/AbstractNotificationJob.java
Thu May 14 08:41:55 2009
@@ -36,7 +36,7 @@
 
     protected final void executeAsyncJob( StudioProgressMonitor pm )
     {
-        EventRegistry.suspendEventFireingInCurrentThread();
+        EventRegistry.suspendEventFiringInCurrentThread();
 
         try
         {
@@ -44,7 +44,7 @@
         }
         finally
         {
-            EventRegistry.resumeEventFireingInCurrentThread();
+            EventRegistry.resumeEventFiringInCurrentThread();
         }
 
         runNotification();

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/ImportLdifJob.java
Thu May 14 08:41:55 2009
@@ -338,6 +338,7 @@
                                 if ( parentEntry != null )
                                 {
                                     parentEntry.setChildrenInitialized( false );
+                                    parentEntry.setHasChildrenHint( true );
                                 }
                             }
                             else

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/StudioBrowserJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/StudioBrowserJob.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/StudioBrowserJob.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/StudioBrowserJob.java
Thu May 14 08:41:55 2009
@@ -35,14 +35,14 @@
     @Override
     protected void suspendEventFireingInCurrentThread()
     {
-        EventRegistry.suspendEventFireingInCurrentThread();
+        EventRegistry.suspendEventFiringInCurrentThread();
         super.suspendEventFireingInCurrentThread();
     }
     
     @Override
     protected void resumeEventFireingInCurrentThread()
     {
-        EventRegistry.resumeEventFireingInCurrentThread();
+        EventRegistry.resumeEventFiringInCurrentThread();
         super.resumeEventFireingInCurrentThread();
     }
 }

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/ModelConverter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/ModelConverter.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/ModelConverter.java
(original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/utils/ModelConverter.java
Thu May 14 08:41:55 2009
@@ -108,7 +108,7 @@
     {
         LdifPart[] parts = ldifRecord.getParts();
 
-        EventRegistry.suspendEventFireingInCurrentThread();
+        EventRegistry.suspendEventFiringInCurrentThread();
 
         DummyEntry entry = new DummyEntry( new LdapDN( ldifRecord.getDnLine().getValueAsString()
), connection );
 
@@ -138,7 +138,7 @@
             }
         }
 
-        EventRegistry.resumeEventFireingInCurrentThread();
+        EventRegistry.resumeEventFiringInCurrentThread();
 
         return entry;
     }

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java?rev=774686&r1=774685&r2=774686&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java
(original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java
Thu May 14 08:41:55 2009
@@ -22,13 +22,16 @@
 
 
 import java.io.File;
+import java.io.InputStream;
 import java.net.URL;
 import java.util.List;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.directory.server.core.partition.Partition;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition;
 import org.apache.directory.server.unit.AbstractServerTest;
+import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.swtbot.eclipse.finder.SWTEclipseBot;
 import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
@@ -336,4 +339,40 @@
         SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "dc=example,dc=com"
);
     }
 
+
+    /**
+     * Test for DIRSTUDIO-489.
+     * 
+     * Verify that there are no UI updates when importing an LDIF.
+     *
+     * @throws Exception
+     */
+    public void testImportDontUptateUI() throws Exception
+    {
+        URL url = Platform.getInstanceLocation().getURL();
+        String destFile = url.getFile() + "ImportDontUpdateUiTest.ldif";
+        InputStream is = getClass().getResourceAsStream( "ImportExportTest_ImportDontUpdateUI.ldif"
);
+        String ldifContent = IOUtils.toString( is );
+        FileUtils.writeStringToFile( new File( destFile ), ldifContent );
+
+        SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( eBot );
+        SWTBotUtils.selectEntry( eBot, browserTree, true, "DIT", "Root DSE", "ou=system",
"ou=users" );
+
+        long fireCount0 = EventRegistry.getFireCount();
+
+        // import the LDIF
+        browserTree.contextMenu( "LDIF Import..." ).click();
+        eBot.shell( "LDIF Import" );
+        eBot.comboBoxWithLabel( "LDIF File:" ).setText( destFile );
+        eBot.button( "Finish" ).click();
+
+        long fireCount1 = EventRegistry.getFireCount();
+
+        SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system",
"ou=users", "uid=User.1" );
+
+        // verify that only three two events were fired between Import 
+        long fireCount = fireCount1 - fireCount0;
+        assertEquals( "Only 2 event firings expected when importing LDIF.", 2, fireCount
);
+    }
+
 }

Added: directory/studio/trunk/test-integration-ui/src/main/resources/org/apache/directory/studio/test/integration/ui/ImportExportTest_ImportDontUpdateUI.ldif
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/resources/org/apache/directory/studio/test/integration/ui/ImportExportTest_ImportDontUpdateUI.ldif?rev=774686&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/resources/org/apache/directory/studio/test/integration/ui/ImportExportTest_ImportDontUpdateUI.ldif
(added)
+++ directory/studio/trunk/test-integration-ui/src/main/resources/org/apache/directory/studio/test/integration/ui/ImportExportTest_ImportDontUpdateUI.ldif
Thu May 14 08:41:55 2009
@@ -0,0 +1,199 @@
+dn: uid=User.1,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Aaccf
+sn: Amar
+cn: Aaccf Amar
+initials: AA
+uid: user.1
+mail: user.1@null
+userPassword: password
+telephoneNumber: 976-893-3312
+homePhone: 337-310-0727
+pager: 185-156-4071
+mobile: 626-188-0934
+employeeNumber: 1
+street: 27919 Broadway Street
+l: Tallahassee
+st: DE
+postalCode: 67698
+postalAddress: Aaccf Amar$27919 Broadway Street$Tallahassee, DE  67698
+description: This is the description for Aaccf Amar.
+roomNumber: 1388
+
+dn: uid=user.2,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Aaren
+sn: Atp
+cn: Aaren Atp
+initials: AA
+uid: user.2
+mail: user.2@null
+userPassword: password
+telephoneNumber: 147-953-0396
+homePhone: 174-439-5329
+pager: 617-443-8449
+mobile: 045-464-2512
+employeeNumber: 2
+street: 36109 Center Street
+l: Harlingen
+st: CO
+postalCode: 21733
+postalAddress: Aaren Atp$36109 Center Street$Harlingen, CO  21733
+description: This is the description for Aaren Atp.
+roomNumber: 1198
+
+dn: uid=user.3,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Aarika
+sn: Atpco
+cn: Aarika Atpco
+initials: AA
+uid: user.3
+mail: user.3@null
+userPassword: password
+telephoneNumber: 925-356-4943
+homePhone: 099-983-0308
+pager: 806-672-7363
+mobile: 425-493-8009
+employeeNumber: 3
+street: 14730 Fourteenth Street
+l: Evansville
+st: ND
+postalCode: 95526
+postalAddress: Aarika Atpco$14730 Fourteenth Street$Evansville, ND  95526
+description: This is the description for Aarika Atpco.
+roomNumber: 1135
+
+dn: uid=user.4,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Aaron
+sn: Atrc
+cn: Aaron Atrc
+initials: AA
+uid: user.4
+mail: user.4@null
+userPassword: password
+telephoneNumber: 696-981-0488
+homePhone: 854-401-1330
+pager: 389-028-9518
+mobile: 117-882-4912
+employeeNumber: 4
+street: 98495 Fifteenth Street
+l: Miami
+st: PA
+postalCode: 16887
+postalAddress: Aaron Atrc$98495 Fifteenth Street$Miami, PA  16887
+description: This is the description for Aaron Atrc.
+roomNumber: 1311
+
+dn: uid=user.5,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Aartjan
+sn: Aalders
+cn: Aartjan Aalders
+initials: AA
+uid: user.5
+mail: user.5@null
+userPassword: password
+telephoneNumber: 657-627-9753
+homePhone: 109-158-4533
+pager: 801-392-0010
+mobile: 763-973-0947
+employeeNumber: 5
+street: 52408 Ridge Street
+l: Omaha
+st: AR
+postalCode: 08015
+postalAddress: Aartjan Aalders$52408 Ridge Street$Omaha, AR  08015
+description: This is the description for Aartjan Aalders.
+roomNumber: 1090
+
+dn: uid=user.6,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Abagael
+sn: Aasen
+cn: Abagael Aasen
+initials: AA
+uid: user.6
+mail: user.6@null
+userPassword: password
+telephoneNumber: 600-556-9017
+homePhone: 543-731-7797
+pager: 349-743-6572
+mobile: 042-921-9717
+employeeNumber: 6
+street: 87514 Dogwood Street
+l: Bloomington
+st: ID
+postalCode: 56762
+postalAddress: Abagael Aasen$87514 Dogwood Street$Bloomington, ID  56762
+description: This is the description for Abagael Aasen.
+roomNumber: 1449
+
+dn: uid=user.7,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Abagail
+sn: Abadines
+cn: Abagail Abadines
+initials: AA
+uid: user.7
+mail: user.7@null
+userPassword: password
+telephoneNumber: 628-294-0713
+homePhone: 313-764-3970
+pager: 118-541-2978
+mobile: 111-360-9243
+employeeNumber: 7
+street: 60751 Main Street
+l: Macon
+st: MI
+postalCode: 38755
+postalAddress: Abagail Abadines$60751 Main Street$Macon, MI  38755
+description: This is the description for Abagail Abadines.
+roomNumber: 1312
+
+dn: uid=user.8,ou=users,ou=system
+objectClass: top
+objectClass: person
+objectClass: organizationalPerson
+objectClass: inetOrgPerson
+givenName: Abahri
+sn: Abazari
+cn: Abahri Abazari
+initials: AA
+uid: user.8
+mail: user.8@null
+userPassword: password
+telephoneNumber: 760-373-5805
+homePhone: 856-861-3648
+pager: 271-218-0027
+mobile: 957-465-6928
+employeeNumber: 8
+street: 81023 River Street
+l: Monroe
+st: SD
+postalCode: 51865
+postalAddress: Abahri Abazari$81023 River Street$Monroe, SD  51865
+description: This is the description for Abahri Abazari.
+roomNumber: 1963



Mime
View raw message