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 2008/07/13 18:53:57 UTC

svn commit: r676357 - in /directory/studio/trunk: ./ connection-core/src/main/java/org/apache/directory/studio/connection/core/ connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ connection-ui/src/main/java/org/apache/di...

Author: seelmann
Date: Sun Jul 13 09:53:55 2008
New Revision: 676357

URL: http://svn.apache.org/viewvc?rev=676357&view=rev
Log:
o Updated to SWTBot trunk because it provides new features
o Updated tests
o Added test for referral handling
o Fixed referral handling (DIRSTUDIO-343)
o Removed duplicate ExceptionHandler class
 


Added:
    directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.2.0.840/
    directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.2.0.840/finder-1.2.0.840.jar   (with props)
    directory/studio/trunk/repository/net/sf/swtbot/finder/1.2.0.840/
    directory/studio/trunk/repository/net/sf/swtbot/finder/1.2.0.840/finder-1.2.0.840.jar   (with props)
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.finder_1.2.0.840.jar   (with props)
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.spy_1.2.0.840.jar   (with props)
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.ui_1.2.0.840.jar   (with props)
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.finder_1.2.0.840.jar   (with props)
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ReferralDialogTest.java
Removed:
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/ExceptionHandler.java
    directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.0.0.574/
    directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/maven-metadata.xml
    directory/studio/trunk/repository/net/sf/swtbot/finder/1.0.0.574/
    directory/studio/trunk/repository/net/sf/swtbot/finder/maven-metadata.xml
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.finder_1.2.0.721-dev.jar
    directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.finder_1.2.0.721-dev.jar
Modified:
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ExceptionHandler.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/BrowserCommonActivator.java
    directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/HexDialog.java
    directory/studio/trunk/pom.xml
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/AutomatedSuite.java
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java
    directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java
    directory/studio/trunk/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java Sun Jul 13 09:53:55 2008
@@ -27,7 +27,9 @@
 import javax.naming.ldap.Control;
 
 import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
+import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo;
 import org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult;
+import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo.UrlAndDn;
 
 
 /**
@@ -170,6 +172,19 @@
 
 
     /**
+     * Logs a search result reference.
+     *
+     * @param connection the connection
+     * @param urlAndDn the first URL and DN
+     * @param referralsInfo the referrals info containing further URLs and DNs
+     * @param requestNum the request number
+     * @param the naming exception if an error occurred, null otherwise
+     */
+    public void logSearchResultReference( Connection connection, ReferralsInfo.UrlAndDn urlAndDn,
+        ReferralsInfo referralsInfo, long requestNum, NamingException namingException );
+
+
+    /**
      * Logs a search result done.
      *
      * @param connection the connection

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java Sun Jul 13 09:53:55 2008
@@ -219,7 +219,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeAdd(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.directory.Attributes, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeAdd( Connection connection, final String dn, final Attributes attributes,
         final Control[] controls, NamingException ex )
@@ -265,7 +265,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeDelete(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeDelete( Connection connection, final String dn, final Control[] controls,
         NamingException ex )
@@ -286,7 +286,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeModify(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.directory.ModificationItem[], javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeModify( Connection connection, final String dn,
         final ModificationItem[] modificationItems, final Control[] controls, NamingException ex )
@@ -349,7 +349,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeModDn(org.apache.directory.studio.connection.core.Connection, java.lang.String, java.lang.String, boolean, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeModDn( Connection connection, final String oldDn, final String newDn,
         final boolean deleteOldRdn, final Control[] controls, NamingException ex )
@@ -383,7 +383,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchRequest(org.apache.directory.studio.connection.core.Connection, java.lang.String, java.lang.String, javax.naming.directory.SearchControls, org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod, javax.naming.ldap.Control[], long, javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logSearchRequest( Connection connection, String searchBase, String filter,
         SearchControls searchControls, AliasDereferencingMethod aliasesDereferencingMethod, Control[] controls,
@@ -394,7 +394,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchResultEntry(org.apache.directory.studio.connection.core.Connection, org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult, long, javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logSearchResultEntry( Connection connection, StudioSearchResult studioSearchResult, long requestNum,
         NamingException ex )
@@ -402,11 +402,20 @@
         // don't log searches 
     }
 
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void logSearchResultReference( Connection connection, ReferralsInfo.UrlAndDn urlAndDn,
+        ReferralsInfo referralsInfo, long requestNum, NamingException ex )
+    {
+        // don't log searches 
+    }
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchResultDone(org.apache.directory.studio.connection.core.Connection, long, long, javax.naming.NamingException)
+     * {@inheritDoc}
      */
-    public void logSearchResultDone( Connection connection, long count, long requestNum, NamingException namingException )
+    public void logSearchResultDone( Connection connection, long count, long requestNum, NamingException ex )
     {
         // don't log searches 
     }

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java Sun Jul 13 09:53:55 2008
@@ -210,7 +210,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeAdd(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.directory.Attributes, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeAdd( Connection connection, final String dn, final Attributes attributes,
         final Control[] controls, NamingException ex )
@@ -220,7 +220,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeDelete(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeDelete( Connection connection, final String dn, final Control[] controls,
         NamingException ex )
@@ -230,7 +230,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeModify(org.apache.directory.studio.connection.core.Connection, java.lang.String, javax.naming.directory.ModificationItem[], javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeModify( Connection connection, final String dn,
         final ModificationItem[] modificationItems, final Control[] controls, NamingException ex )
@@ -240,7 +240,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logChangetypeModDn(org.apache.directory.studio.connection.core.Connection, java.lang.String, java.lang.String, boolean, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logChangetypeModDn( Connection connection, final String oldDn, final String newDn,
         final boolean deleteOldRdn, final Control[] controls, NamingException ex )
@@ -250,7 +250,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchRequest(org.apache.directory.studio.connection.core.Connection, java.lang.String, java.lang.String, javax.naming.directory.SearchControls, org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod, javax.naming.ldap.Control[], javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logSearchRequest( Connection connection, String searchBase, String filter,
         SearchControls searchControls, AliasDereferencingMethod aliasesDereferencingMethod, Control[] controls,
@@ -312,7 +312,7 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchResultEntry(org.apache.directory.studio.connection.core.Connection, org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult, javax.naming.NamingException)
+     * {@inheritDoc}
      */
     public void logSearchResultEntry( Connection connection, StudioSearchResult studioSearchResult, long requestNum,
         NamingException ex )
@@ -324,32 +324,40 @@
 
         try
         {
-            String dn = studioSearchResult.getNameInNamespace();
-            Attributes attributes = studioSearchResult.getAttributes();
-
-            LdifContentRecord record = new LdifContentRecord( LdifDnLine.create( dn ) );
-            NamingEnumeration<? extends Attribute> attributeEnumeration = attributes.getAll();
-            while ( attributeEnumeration.hasMore() )
+            String formattedString;
+            if ( studioSearchResult != null )
             {
-                Attribute attribute = attributeEnumeration.next();
-                String attributeName = attribute.getID();
-                NamingEnumeration<?> valueEnumeration = attribute.getAll();
-                while ( valueEnumeration.hasMore() )
+                String dn = studioSearchResult.getNameInNamespace();
+                Attributes attributes = studioSearchResult.getAttributes();
+
+                LdifContentRecord record = new LdifContentRecord( LdifDnLine.create( dn ) );
+                NamingEnumeration<? extends Attribute> attributeEnumeration = attributes.getAll();
+                while ( attributeEnumeration.hasMore() )
                 {
-                    Object o = valueEnumeration.next();
-                    if ( o instanceof String )
-                    {
-                        record.addAttrVal( LdifAttrValLine.create( attributeName, ( String ) o ) );
-                    }
-                    if ( o instanceof byte[] )
+                    Attribute attribute = attributeEnumeration.next();
+                    String attributeName = attribute.getID();
+                    NamingEnumeration<?> valueEnumeration = attribute.getAll();
+                    while ( valueEnumeration.hasMore() )
                     {
-                        record.addAttrVal( LdifAttrValLine.create( attributeName, ( byte[] ) o ) );
+                        Object o = valueEnumeration.next();
+                        if ( o instanceof String )
+                        {
+                            record.addAttrVal( LdifAttrValLine.create( attributeName, ( String ) o ) );
+                        }
+                        if ( o instanceof byte[] )
+                        {
+                            record.addAttrVal( LdifAttrValLine.create( attributeName, ( byte[] ) o ) );
+                        }
                     }
                 }
+                record.finish( LdifSepLine.create() );
+                formattedString = record.toFormattedString( LdifFormatParameters.DEFAULT );
+            }
+            else
+            {
+                formattedString = LdifFormatParameters.DEFAULT.getLineSeparator();
             }
-            record.finish( LdifSepLine.create() );
 
-            String formattedString = record.toFormattedString( LdifFormatParameters.DEFAULT );
             log( formattedString, "SEARCH RESULT ENTRY (" + requestNum + ")", ex, connection );
         }
         catch ( NamingException e )
@@ -359,7 +367,31 @@
 
 
     /**
-     * @see org.apache.directory.studio.connection.core.IJndiLogger#logSearchResultDone(org.apache.directory.studio.connection.core.Connection, long, javax.naming.NamingException)
+     * {@inheritDoc}
+     */
+    public void logSearchResultReference( Connection connection, ReferralsInfo.UrlAndDn urlAndDn,
+        ReferralsInfo referralsInfo, long requestNum, NamingException ex )
+    {
+        if ( !isSearchResultEntryLogEnabled() )
+        {
+            return;
+        }
+
+        Collection<LdifLineBase> lines = new ArrayList<LdifLineBase>();
+        lines.add( LdifCommentLine.create( "# reference : " + ( urlAndDn != null ? urlAndDn.getUrl() : "null" ) ) );
+        lines.add( LdifSepLine.create() );
+
+        String formattedString = "";
+        for ( LdifLineBase line : lines )
+        {
+            formattedString += line.toFormattedString( LdifFormatParameters.DEFAULT );
+        }
+        log( formattedString, "SEARCH RESULT REFERENCE (" + requestNum + ")", ex, connection );
+    }
+
+
+    /**
+     * {@inheritDoc}
      */
     public void logSearchResultDone( Connection connection, long count, long requestNum, NamingException ex )
     {

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java Sun Jul 13 09:53:55 2008
@@ -74,7 +74,7 @@
         }
         else
         {
-            throw new LinkLoopException( "Loop detected while following referral: " + urlAndDn.toString() );
+            throw new LinkLoopException( "Loop detected while following referral: " + url );
         }
     }
 
@@ -104,7 +104,7 @@
      * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
      * @version $Rev$, $Date$
      */
-    class UrlAndDn
+    public static class UrlAndDn
     {
         private LdapURL url;
         private LdapDN dn;

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java Sun Jul 13 09:53:55 2008
@@ -142,19 +142,24 @@
             {
                 logResultDone = true;
                 logResultDoneException = re;
+                referralsInfo = JNDIConnectionWrapper.handleReferralException( re, referralsInfo );
+                UrlAndDn urlAndDn = referralsInfo.getNext();
+                for ( IJndiLogger logger : ConnectionCorePlugin.getDefault().getJndiLoggers() )
+                {
+                    logger.logSearchResultReference( connection, urlAndDn, referralsInfo, requestNum, null );
+                }
 
-                // ignore exception if referrals handling method is IGNORE
-                // report exception if referrals handling method is MANGAGE
+                // ignore exception if referrals handling method is IGNORE OR MANAGE
                 // follow referral if referrals handling method is FOLLOW
-                if ( referralsHandlingMethod == ReferralHandlingMethod.IGNORE )
+                if ( referralsHandlingMethod == ReferralHandlingMethod.IGNORE
+                    || referralsHandlingMethod == ReferralHandlingMethod.MANAGE )
                 {
+                    logResultDone = true;
+                    logResultDoneException = null;
                     return false;
                 }
                 else if ( referralsHandlingMethod == ReferralHandlingMethod.FOLLOW )
                 {
-                    referralsInfo = JNDIConnectionWrapper.handleReferralException( re, referralsInfo );
-                    logResultDone = false;
-                    UrlAndDn urlAndDn = referralsInfo.getNext();
                     if ( urlAndDn != null )
                     {
                         LdapURL url = urlAndDn.getUrl();
@@ -162,6 +167,9 @@
                             .getReferralConnection( url, monitor, this );
                         if ( referralConnection != null )
                         {
+                            logResultDone = false;
+                            logResultDoneException = null;
+                            
                             String referralSearchBase = url.getDn() != null && !url.getDn().isEmpty() ? url.getDn()
                                 .getUpName() : searchBase;
                             String referralFilter = url.getFilter() != null && url.getFilter().length() == 0 ? url
@@ -181,12 +189,14 @@
                                 referralFilter, referralSearchControls, aliasesDereferencingMethod,
                                 referralsHandlingMethod, controls, monitor, referralsInfo );
                         }
+                        else
+                        {
+                            logResultDone = true;
+                            logResultDoneException = null;
+                            return false;
+                        }
                     }
                 }
-                else
-                {
-                    throw re;
-                }
             }
             catch ( NamingException ne )
             {

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ExceptionHandler.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ExceptionHandler.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ExceptionHandler.java (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/ExceptionHandler.java Sun Jul 13 09:53:55 2008
@@ -57,14 +57,22 @@
      */
     private void display( final String message, final IStatus status )
     {
-        Runnable runnable = new Runnable()
+        if ( Thread.currentThread() == Display.getDefault().getThread() )
         {
-            public void run()
+            ErrorDialog.openError( Display.getDefault().getActiveShell(), "Error", message, status );
+        }
+        else
+        {
+            Runnable runnable = new Runnable()
             {
-                ErrorDialog.openError( Display.getDefault().getActiveShell(), "Error", message, status );
-            }
-        };
-        Display.getDefault().asyncExec( runnable );
+                public void run()
+                {
+                    ErrorDialog.openError( Display.getDefault().getActiveShell(), "Error", message, status );
+                }
+            };
+            Display.getDefault().asyncExec( runnable );
+        }
+
         ConnectionCorePlugin.getDefault().getLog().log( status );
     }
 }

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/BrowserCommonActivator.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/BrowserCommonActivator.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/BrowserCommonActivator.java (original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/BrowserCommonActivator.java Sun Jul 13 09:53:55 2008
@@ -65,9 +65,6 @@
     /** The color registry */
     private ColorRegistry colorRegistry;
 
-    /** The event dispatcher */
-    private ExceptionHandler exceptionHandler;
-
     /** The value editor preferences */
     private ValueEditorsPreferences valueEditorPreferences;
 
@@ -112,11 +109,6 @@
             colorRegistry = new ColorRegistry( getWorkbench().getDisplay() );
         }
 
-        if ( exceptionHandler == null )
-        {
-            exceptionHandler = new ExceptionHandler();
-        }
-
         valueEditorPreferences = new ValueEditorsPreferences();
 
         if ( filterTemplateContextTypeRegistry == null )
@@ -166,11 +158,6 @@
             colorRegistry = null;
         }
 
-        if ( exceptionHandler != null )
-        {
-            exceptionHandler = null;
-        }
-
         if ( filterTemplateContextTypeRegistry != null )
         {
             filterTemplateContextTypeRegistry = null;
@@ -302,16 +289,6 @@
 
 
     /**
-     *
-     * @return The exception handler
-     */
-    public ExceptionHandler getExceptionHandler()
-    {
-        return exceptionHandler;
-    }
-
-
-    /**
      * Gets the value editors preferences.
      *
      * @return the value editors preferences

Modified: directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/HexDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/HexDialog.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/HexDialog.java (original)
+++ directory/studio/trunk/ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/dialogs/HexDialog.java Sun Jul 13 09:53:55 2008
@@ -28,6 +28,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 
+import org.apache.directory.studio.connection.ui.ConnectionUIPlugin;
 import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
 import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
 import org.eclipse.core.runtime.IStatus;
@@ -114,13 +115,13 @@
                 }
                 catch ( FileNotFoundException e )
                 {
-                    BrowserCommonActivator.getDefault().getExceptionHandler().handleException(
+                    ConnectionUIPlugin.getDefault().getExceptionHandler().handleException(
                         new Status( IStatus.ERROR, BrowserCommonActivator.PLUGIN_ID, IStatus.ERROR,
                             "Can't write to file", e ) );
                 }
                 catch ( IOException e )
                 {
-                    BrowserCommonActivator.getDefault().getExceptionHandler().handleException(
+                    ConnectionUIPlugin.getDefault().getExceptionHandler().handleException(
                         new Status( IStatus.ERROR, BrowserCommonActivator.PLUGIN_ID, IStatus.ERROR,
                             "Can't write to file", e ) );
                 }
@@ -151,13 +152,13 @@
                 }
                 catch ( FileNotFoundException e )
                 {
-                    BrowserCommonActivator.getDefault().getExceptionHandler().handleException(
+                    ConnectionUIPlugin.getDefault().getExceptionHandler().handleException(
                         new Status( IStatus.ERROR, BrowserCommonActivator.PLUGIN_ID, IStatus.ERROR, "Can't read file",
                             e ) );
                 }
                 catch ( IOException e )
                 {
-                    BrowserCommonActivator.getDefault().getExceptionHandler().handleException(
+                    ConnectionUIPlugin.getDefault().getExceptionHandler().handleException(
                         new Status( IStatus.ERROR, BrowserCommonActivator.PLUGIN_ID, IStatus.ERROR, "Can't read file",
                             e ) );
                 }

Modified: directory/studio/trunk/pom.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/pom.xml?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/pom.xml (original)
+++ directory/studio/trunk/pom.xml Sun Jul 13 09:53:55 2008
@@ -2073,12 +2073,12 @@
       <dependency>
         <groupId>net.sf.swtbot.eclipse</groupId>
         <artifactId>finder</artifactId>
-        <version>1.0.0.574</version>
+        <version>1.2.0.840</version>
       </dependency>
       <dependency>
         <groupId>net.sf.swtbot</groupId>
         <artifactId>finder</artifactId>
-        <version>1.0.0.574</version>
+        <version>1.2.0.840</version>
       </dependency>
 
       <!-- Dependencies for the Apache DS plugin -->

Added: directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.2.0.840/finder-1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.2.0.840/finder-1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/repository/net/sf/swtbot/eclipse/finder/1.2.0.840/finder-1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/repository/net/sf/swtbot/finder/1.2.0.840/finder-1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/repository/net/sf/swtbot/finder/1.2.0.840/finder-1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/repository/net/sf/swtbot/finder/1.2.0.840/finder-1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.finder_1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.finder_1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.finder_1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.spy_1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.spy_1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.spy_1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.ui_1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.ui_1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.eclipse.ui_1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.finder_1.2.0.840.jar
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.finder_1.2.0.840.jar?rev=676357&view=auto
==============================================================================
Binary file - no diff available.

Propchange: directory/studio/trunk/test-integration-ui/resources/test-plugins/net.sf.swtbot.finder_1.2.0.840.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/AutomatedSuite.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/AutomatedSuite.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/AutomatedSuite.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/AutomatedSuite.java Sun Jul 13 09:53:55 2008
@@ -47,6 +47,7 @@
         addTest( new TestSuite( NewConnectionWizardTest.class ) );
         addTest( new TestSuite( NewEntryWizardTest.class ) );
         addTest( new TestSuite( RenameEntryDialogTest.class ) );
+        addTest( new TestSuite( ReferralDialogTest.class ) );
 
         addTest( new TestSuite( SwtResourcesTest.class ) );
     }

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java Sun Jul 13 09:53:55 2008
@@ -34,6 +34,7 @@
 import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
 import org.apache.directory.studio.connection.core.ConnectionManager;
 import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
+import org.eclipse.jface.dialogs.ErrorDialog;
 
 
 /**
@@ -91,9 +92,9 @@
         // enter connection parameter
         SWTBotText connText = bot.textWithLabel( "Connection name:" );
         connText.setText( "NewConnectionWizardTest" );
-        SWTBotCombo hostnameCombo = bot.comboBox( "" );
+        SWTBotCombo hostnameCombo = bot.comboBoxWithLabel( "Hostname:" );
         hostnameCombo.setText( "localhost" );
-        SWTBotCombo portCombo = bot.comboBox( "" );
+        SWTBotCombo portCombo = bot.comboBoxWithLabel( "Port:" );
         portCombo.setText( Integer.toString( ldapServer.getIpPort() ) );
 
         // ensure "Next >" button is enabled, "Finish" button is disabled
@@ -110,11 +111,11 @@
         assertFalse( finishButton.isEnabled() );
 
         // ensure "Simple Authentication" is the default
-        SWTBotCombo authMethodCombo = bot.comboBox( "Simple Authentication" );
+        SWTBotCombo authMethodCombo = bot.comboBoxWithLabel( "Authentication Method" );
         assertEquals( "Simple Authentication", authMethodCombo.selection() );
 
         // enter authentication parameters
-        SWTBotCombo dnCombo = bot.comboBox( "" );
+        SWTBotCombo dnCombo = bot.comboBoxWithLabel( "Bind DN or user:" );
         dnCombo.setText( "uid=admin,ou=system" );
         SWTBotText passwordText = bot.textWithLabel( "Bind password:" );
         passwordText.setText( "secret" );
@@ -126,7 +127,7 @@
 
         // finish dialog
         finishButton.click();
-        Thread.sleep( 2000 );
+        bot.sleep( 2000 );
 
         // ensure connection was created
         ConnectionManager connectionManager = ConnectionCorePlugin.getDefault().getConnectionManager();
@@ -168,15 +169,15 @@
         // enter connection parameter
         SWTBotText connText = bot.textWithLabel( "Connection name:" );
         connText.setText( "NewConnectionWizardTest" );
-        SWTBotCombo hostnameCombo = bot.comboBox( "" );
+        SWTBotCombo hostnameCombo = bot.comboBoxWithLabel( "Hostname:" );
         hostnameCombo.setText( "localhost" );
-        SWTBotCombo portCombo = bot.comboBox( "" );
+        SWTBotCombo portCombo = bot.comboBoxWithLabel( "Port:" );
         portCombo.setText( Integer.toString( ldapServer.getIpPort() ) );
 
         // click "Check Network Parameter" button
         SWTBotButton checkButton = bot.button( "Check Network Parameter" );
         checkButton.click();
-
+        bot.sleep( 1000 );
         bot.waitUntil( new DefaultCondition()
         {
             public boolean test() throws Exception
@@ -196,36 +197,38 @@
     }
 
 
-//    /**
-//     * Tests the "Check Network Parameter" button.
-//     * 
-//     * @throws Exception the exception
-//     */
-//    public void testCheckNetworkParameterButtonNOK() throws Exception
-//    {
-//        // Select "Connections" view, ensure no connections exists yet
-//        SWTBotTree connectionsTree = SWTBotUtils.getConnectionsTree( bot );
-//        assertEquals( 0, connectionsTree.rowCount() );
-//
-//        // open "New Connection" wizard
-//        SWTBotMenu newConnectionMenu = connectionsTree.contextMenu( "New Connection..." );
-//        newConnectionMenu.click();
-//
-//        // enter connection parameter
-//        SWTBotText connText = bot.textWithLabel( "Connection name:" );
-//        connText.setText( "NewConnectionWizardTest" );
-//        SWTBotCombo hostnameCombo = bot.comboBox( "" );
-//        hostnameCombo.setText( "localhost" );
-//        SWTBotCombo portCombo = bot.comboBox( "" );
-//        portCombo.setText( Integer.toString( ldapServer.getIpPort() + 1 ) );
-//
-//        // click "Check Network Parameter" button
-//        SWTBotButton checkButton = bot.button( "Check Network Parameter" );
-//        checkButton.click();
-//
-//        //TODO: error dialog does not pop up when using SWTBot???
-//        Thread.sleep( 2000 );
-//
+    /**
+     * Tests the "Check Network Parameter" button.
+     * 
+     * @throws Exception the exception
+     */
+    public void testCheckNetworkParameterButtonNOK() throws Exception
+    {
+        // we expect the error dialog here, so set flag to false
+        boolean errorDialogAutomatedMode = ErrorDialog.AUTOMATED_MODE;
+        ErrorDialog.AUTOMATED_MODE = false;
+        
+        // Select "Connections" view, ensure no connections exists yet
+        SWTBotTree connectionsTree = SWTBotUtils.getConnectionsTree( bot );
+        assertEquals( 0, connectionsTree.rowCount() );
+
+        // open "New Connection" wizard
+        SWTBotMenu newConnectionMenu = connectionsTree.contextMenu( "New Connection..." );
+        newConnectionMenu.click();
+
+        // enter connection parameter
+        SWTBotText connText = bot.textWithLabel( "Connection name:" );
+        connText.setText( "NewConnectionWizardTest" );
+        SWTBotCombo hostnameCombo = bot.comboBoxWithLabel( "Hostname:" );
+        hostnameCombo.setText( "localhost" );
+        SWTBotCombo portCombo = bot.comboBoxWithLabel( "Port:" );
+        portCombo.setText( Integer.toString( ldapServer.getIpPort() + 1 ) );
+
+        // click "Check Network Parameter" button
+        SWTBotButton checkButton = bot.button( "Check Network Parameter" );
+        checkButton.click();
+        bot.sleep( 2000 );
+//SWTBotTestCase.assertEnabled( widget );
 //        bot.waitUntil( new DefaultCondition()
 //        {
 //            public boolean test() throws Exception
@@ -239,5 +242,11 @@
 //                return "Expected an dialog box 'Error' with an 'OK' button.";
 //            }
 //        } );
-//    }
+        
+        bot.button( "OK" ).click();
+        bot.button( "Cancel" ).click();
+        
+        // reset flag
+        ErrorDialog.AUTOMATED_MODE = errorDialogAutomatedMode;
+    }
 }

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewEntryWizardTest.java Sun Jul 13 09:53:55 2008
@@ -27,9 +27,9 @@
 import net.sf.swtbot.widgets.SWTBotMenu;
 import net.sf.swtbot.widgets.SWTBotText;
 import net.sf.swtbot.widgets.SWTBotTree;
+import net.sf.swtbot.widgets.SWTBotTreeItem;
 
 import org.apache.directory.server.unit.AbstractServerTest;
-import org.eclipse.ui.PlatformUI;
 
 
 /**
@@ -84,7 +84,7 @@
         bot.button( "Next >" ).click();
 
         // specify DN
-        SWTBotCombo typeCombo = bot.comboBox( "" );
+        SWTBotCombo typeCombo = bot.comboBoxWithLabel( "RDN:" );
         typeCombo.setText( "o" );
         SWTBotText valueText = bot.text( "" );
         valueText.setText( "testCreateOrganizationEntry" );
@@ -113,7 +113,7 @@
         {
             public boolean test() throws Exception
             {
-                return browserTree.selection().get( 0 ).get( 0 ).equals( "o=testCreateOrganizationEntry" );
+                return browserTree.selection().get( 0 ).get( 0 ).startsWith( "o=testCreateOrganizationEntry" );
             }
 
 
@@ -149,7 +149,7 @@
         bot.button( "Next >" ).click();
 
         // specify DN
-        SWTBotCombo typeCombo = bot.comboBox( "" );
+        SWTBotCombo typeCombo = bot.comboBoxWithLabel( "RDN:" );
         typeCombo.setText( "cn" );
         SWTBotText valueText = bot.text( "" );
         valueText.setText( "testCreatePersonEntry" );
@@ -170,30 +170,15 @@
             }
         } );
 
-        // enter values
+        // enter sn value
         SWTBotTree tree = bot.tree( 0 );
         tree.select( "sn" );
         bot.text( "" ).setText( "test" );
-        tree.select( "cn" );
-
-        // TODO: with SWTBot 1.2 we could use the tree.click() method! 
-        // workaround to apply the new value 
-        bot.button( "< Back" ).click();
-        bot.button( "Next >" ).click();
-        bot.waitUntil( new DefaultCondition()
-        {
-            public boolean test() throws Exception
-            {
-                return bot.button( "Finish" ).isEnabled();
-            }
-
-
-            public String getFailureMessage()
-            {
-                return "Could not find widget";
-            }
-        } );
+        // click to finish editing of sn
+        SWTBotTreeItem cnNode = SWTBotUtils.selectNode( bot, tree, "sn" );
+        cnNode.click();
 
+        // click finish to create the entry
         bot.button( "Finish" ).click();
 
         // wait till entry is created and selected in the tree
@@ -201,7 +186,7 @@
         {
             public boolean test() throws Exception
             {
-                return browserTree.selection().get( 0 ).get( 0 ).equals( "cn=testCreatePersonEntry" );
+                return browserTree.selection().get( 0 ).get( 0 ).startsWith( "cn=testCreatePersonEntry" );
             }
 
 
@@ -214,9 +199,10 @@
 
     
     /**
+     * Test for DIRSTUDIO-350.
+     * 
      * Create entries with upper case attribute types and ensures that
      * the retrieved entries still are in upper case.
-     * Test for DIRSTUDIO-350.
      * 
      * @throws Exception the exception
      */
@@ -239,7 +225,7 @@
         bot.button( "Next >" ).click();
 
         // specify DN
-        SWTBotCombo typeCombo = bot.comboBox( "" );
+        SWTBotCombo typeCombo = bot.comboBoxWithLabel( "RDN:" );
         typeCombo.setText( "O" );
         SWTBotText valueText = bot.text( "" );
         valueText.setText( "testCreateOrganizationEntry" );
@@ -268,7 +254,7 @@
         {
             public boolean test() throws Exception
             {
-                return browserTree.selection().get( 0 ).get( 0 ).equals( "O=testCreateOrganizationEntry" );
+                return browserTree.selection().get( 0 ).get( 0 ).startsWith( "O=testCreateOrganizationEntry" );
             }
 
 
@@ -295,7 +281,7 @@
         bot.button( "Next >" ).click();
         
         // specify DN
-        typeCombo = bot.comboBox( "" );
+        typeCombo = bot.comboBoxWithLabel( "RDN:" );
         typeCombo.setText( "O" );
         valueText = bot.text( "" );
         valueText.setText( "testCreateOrganizationEntry2" );
@@ -329,7 +315,7 @@
         {
             public boolean test() throws Exception
             {
-                return browserTree.selection().get( 0 ).get( 0 ).equals( "O=testCreateOrganizationEntry2" );
+                return browserTree.selection().get( 0 ).get( 0 ).startsWith( "O=testCreateOrganizationEntry2" );
             }
 
 
@@ -338,9 +324,6 @@
                 return "Could not find widget";
             }
         } );
-        
-        
-        Thread.sleep( 10000 );
     }
 
 }

Added: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ReferralDialogTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ReferralDialogTest.java?rev=676357&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ReferralDialogTest.java (added)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ReferralDialogTest.java Sun Jul 13 09:53:55 2008
@@ -0,0 +1,234 @@
+/*
+ *  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.test.integration.ui;
+
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.directory.BasicAttribute;
+import javax.naming.directory.BasicAttributes;
+
+import net.sf.swtbot.eclipse.finder.SWTEclipseBot;
+import net.sf.swtbot.finder.UIThreadRunnable;
+import net.sf.swtbot.widgets.SWTBotTree;
+import net.sf.swtbot.widgets.SWTBotTreeItem;
+
+import org.apache.directory.server.unit.AbstractServerTest;
+import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+
+
+/**
+ * Tests the referral dialog.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ReferralDialogTest extends AbstractServerTest
+{
+    private SWTEclipseBot bot;
+    private Connection connection;
+
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        bot = new SWTEclipseBot();
+        SWTBotUtils.openLdapPerspective( bot );
+        connection = SWTBotUtils.createTestConnection( bot, "ReferralDialogTest", ldapServer.getIpPort() );
+    }
+
+
+    protected void tearDown() throws Exception
+    {
+        SWTBotUtils.deleteTestConnections();
+        bot = null;
+        super.tearDown();
+    }
+
+
+    /**
+     * Test for DIRSTUDIO-343.
+     * 
+     * Follows a continuation reference.
+     * 
+     * @throws Exception the exception
+     */
+    public void testBrowseAndFollowContinuationReference() throws Exception
+    {
+        // ensure that referrals handling method is FOLLOW 
+        int referralsHandlingMethodOrdinal = connection.getConnectionParameter().getExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD );
+        assertEquals( ReferralHandlingMethod.FOLLOW.ordinal(), referralsHandlingMethodOrdinal );
+
+        // create the referral entry
+        createReferralEntry();
+
+        final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+
+        // expand ou=system, that reads the referral and opens the referral dialog
+        final SWTBotTreeItem systemNode = SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        UIThreadRunnable.asyncExec( bot.getDisplay(), new UIThreadRunnable.VoidResult()
+        {
+            public void run()
+            {
+                systemNode.expand();
+            }
+        } );
+        bot.sleep( 1000 );
+
+        // click OK in the referral dialog
+        bot.button( "OK" ).click();
+        systemNode.expand();
+        bot.sleep( 1000 );
+
+        // ensure that the referral URL and target is visible
+        SWTBotTreeItem referralNode = systemNode.getNode( "ldap://localhost:" + ldapServer.getIpPort()
+            + "/ou=users,ou=system" );
+        assertNotNull( referralNode );
+        SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system", "ldap://localhost:"
+            + ldapServer.getIpPort() + "/ou=users,ou=system" );
+
+    }
+
+
+    /**
+     * Test for DIRSTUDIO-343.
+     * 
+     * Does not follow a continuation reference by clicking 
+     * the cancel button in the referral dialog.
+     * 
+     * @throws Exception the exception
+     */
+    public void testBrowseAndCancelFollowingContinuationReference() throws Exception
+    {
+        // ensure that referrals handling method is FOLLOW 
+        int referralsHandlingMethodOrdinal = connection.getConnectionParameter().getExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD );
+        assertEquals( ReferralHandlingMethod.FOLLOW.ordinal(), referralsHandlingMethodOrdinal );
+
+        // create the referral entry
+        createReferralEntry();
+
+        final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+
+        // expand ou=system, that reads the referral and opens the referral dialog
+        final SWTBotTreeItem systemNode = SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        UIThreadRunnable.asyncExec( bot.getDisplay(), new UIThreadRunnable.VoidResult()
+        {
+            public void run()
+            {
+                systemNode.expand();
+            }
+        } );
+        bot.sleep( 1000 );
+
+        // click Cancel in the referral dialog
+        bot.button( "Cancel" ).click();
+        systemNode.expand();
+        bot.sleep( 1000 );
+
+        // ensure that the referral URL and target is not visible
+        SWTBotTreeItem referralNode = systemNode.getNode( "ldap://localhost:" + ldapServer.getIpPort()
+            + "/ou=users,ou=system" );
+        assertNull( referralNode );
+    }
+
+
+    /**
+     * Tests ignore referral by setting the connection property to IGNORE.
+     * 
+     * @throws Exception the exception
+     */
+    public void testBrowseAndIgnoreReferral() throws Exception
+    {
+        // ensure that referrals handling method is IGNORE
+        connection.getConnectionParameter().setExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD, ReferralHandlingMethod.IGNORE.ordinal() );
+        int referralsHandlingMethodOrdinal = connection.getConnectionParameter().getExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD );
+        assertEquals( ReferralHandlingMethod.IGNORE.ordinal(), referralsHandlingMethodOrdinal );
+
+        // create the referral entry
+        createReferralEntry();
+
+        final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+
+        // expand ou=system, that reads the referral and opens the referral dialog
+        final SWTBotTreeItem systemNode = SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        systemNode.expand();
+        systemNode.expand();
+        bot.sleep( 1000 );
+
+        // ensure that the referral entry is not visible
+        SWTBotTreeItem referralNode = systemNode.getNode( "ldap://localhost:" + ldapServer.getIpPort()
+            + "/ou=users,ou=system" );
+        assertNull( referralNode );
+    }
+
+
+    /**
+     * Tests manage referral entry by setting the connection property to MANAGE.
+     * 
+     * @throws Exception the exception
+     */
+    public void testBrowseAndManageReferralEntry() throws Exception
+    {
+        // ensure that referrals handling method is MANAGE
+        connection.getConnectionParameter().setExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD, ReferralHandlingMethod.MANAGE.ordinal() );
+        int referralsHandlingMethodOrdinal = connection.getConnectionParameter().getExtendedIntProperty(
+            IBrowserConnection.CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD );
+        assertEquals( ReferralHandlingMethod.MANAGE.ordinal(), referralsHandlingMethodOrdinal );
+
+        // create the referral entry
+        createReferralEntry();
+
+        final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
+
+        // expand ou=system, that reads the referral and opens the referral dialog
+        final SWTBotTreeItem systemNode = SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        systemNode.expand();
+        systemNode.expand();
+        bot.sleep( 1000 );
+
+        // ensure that the referral entry is visible
+        SWTBotTreeItem referralNode = systemNode.getNode( "cn=referralDialogTest" );
+        assertNotNull( referralNode );
+        SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system", "cn=referralDialogTest" );
+    }
+
+
+    private void createReferralEntry() throws NamingException
+    {
+        Attributes attrs = new BasicAttributes();
+        Attribute ocAttr = new BasicAttribute( "objectClass" );
+        ocAttr.add( "top" );
+        ocAttr.add( "referral" );
+        ocAttr.add( "extensibleObject" );
+        attrs.put( ocAttr );
+        attrs.put( "cn", "referralDialogTest" );
+        attrs.put( "ref", "ldap://localhost:" + ldapServer.getIpPort() + "/ou=users,ou=system" );
+        rootDSE.createSubcontext( "cn=referralDialogTest,ou=system", attrs );
+    }
+}

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SWTBotUtils.java Sun Jul 13 09:53:55 2008
@@ -142,7 +142,7 @@
      * 
      * @throws Exception the exception
      */
-    public static void createTestConnection( SWTEclipseBot bot, String name, int port ) throws Exception
+    public static Connection createTestConnection( SWTEclipseBot bot, String name, int port ) throws Exception
     {
         SWTBotTree connectionsTree = getConnectionsTree( bot );
 
@@ -167,6 +167,7 @@
         //new OpenConnectionsJob( connection ).execute();
 
         Thread.sleep( 1000 );
+        return connection;
     }
 
 
@@ -209,10 +210,10 @@
 
         SWTBotTreeItem child = browserTree.getTreeItem( currentPath );
         child.select();
-        child.expand();
 
         if ( !pathList.isEmpty() )
         {
+            child.expand();
             return selectNode( bot, child, pathList );
         }
         else
@@ -252,12 +253,13 @@
             }
         } );
 
-        SWTBotTreeItem child = item.expandNode( currentPath[0] );
+        SWTBotTreeItem child = item.getNode( currentPath[0] );
         child.select();
-        child.expand();
 
         if ( !pathList.isEmpty() )
         {
+            child.expand();
+            child.expand();
             return selectNode( bot, child, pathList );
         }
         else

Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/SwtResourcesTest.java Sun Jul 13 09:53:55 2008
@@ -29,10 +29,9 @@
 import net.sf.swtbot.widgets.SWTBotMenu;
 import net.sf.swtbot.widgets.SWTBotText;
 import net.sf.swtbot.widgets.SWTBotTree;
+import net.sf.swtbot.widgets.SWTBotTreeItem;
 
 import org.apache.directory.server.unit.AbstractServerTest;
-import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
-import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
 import org.eclipse.swt.graphics.DeviceData;
 
 
@@ -77,9 +76,6 @@
     {
         SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( bot );
 
-        BrowserCommonActivator.getDefault().getPreferenceStore().setValue(
-            BrowserCommonConstants.PREFERENCE_BROWSER_ENABLE_FOLDING, false );
-
         // run the new entry wizard once to ensure all SWT resources are created
         createAndDeleteEntry( browserTree, "testSwtResourcesDelta" + 0 );
 
@@ -90,11 +86,6 @@
         for ( int i = 1; i < 25; i++ )
         {
             createAndDeleteEntry( browserTree, "testSwtResourcesDelta" + i );
-
-            // update the status of SWT objects in the Sleak view
-            bot.view( "Sleak" ).show();
-            bot.button( "Snap" ).click();
-            browserTree = SWTBotUtils.getLdapBrowserTree( bot );
         }
 
         // get the SWT objects after the run
@@ -140,8 +131,11 @@
 
     private void createAndDeleteEntry( final SWTBotTree browserTree, final String name ) throws Exception
     {
-        SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        SWTBotTreeItem systemNode = SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system" );
+        systemNode.expand();
+        systemNode.expand();
 
+        //        bot.sleep( 1000 );
         SWTBotMenu contextMenu = browserTree.contextMenu( "New Entry..." );
         contextMenu.click();
 
@@ -152,7 +146,7 @@
         bot.button( "Add" ).click();
         bot.button( "Next >" ).click();
 
-        SWTBotCombo typeCombo = bot.comboBox( "" );
+        SWTBotCombo typeCombo = bot.comboBoxWithLabel( "RDN:" );
         typeCombo.setText( "o" );
         SWTBotText valueText = bot.text( "" );
         valueText.setText( name );
@@ -163,13 +157,13 @@
         {
             public boolean test() throws Exception
             {
-                return bot.tree( 0 ) != null;
+                return bot.button( "Finish" ).isEnabled();
             }
 
 
             public String getFailureMessage()
             {
-                return "Could not find widget";
+                return "Finish button is not enabled";
             }
         } );
         bot.button( "Finish" ).click();
@@ -179,17 +173,18 @@
         {
             public boolean test() throws Exception
             {
-                return browserTree.selection().get( 0 ).get( 0 ).equals( "o=" + name );
+                return browserTree.selection().get( 0 ).get( 0 ).startsWith( "o=" + name );
             }
 
 
             public String getFailureMessage()
             {
-                return "Could not find widget";
+                return "Could not select 'o=" + name + "'";
             }
         } );
 
         // delete the entry
+        SWTBotUtils.selectNode( bot, browserTree, "DIT", "Root DSE", "ou=system", "o=" + name );
         contextMenu = browserTree.contextMenu( "Delete Entry" );
         contextMenu.click();
         bot.button( "OK" ).click();
@@ -205,7 +200,7 @@
 
             public String getFailureMessage()
             {
-                return "Could not find widget";
+                return "Could not select 'ou=system'";
             }
         } );
     }

Modified: directory/studio/trunk/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java?rev=676357&r1=676356&r2=676357&view=diff
==============================================================================
--- directory/studio/trunk/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java (original)
+++ directory/studio/trunk/valueeditors/src/main/java/org/apache/directory/studio/valueeditors/image/ImageDialog.java Sun Jul 13 09:53:55 2008
@@ -29,7 +29,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 
-import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.connection.ui.ConnectionUIPlugin;
 import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
 import org.apache.directory.studio.valueeditors.ValueEditorsActivator;
 import org.apache.directory.studio.valueeditors.ValueEditorsConstants;
@@ -316,14 +316,14 @@
                         catch ( FileNotFoundException e )
                         {
 
-                            BrowserCommonActivator.getDefault()
+                            ConnectionUIPlugin.getDefault()
                                 .getExceptionHandler().handleException(
                                     new Status( IStatus.ERROR, ValueEditorsActivator.PLUGIN_ID, IStatus.ERROR,
                                         "Can't write to file", e ) );
                         }
                         catch ( IOException e )
                         {
-                            BrowserCommonActivator.getDefault()
+                            ConnectionUIPlugin.getDefault()
                                 .getExceptionHandler().handleException(
                                     new Status( IStatus.ERROR, ValueEditorsActivator.PLUGIN_ID, IStatus.ERROR,
                                         "Can't write to file", e ) );