You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2010/10/20 17:08:38 UTC

svn commit: r1025611 - in /directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core: ./ io/ io/api/ io/jndi/

Author: pamarcelot
Date: Wed Oct 20 15:08:38 2010
New Revision: 1025611

URL: http://svn.apache.org/viewvc?rev=1025611&view=rev
Log:
o Moved the getReferralConnection(...) method in a helper since it's now shared between the JNDI and Directory API connection wrappers.
o Added support for "read-only" connections in the Directory API connection wrapper.

Added:
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionWrapperUtils.java
Modified:
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Connection.java
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/CursorStudioNamingEnumeration.java
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
    directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JndiStudioNamingEnumeration.java

Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Connection.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Connection.java?rev=1025611&r1=1025610&r2=1025611&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Connection.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Connection.java Wed Oct 20 15:08:38 2010
@@ -39,7 +39,6 @@ import org.eclipse.core.runtime.IAdaptab
  */
 public class Connection implements ConnectionPropertyPageProvider, IAdaptable
 {
-
     /**
      * Enum for alias dereferencing method.
      * 
@@ -47,7 +46,6 @@ public class Connection implements Conne
      */
     public static enum AliasDereferencingMethod
     {
-
         /** Never. */
         NEVER(0),
 
@@ -112,7 +110,6 @@ public class Connection implements Conne
      */
     public static enum ReferralHandlingMethod
     {
-
         /** Ignore. */
         IGNORE(0),
 

Added: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionWrapperUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionWrapperUtils.java?rev=1025611&view=auto
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionWrapperUtils.java (added)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionWrapperUtils.java Wed Oct 20 15:08:38 2010
@@ -0,0 +1,73 @@
+/*
+ *  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.connection.core.io;
+
+
+import java.util.ArrayList;
+
+import org.apache.directory.shared.ldap.message.Referral;
+import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
+import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
+import org.apache.directory.studio.connection.core.IConnectionListener;
+import org.apache.directory.studio.connection.core.IReferralHandler;
+import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
+
+
+/**
+ * Connection wrapper helper class. 
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ConnectionWrapperUtils
+{
+    /**
+     * Gets the referral connection from the given URL.
+     * 
+     * @param url the URL
+     * @param monitor the progress monitor
+     * @param source the source
+     * 
+     * @return the referral connection
+     */
+    public static Connection getReferralConnection( Referral referral, StudioProgressMonitor monitor, Object source )
+    {
+        Connection referralConnection = null;
+        IReferralHandler referralHandler = ConnectionCorePlugin.getDefault().getReferralHandler();
+        if ( referralHandler != null )
+        {
+            referralConnection = referralHandler
+                .getReferralConnection( new ArrayList<String>( referral.getLdapUrls() ) );
+
+            // open connection if not yet open
+            if ( referralConnection != null && !referralConnection.getConnectionWrapper().isConnected() )
+            {
+                referralConnection.getConnectionWrapper().connect( monitor );
+                referralConnection.getConnectionWrapper().bind( monitor );
+                for ( IConnectionListener listener : ConnectionCorePlugin.getDefault().getConnectionListeners() )
+                {
+                    listener.connectionOpened( referralConnection, monitor );
+                }
+                ConnectionEventRegistry.fireConnectionOpened( referralConnection, source );
+            }
+        }
+        return referralConnection;
+    }
+}

Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/CursorStudioNamingEnumeration.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/CursorStudioNamingEnumeration.java?rev=1025611&r1=1025610&r2=1025611&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/CursorStudioNamingEnumeration.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/CursorStudioNamingEnumeration.java Wed Oct 20 15:08:38 2010
@@ -41,8 +41,8 @@ import org.apache.directory.studio.conne
 import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
 import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
 import org.apache.directory.studio.connection.core.io.AbstractStudioNamingEnumeration;
+import org.apache.directory.studio.connection.core.io.ConnectionWrapperUtils;
 import org.apache.directory.studio.connection.core.io.StudioNamingEnumeration;
-import org.apache.directory.studio.connection.core.io.jndi.JNDIConnectionWrapper;
 import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo;
 import org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult;
 
@@ -182,7 +182,7 @@ public class CursorStudioNamingEnumerati
                     List<String> referralUrls = new ArrayList<String>( referral.getLdapUrls() );
                     LdapURL url = new LdapURL( referralUrls.get( 0 ) );
 
-                    Connection referralConnection = JNDIConnectionWrapper.getReferralConnection( referral, monitor,
+                    Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral, monitor,
                         this );
                     if ( referralConnection != null )
                     {

Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java?rev=1025611&r1=1025610&r2=1025611&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java Wed Oct 20 15:08:38 2010
@@ -55,12 +55,14 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.util.AttributeUtils;
 import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
 import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.Messages;
 import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
 import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
 import org.apache.directory.studio.connection.core.ConnectionParameter.EncryptionMethod;
 import org.apache.directory.studio.connection.core.io.ConnectionWrapper;
 import org.apache.directory.studio.connection.core.io.StudioNamingEnumeration;
 import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo;
+import org.eclipse.osgi.util.NLS;
 
 
 /**
@@ -336,6 +338,12 @@ public class DirectoryApiConnectionWrapp
     public void modifyEntry( final String dn, final ModificationItem[] modificationItems, final Control[] controls,
         final StudioProgressMonitor monitor, final ReferralsInfo referralsInfo )
     {
+        if ( connection.isReadOnly() )
+        {
+            monitor.reportError( NLS.bind( Messages.error__connection_is_readonly, connection.getName() ) );
+            return;
+        }
+
         try
         {
             // Preparing the modify request
@@ -425,6 +433,12 @@ public class DirectoryApiConnectionWrapp
     public void renameEntry( final String oldDn, final String newDn, final boolean deleteOldRdn,
         final Control[] controls, final StudioProgressMonitor monitor, final ReferralsInfo referralsInfo )
     {
+        if ( connection.isReadOnly() )
+        {
+            monitor.reportError( NLS.bind( Messages.error__connection_is_readonly, connection.getName() ) );
+            return;
+        }
+
         try
         {
             // Preparing the rename request
@@ -452,6 +466,12 @@ public class DirectoryApiConnectionWrapp
     public void createEntry( final String dn, final Attributes attributes, final Control[] controls,
         final StudioProgressMonitor monitor, final ReferralsInfo referralsInfo )
     {
+        if ( connection.isReadOnly() )
+        {
+            monitor.reportError( NLS.bind( Messages.error__connection_is_readonly, connection.getName() ) );
+            return;
+        }
+
         try
         {
             // Preparing the add request
@@ -476,6 +496,12 @@ public class DirectoryApiConnectionWrapp
     public void deleteEntry( final String dn, final Control[] controls, final StudioProgressMonitor monitor,
         final ReferralsInfo referralsInfo )
     {
+        if ( connection.isReadOnly() )
+        {
+            monitor.reportError( NLS.bind( Messages.error__connection_is_readonly, connection.getName() ) );
+            return;
+        }
+
         try
         {
             // Preparing the delete request

Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java?rev=1025611&r1=1025610&r2=1025611&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java Wed Oct 20 15:08:38 2010
@@ -87,6 +87,7 @@ import org.apache.directory.studio.conne
 import org.apache.directory.studio.connection.core.Utils;
 import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 import org.apache.directory.studio.connection.core.io.ConnectionWrapper;
+import org.apache.directory.studio.connection.core.io.ConnectionWrapperUtils;
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.osgi.util.NLS;
 
@@ -355,7 +356,8 @@ public class JNDIConnectionWrapper imple
                     // perform the search
                     NamingEnumeration<SearchResult> result = searchCtx.search( JNDIConnectionWrapper
                         .getSaveJndiName( searchBase ), filter, searchControls );
-                    namingEnumeration = new JndiStudioNamingEnumeration( connection, searchCtx, result, null, searchBase,
+                    namingEnumeration = new JndiStudioNamingEnumeration( connection, searchCtx, result, null,
+                        searchBase,
                         filter, searchControls, aliasesDereferencingMethod, referralsHandlingMethod, controls,
                         requestNum, monitor, referralsInfo );
                 }
@@ -462,7 +464,8 @@ public class JNDIConnectionWrapper imple
                         Referral referral = newReferralsInfo.getNextReferral();
                         if ( referral != null )
                         {
-                            Connection referralConnection = getReferralConnection( referral, monitor, this );
+                            Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral,
+                                monitor, this );
                             if ( referralConnection != null )
                             {
                                 List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
@@ -577,7 +580,8 @@ public class JNDIConnectionWrapper imple
                         Referral referral = newReferralsInfo.getNextReferral();
                         if ( referral != null )
                         {
-                            Connection referralConnection = getReferralConnection( referral, monitor, this );
+                            Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral,
+                                monitor, this );
                             if ( referralConnection != null )
                             {
                                 referralConnection.getConnectionWrapper().renameEntry( oldDn, newDn, deleteOldRdn,
@@ -672,7 +676,8 @@ public class JNDIConnectionWrapper imple
                         Referral referral = newReferralsInfo.getNextReferral();
                         if ( referral != null )
                         {
-                            Connection referralConnection = getReferralConnection( referral, monitor, this );
+                            Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral,
+                                monitor, this );
                             if ( referralConnection != null )
                             {
                                 List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
@@ -773,7 +778,8 @@ public class JNDIConnectionWrapper imple
                         Referral referral = newReferralsInfo.getNextReferral();
                         if ( referral != null )
                         {
-                            Connection referralConnection = getReferralConnection( referral, monitor, this );
+                            Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral,
+                                monitor, this );
                             if ( referralConnection != null )
                             {
                                 List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
@@ -1510,40 +1516,6 @@ public class JNDIConnectionWrapper imple
 
 
     /**
-     * Gets the referral connection from the given URL.
-     * 
-     * @param url the URL
-     * @param monitor the progress monitor
-     * @param source the source
-     * 
-     * @return the referral connection
-     */
-    public static Connection getReferralConnection( Referral referral, StudioProgressMonitor monitor, Object source )
-    {
-        Connection referralConnection = null;
-        IReferralHandler referralHandler = ConnectionCorePlugin.getDefault().getReferralHandler();
-        if ( referralHandler != null )
-        {
-            referralConnection = referralHandler
-                .getReferralConnection( new ArrayList<String>( referral.getLdapUrls() ) );
-
-            // open connection if not yet open
-            if ( referralConnection != null && !referralConnection.getConnectionWrapper().isConnected() )
-            {
-                referralConnection.getConnectionWrapper().connect( monitor );
-                referralConnection.getConnectionWrapper().bind( monitor );
-                for ( IConnectionListener listener : ConnectionCorePlugin.getDefault().getConnectionListeners() )
-                {
-                    listener.connectionOpened( referralConnection, monitor );
-                }
-                ConnectionEventRegistry.fireConnectionOpened( referralConnection, source );
-            }
-        }
-        return referralConnection;
-    }
-
-
-    /**
      * Retrieves all referrals from the ReferralException and
      * creates or updates the ReferralsInfo.
      * 

Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JndiStudioNamingEnumeration.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JndiStudioNamingEnumeration.java?rev=1025611&r1=1025610&r2=1025611&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JndiStudioNamingEnumeration.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JndiStudioNamingEnumeration.java Wed Oct 20 15:08:38 2010
@@ -41,6 +41,7 @@ import org.apache.directory.studio.conne
 import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
 import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
 import org.apache.directory.studio.connection.core.io.AbstractStudioNamingEnumeration;
+import org.apache.directory.studio.connection.core.io.ConnectionWrapperUtils;
 import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
 import org.apache.directory.studio.connection.core.IJndiLogger;
 
@@ -352,7 +353,7 @@ public class JndiStudioNamingEnumeration
                 }
                 List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
                 LdapURL url = new LdapURL( urls.get( 0 ) );
-                Connection referralConnection = JNDIConnectionWrapper.getReferralConnection( referral, monitor, this );
+                Connection referralConnection = ConnectionWrapperUtils.getReferralConnection( referral, monitor, this );
                 if ( referralConnection != null )
                 {
                     done = false;