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 2009/10/23 07:38:45 UTC

svn commit: r828937 - in /directory/studio/trunk: connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/ ldapbrowser-core/src/main/java/org/apac...

Author: seelmann
Date: Fri Oct 23 05:38:44 2009
New Revision: 828937

URL: http://svn.apache.org/viewvc?rev=828937&view=rev
Log:
DIRSTUDIO-409 (No error message in some special case)
o Better handling when canceling the selection of referral connection

Modified:
    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/StudioProgressMonitor.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryRunnable.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
    directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/UpdateEntryRunnable.java

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=828937&r1=828936&r2=828937&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 Fri Oct 23 05:38:44 2009
@@ -403,6 +403,10 @@
             return null;
         }
 
+        if ( runnable.isCanceled() )
+        {
+            monitor.setCanceled( true );
+        }
         if ( runnable.getException() != null )
         {
             monitor.reportError( runnable.getException() );
@@ -461,12 +465,14 @@
                             Connection referralConnection = getReferralConnection( referral, monitor, this );
                             if ( referralConnection != null )
                             {
-                                String referralDn = referral.getDn() != null && !referral.getDn().isEmpty() ? referral
-                                    .getDn().getUpName() : dn;
-
+                                String referralDn = referral.getLdapURLs().get( 0 ).getDn().getUpName();
                                 referralConnection.getJNDIConnectionWrapper().modifyEntry( referralDn,
                                     modificationItems, controls, monitor, newReferralsInfo );
                             }
+                            else
+                            {
+                                canceled = true;
+                            }
                         }
 
                         return;
@@ -500,6 +506,10 @@
             monitor.reportError( ne );
         }
 
+        if ( runnable.isCanceled() )
+        {
+            monitor.setCanceled( true );
+        }
         if ( runnable.getException() != null )
         {
             monitor.reportError( runnable.getException() );
@@ -567,6 +577,10 @@
                                 referralConnection.getJNDIConnectionWrapper().renameEntry( oldDn, newDn, deleteOldRdn,
                                     controls, monitor, newReferralsInfo );
                             }
+                            else
+                            {
+                                canceled = true;
+                            }
                         }
                     }
                     catch ( NamingException ne )
@@ -598,6 +612,10 @@
             monitor.reportError( ne );
         }
 
+        if ( runnable.isCanceled() )
+        {
+            monitor.setCanceled( true );
+        }
         if ( runnable.getException() != null )
         {
             monitor.reportError( runnable.getException() );
@@ -651,12 +669,14 @@
                             Connection referralConnection = getReferralConnection( referral, monitor, this );
                             if ( referralConnection != null )
                             {
-                                String referralDn = referral.getDn() != null && !referral.getDn().isEmpty() ? referral
-                                    .getDn().getUpName() : dn;
-
+                                String referralDn = referral.getLdapURLs().get( 0 ).getDn().getUpName();
                                 referralConnection.getJNDIConnectionWrapper().createEntry( referralDn, attributes,
                                     controls, monitor, newReferralsInfo );
                             }
+                            else
+                            {
+                                canceled = true;
+                            }
                         }
                     }
                     catch ( NamingException ne )
@@ -688,6 +708,10 @@
             monitor.reportError( ne );
         }
 
+        if ( runnable.isCanceled() )
+        {
+            monitor.setCanceled( true );
+        }
         if ( runnable.getException() != null )
         {
             monitor.reportError( runnable.getException() );
@@ -740,12 +764,14 @@
                             Connection referralConnection = getReferralConnection( referral, monitor, this );
                             if ( referralConnection != null )
                             {
-                                String referralDn = referral.getDn() != null && !referral.getDn().isEmpty() ? referral
-                                    .getDn().getUpName() : dn;
-
+                                String referralDn = referral.getLdapURLs().get( 0 ).getDn().getUpName();
                                 referralConnection.getJNDIConnectionWrapper().deleteEntry( referralDn, controls,
                                     monitor, newReferralsInfo );
                             }
+                            else
+                            {
+                                canceled = true;
+                            }
                         }
                     }
                     catch ( NamingException ne )
@@ -777,6 +803,10 @@
             monitor.reportError( ne );
         }
 
+        if ( runnable.isCanceled() )
+        {
+            monitor.setCanceled( true );
+        }
         if ( runnable.getException() != null )
         {
             monitor.reportError( runnable.getException() );
@@ -1329,6 +1359,7 @@
     {
         protected StudioNamingEnumeration namingEnumeration = null;
         protected NamingException namingException = null;
+        protected boolean canceled = false;
 
 
         /**
@@ -1354,12 +1385,24 @@
 
 
         /**
+         * Checks if is canceled.
+         * 
+         * @return true, if is canceled
+         */
+        public boolean isCanceled()
+        {
+            return canceled;
+        }
+
+
+        /**
          * Reset.
          */
         public void reset()
         {
             namingEnumeration = null;
             namingException = null;
+            canceled = false;
         }
     }
 

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioProgressMonitor.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioProgressMonitor.java?rev=828937&r1=828936&r2=828937&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioProgressMonitor.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/jobs/StudioProgressMonitor.java Fri Oct 23 05:38:44 2009
@@ -355,6 +355,10 @@
 
             return multiStatus;
         }
+        else if(isCanceled())
+        {
+            return Status.CANCEL_STATUS;
+        }
         else
         {
             return Status.OK_STATUS;

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryRunnable.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryRunnable.java?rev=828937&r1=828936&r2=828937&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryRunnable.java (original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/CreateEntryRunnable.java Fri Oct 23 05:38:44 2009
@@ -116,7 +116,7 @@
 
         createEntry( browserConnection, entryToCreate, monitor );
 
-        if ( !monitor.errorsReported() )
+        if ( !monitor.errorsReported() && !monitor.isCanceled() )
         {
             List<StudioControl> controls = new ArrayList<StudioControl>();
             if ( entryToCreate.isReferral() )
@@ -124,23 +124,33 @@
                 controls.add( StudioControl.MANAGEDSAIT_CONTROL );
             }
 
-            createdEntry = ReadEntryRunnable.getEntry( browserConnection, entryToCreate.getDn(), controls, monitor );
-            createdEntry.setHasChildrenHint( false );
-
-            // set some flags at the parent
-            if ( createdEntry.hasParententry() )
+            // Here we try to read the created entry to be able to send the right event notification.
+            // In some cases this don't work:
+            // - if there was a referral and the entry was created on another (master) server and not yet sync'ed to the current server
+            // So we use a dummy monitor to no bother the user with an error message.
+            StudioProgressMonitor dummyMonitor = new StudioProgressMonitor( monitor );
+            createdEntry = ReadEntryRunnable
+                .getEntry( browserConnection, entryToCreate.getDn(), controls, dummyMonitor );
+            dummyMonitor.done();
+            if ( createdEntry != null )
             {
-                if ( createdEntry.isAlias() )
-                {
-                    createdEntry.getParententry().setFetchAliases( true );
-                }
-                if ( createdEntry.isReferral() )
-                {
-                    createdEntry.getParententry().setFetchReferrals( true );
-                }
-                if ( createdEntry.isSubentry() )
+                createdEntry.setHasChildrenHint( false );
+
+                // set some flags at the parent
+                if ( createdEntry.hasParententry() )
                 {
-                    createdEntry.getParententry().setFetchSubentries( true );
+                    if ( createdEntry.isAlias() )
+                    {
+                        createdEntry.getParententry().setFetchAliases( true );
+                    }
+                    if ( createdEntry.isReferral() )
+                    {
+                        createdEntry.getParententry().setFetchReferrals( true );
+                    }
+                    if ( createdEntry.isSubentry() )
+                    {
+                        createdEntry.getParententry().setFetchSubentries( true );
+                    }
                 }
             }
         }

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java?rev=828937&r1=828936&r2=828937&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java (original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/DeleteEntriesJob.java Fri Oct 23 05:38:44 2009
@@ -190,10 +190,10 @@
                             }
                         }
                     }
-                }
 
-                // delete from cache
-                browserConnection.uncacheEntryRecursive( entryToDelete );
+                    // delete from cache
+                    browserConnection.uncacheEntryRecursive( entryToDelete );
+                }
             }
             else
             {

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java?rev=828937&r1=828936&r2=828937&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java (original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/RenameEntryJob.java Fri Oct 23 05:38:44 2009
@@ -141,7 +141,7 @@
         renameEntry( browserConnection, oldEntry, newDn, dummyMonitor );
 
         // do a simulated rename, if renaming of a non-leaf entry is not supported.
-        if ( dummyMonitor.errorsReported() )
+        if ( dummyMonitor.errorsReported() && !monitor.isCanceled() )
         {
             if ( dialog != null && dummyMonitor.getException() instanceof ContextNotEmptyException )
             {
@@ -182,7 +182,7 @@
         }
 
         // update model
-        if ( !monitor.errorsReported() )
+        if ( !monitor.errorsReported() && !monitor.isCanceled() )
         {
             // uncache old entry
             browserConnection.uncacheEntryRecursive( oldEntry );
@@ -191,13 +191,24 @@
             IEntry parent = oldEntry.getParententry();
             boolean hasMoreChildren = parent.hasMoreChildren();
             parent.deleteChild( oldEntry );
+
             List<StudioControl> controls = new ArrayList<StudioControl>();
             if ( oldEntry.isReferral() )
             {
                 controls.add( StudioControl.MANAGEDSAIT_CONTROL );
             }
-            newEntry = ReadEntryRunnable.getEntry( browserConnection, newDn, controls, monitor );
-            parent.addChild( newEntry );
+
+            // Here we try to read the renamed entry to be able to send the right event notification.
+            // In some cases this don't work:
+            // - if there was a referral and the entry was created on another (master) server and not yet sync'ed to the current server
+            // So we use a dummy monitor to no bother the user with an error message.
+            dummyMonitor.reset();
+            newEntry = ReadEntryRunnable.getEntry( browserConnection, newDn, controls, dummyMonitor );
+            dummyMonitor.done();
+            if ( newEntry != null )
+            {
+                parent.addChild( newEntry );
+            }
             parent.setHasMoreChildren( hasMoreChildren );
 
             // reset searches, if the renamed entry is a result of a search

Modified: directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/UpdateEntryRunnable.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/UpdateEntryRunnable.java?rev=828937&r1=828936&r2=828937&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/UpdateEntryRunnable.java (original)
+++ directory/studio/trunk/ldapbrowser-core/src/main/java/org/apache/directory/studio/ldapbrowser/core/jobs/UpdateEntryRunnable.java Fri Oct 23 05:38:44 2009
@@ -56,6 +56,11 @@
     public void run( StudioProgressMonitor monitor )
     {
         super.run( monitor );
+        if ( monitor.isCanceled() )
+        {
+            // update attributes in any case, because the attributes are not initialized
+            monitor.setCanceled( false );
+        }
         InitializeAttributesRunnable.initializeAttributes( entry, monitor );
     }