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/19 17:00:07 UTC
svn commit: r1024257 - in
/directory/studio/branches/studio-connection-refactoring/plugins:
connection.core/src/main/java/org/apache/directory/studio/connection/core/
connection.core/src/main/java/org/apache/directory/studio/connection/core/io/
connect...
Author: pamarcelot
Date: Tue Oct 19 15:00:06 2010
New Revision: 1024257
URL: http://svn.apache.org/viewvc?rev=1024257&view=rev
Log:
Used the 'Referral' object of Shared instead of our own.
The DirectoryApiConnectionWrapper now asks the user for the connection to use when referral handling is set to automatic.
Modified:
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IReferralHandler.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/CursorNamingEnumeration.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/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/LdifModificationLogger.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionUIReferralHandler.java
directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/SelectReferralConnectionDialog.java
directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/ContinuedSearchResultEntry.java
directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/SearchContinuation.java
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.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/ConnectionCorePlugin.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java Tue Oct 19 15:00:06 2010
@@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.PropertyResourceBundle;
-import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.connection.core.event.CoreEventRunner;
import org.apache.directory.studio.connection.core.event.EventRunner;
import org.apache.directory.studio.connection.core.io.jndi.LdifModificationLogger;
@@ -309,7 +308,7 @@ public class ConnectionCorePlugin extend
// that just cancels referral chasing
referralHandler = new IReferralHandler()
{
- public Connection getReferralConnection( List<LdapURL> referralUrls )
+ public Connection getReferralConnection( List<String> referralUrls )
{
// null cancels referral chasing
return null;
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.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/IJndiLogger.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IJndiLogger.java Tue Oct 19 15:00:06 2010
@@ -26,6 +26,7 @@ import javax.naming.directory.Modificati
import javax.naming.directory.SearchControls;
import javax.naming.ldap.Control;
+import org.apache.directory.shared.ldap.message.Referral;
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;
@@ -178,7 +179,7 @@ public interface IJndiLogger
* @param requestNum the request number
* @param the naming exception if an error occurred, null otherwise
*/
- public void logSearchResultReference( Connection connection, ReferralsInfo.Referral referral,
+ public void logSearchResultReference( Connection connection, Referral referral,
ReferralsInfo referralsInfo, long requestNum, NamingException namingException );
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IReferralHandler.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/IReferralHandler.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IReferralHandler.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/IReferralHandler.java Tue Oct 19 15:00:06 2010
@@ -23,8 +23,6 @@ package org.apache.directory.studio.conn
import java.util.List;
-import org.apache.directory.shared.ldap.util.LdapURL;
-
/**
* Callback interface to request the target connection
@@ -44,6 +42,6 @@ public interface IReferralHandler
* @param referralURLs the referral URLs
* @return the target connection, null to cancel referral chasing
*/
- public Connection getReferralConnection( List<LdapURL> referralUrls );
+ public Connection getReferralConnection( List<String> referralUrls );
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/CursorNamingEnumeration.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/CursorNamingEnumeration.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/CursorNamingEnumeration.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/CursorNamingEnumeration.java Tue Oct 19 15:00:06 2010
@@ -31,12 +31,10 @@ import javax.naming.ldap.Control;
import org.apache.directory.shared.ldap.cursor.Cursor;
import org.apache.directory.shared.ldap.message.Referral;
-import org.apache.directory.shared.ldap.message.ReferralImpl;
import org.apache.directory.shared.ldap.message.Response;
import org.apache.directory.shared.ldap.message.SearchResultDone;
import org.apache.directory.shared.ldap.message.SearchResultEntry;
import org.apache.directory.shared.ldap.message.SearchResultReference;
-import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.util.AttributeUtils;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
@@ -205,26 +203,35 @@ public class CursorNamingEnumeration ext
List<String> referralUrls = new ArrayList<String>( referral.getLdapUrls() );
LdapURL url = new LdapURL( referralUrls.get( 0 ) );
- String referralSearchBase = url.getDn() != null && !url.getDn().isEmpty() ? url.getDn().getName()
- : searchBase;
- String referralFilter = url.getFilter() != null && url.getFilter().length() == 0 ? url.getFilter()
- : filter;
- SearchControls referralSearchControls = new SearchControls();
- referralSearchControls.setSearchScope( url.getScope().getScope() > -1 ? url.getScope().getScope()
- : searchControls.getSearchScope() );
- referralSearchControls.setReturningAttributes( url.getAttributes() != null
- && url.getAttributes().size() > 0 ? url.getAttributes().toArray(
- new String[url.getAttributes().size()] ) : searchControls.getReturningAttributes() );
- referralSearchControls.setCountLimit( searchControls.getCountLimit() );
- referralSearchControls.setTimeLimit( searchControls.getTimeLimit() );
- referralSearchControls.setDerefLinkFlag( searchControls.getDerefLinkFlag() );
- referralSearchControls.setReturningObjFlag( searchControls.getReturningObjFlag() );
-
- cursorNamingEnumeration = ( CursorNamingEnumeration ) connection.getConnectionWrapper().search(
- referralSearchBase, referralFilter, referralSearchControls, aliasesDereferencingMethod,
- referralsHandlingMethod, controls, monitor, referralsInfo );
+ Connection referralConnection = JNDIConnectionWrapper.getReferralConnection( referral, monitor,
+ this );
+ if ( referralConnection != null )
+ {
+ String referralSearchBase = url.getDn() != null && !url.getDn().isEmpty() ? url.getDn()
+ .getName()
+ : searchBase;
+ String referralFilter = url.getFilter() != null && url.getFilter().length() == 0 ? url
+ .getFilter()
+ : filter;
+ SearchControls referralSearchControls = new SearchControls();
+ referralSearchControls.setSearchScope( url.getScope().getScope() > -1 ? url.getScope()
+ .getScope()
+ : searchControls.getSearchScope() );
+ referralSearchControls.setReturningAttributes( url.getAttributes() != null
+ && url.getAttributes().size() > 0 ? url.getAttributes().toArray(
+ new String[url.getAttributes().size()] ) : searchControls.getReturningAttributes() );
+ referralSearchControls.setCountLimit( searchControls.getCountLimit() );
+ referralSearchControls.setTimeLimit( searchControls.getTimeLimit() );
+ referralSearchControls.setDerefLinkFlag( searchControls.getDerefLinkFlag() );
+ referralSearchControls.setReturningObjFlag( searchControls.getReturningObjFlag() );
+
+ cursorNamingEnumeration = ( CursorNamingEnumeration ) referralConnection.getConnectionWrapper()
+ .search(
+ referralSearchBase, referralFilter, referralSearchControls, aliasesDereferencingMethod,
+ referralsHandlingMethod, controls, monitor, referralsInfo );
- return cursorNamingEnumeration.hasMore();
+ return cursorNamingEnumeration.hasMore();
+ }
}
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/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/DirectoryApiConnectionWrapper.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/DirectoryApiConnectionWrapper.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/DirectoryApiConnectionWrapper.java Tue Oct 19 15:00:06 2010
@@ -24,12 +24,10 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import javax.naming.NamingEnumeration;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import org.apache.directory.ldap.client.api.LdapConnectionConfig;
@@ -44,7 +42,6 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.message.AddRequest;
import org.apache.directory.shared.ldap.message.AddRequestImpl;
import org.apache.directory.shared.ldap.message.AliasDerefMode;
-import org.apache.directory.shared.ldap.message.ArrayNamingEnumeration;
import org.apache.directory.shared.ldap.message.DeleteRequest;
import org.apache.directory.shared.ldap.message.DeleteRequestImpl;
import org.apache.directory.shared.ldap.message.ModifyDnRequest;
@@ -54,19 +51,14 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.message.Response;
import org.apache.directory.shared.ldap.message.SearchRequest;
import org.apache.directory.shared.ldap.message.SearchRequestImpl;
-import org.apache.directory.shared.ldap.message.SearchResultEntry;
-import org.apache.directory.shared.ldap.message.SearchResultReference;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.util.AttributeUtils;
-import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
import org.apache.directory.studio.connection.core.Connection;
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.jndi.ReferralsInfo;
-import org.apache.directory.studio.connection.core.io.jndi.StudioSearchResult;
-import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo.Referral;
import org.apache.directory.studio.connection.core.io.jndi.StudioNamingEnumeration;
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=1024257&r1=1024256&r2=1024257&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 Tue Oct 19 15:00:06 2010
@@ -23,6 +23,7 @@ package org.apache.directory.studio.conn
import java.io.File;
import java.io.IOException;
import java.security.PrivilegedAction;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
@@ -66,8 +67,8 @@ import javax.security.auth.login.LoginEx
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
-import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
-import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.message.Referral;
+import org.apache.directory.shared.ldap.message.ReferralImpl;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
import org.apache.directory.studio.connection.core.Connection;
@@ -86,7 +87,6 @@ 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.jndi.ReferralsInfo.Referral;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.osgi.util.NLS;
@@ -465,7 +465,9 @@ public class JNDIConnectionWrapper imple
Connection referralConnection = getReferralConnection( referral, monitor, this );
if ( referralConnection != null )
{
- String referralDn = referral.getLdapURLs().get( 0 ).getDn().getName();
+ List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
+
+ String referralDn = new LdapURL( urls.get( 0 ) ).getDn().getName();
referralConnection.getConnectionWrapper().modifyEntry( referralDn,
modificationItems, controls, monitor, newReferralsInfo );
}
@@ -481,6 +483,10 @@ public class JNDIConnectionWrapper imple
{
namingException = ne;
}
+ catch ( LdapURLEncodingException e )
+ {
+ namingException = new NamingException( e.getMessage() );
+ }
}
catch ( NamingException ne )
{
@@ -669,7 +675,9 @@ public class JNDIConnectionWrapper imple
Connection referralConnection = getReferralConnection( referral, monitor, this );
if ( referralConnection != null )
{
- String referralDn = referral.getLdapURLs().get( 0 ).getDn().getName();
+ List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
+
+ String referralDn = new LdapURL( urls.get( 0 ) ).getDn().getName();
referralConnection.getConnectionWrapper().createEntry( referralDn, attributes,
controls, monitor, newReferralsInfo );
}
@@ -683,6 +691,10 @@ public class JNDIConnectionWrapper imple
{
namingException = ne;
}
+ catch ( LdapURLEncodingException e )
+ {
+ namingException = new NamingException( e.getMessage() );
+ }
}
catch ( NamingException ne )
{
@@ -764,7 +776,9 @@ public class JNDIConnectionWrapper imple
Connection referralConnection = getReferralConnection( referral, monitor, this );
if ( referralConnection != null )
{
- String referralDn = referral.getLdapURLs().get( 0 ).getDn().getName();
+ List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
+
+ String referralDn = new LdapURL( urls.get( 0 ) ).getDn().getName();
referralConnection.getConnectionWrapper().deleteEntry( referralDn, controls,
monitor, newReferralsInfo );
}
@@ -778,6 +792,10 @@ public class JNDIConnectionWrapper imple
{
namingException = ne;
}
+ catch ( LdapURLEncodingException e )
+ {
+ namingException = new NamingException( e.getMessage() );
+ }
}
catch ( NamingException ne )
{
@@ -1506,7 +1524,8 @@ public class JNDIConnectionWrapper imple
IReferralHandler referralHandler = ConnectionCorePlugin.getDefault().getReferralHandler();
if ( referralHandler != null )
{
- referralConnection = referralHandler.getReferralConnection( referral.getLdapURLs() );
+ referralConnection = referralHandler
+ .getReferralConnection( new ArrayList<String>( referral.getLdapUrls() ) );
// open connection if not yet open
if ( referralConnection != null && !referralConnection.getConnectionWrapper().isConnected() )
@@ -1582,27 +1601,16 @@ public class JNDIConnectionWrapper imple
private static Referral handleReferralException( ReferralException referralException,
ReferralsInfo initialReferralsInfo, Referral referral ) throws NamingException
{
- try
- {
- String info = ( String ) referralException.getReferralInfo();
- String name = referralException.getRemainingName().toString();
- LdapURL url = new LdapURL( info );
- DN dn = new DN( name );
+ String info = ( String ) referralException.getReferralInfo();
- if ( referral == null )
- {
- referral = initialReferralsInfo.new Referral( dn );
- initialReferralsInfo.addReferral( referral );
- }
- referral.addUrl( url );
- }
- catch ( LdapURLEncodingException e )
- {
- }
- catch ( LdapInvalidDnException e )
+ if ( referral == null )
{
+ referral = new ReferralImpl();
+ initialReferralsInfo.addReferral( referral );
}
+ referral.addLdapUrl( info );
+
return referral;
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.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/LdifModificationLogger.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifModificationLogger.java Tue Oct 19 15:00:06 2010
@@ -48,6 +48,7 @@ import javax.naming.directory.SearchCont
import javax.naming.ldap.Control;
import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
+import org.apache.directory.shared.ldap.message.Referral;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.name.RDN;
import org.apache.directory.studio.connection.core.Connection;
@@ -465,7 +466,7 @@ public class LdifModificationLogger impl
/**
* {@inheritDoc}
*/
- public void logSearchResultReference( Connection connection, ReferralsInfo.Referral referral,
+ public void logSearchResultReference( Connection connection, Referral referral,
ReferralsInfo referralsInfo, long requestNum, NamingException ex )
{
// don't log searches
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.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/LdifSearchLogger.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/LdifSearchLogger.java Tue Oct 19 15:00:06 2010
@@ -47,14 +47,15 @@ import javax.naming.directory.SearchCont
import javax.naming.ldap.Control;
import org.apache.commons.lang.StringUtils;
+import org.apache.directory.shared.ldap.message.Referral;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.connection.core.Connection;
+import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
import org.apache.directory.studio.connection.core.ConnectionCoreConstants;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
import org.apache.directory.studio.connection.core.ConnectionManager;
import org.apache.directory.studio.connection.core.IJndiLogger;
import org.apache.directory.studio.connection.core.Utils;
-import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
import org.apache.directory.studio.ldifparser.LdifFormatParameters;
import org.apache.directory.studio.ldifparser.model.container.LdifContentRecord;
import org.apache.directory.studio.ldifparser.model.lines.LdifAttrValLine;
@@ -410,7 +411,7 @@ public class LdifSearchLogger implements
/**
* {@inheritDoc}
*/
- public void logSearchResultReference( Connection connection, ReferralsInfo.Referral referral,
+ public void logSearchResultReference( Connection connection, Referral referral,
ReferralsInfo referralsInfo, long requestNum, NamingException ex )
{
if ( !isSearchResultEntryLogEnabled() )
@@ -419,7 +420,7 @@ public class LdifSearchLogger implements
}
Collection<LdifLineBase> lines = new ArrayList<LdifLineBase>();
- lines.add( LdifCommentLine.create( "# reference : " + ( referral != null ? referral.getLdapURLs() : "null" ) ) ); //$NON-NLS-1$ //$NON-NLS-2$
+ lines.add( LdifCommentLine.create( "# reference : " + ( referral != null ? referral.getLdapUrls() : "null" ) ) ); //$NON-NLS-1$ //$NON-NLS-2$
lines.add( LdifSepLine.create() );
String formattedString = ""; //$NON-NLS-1$
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.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/ReferralsInfo.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/ReferralsInfo.java Tue Oct 19 15:00:06 2010
@@ -20,18 +20,13 @@
package org.apache.directory.studio.connection.core.io.jndi;
-import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
-import java.util.List;
import java.util.Set;
import javax.naming.LinkLoopException;
-import org.apache.directory.shared.ldap.name.DN;
-import org.apache.directory.shared.ldap.util.LdapURL;
-import org.apache.directory.studio.connection.core.Messages;
-import org.eclipse.osgi.util.NLS;
+import org.apache.directory.shared.ldap.message.Referral;
/**
@@ -44,7 +39,7 @@ public class ReferralsInfo
{
private LinkedList<Referral> referralsToProcess = new LinkedList<Referral>();
- private Set<LdapURL> processedUrls = new HashSet<LdapURL>();
+ private Set<String> processedUrls = new HashSet<String>();
/**
@@ -73,7 +68,7 @@ public class ReferralsInfo
if ( !referralsToProcess.isEmpty() )
{
Referral referral = referralsToProcess.removeFirst();
- for ( LdapURL url : referral.urls )
+ for ( String url : referral.getLdapUrls() )
{
processedUrls.add( url );
}
@@ -95,58 +90,4 @@ public class ReferralsInfo
{
return !referralsToProcess.isEmpty();
}
-
- public class Referral
- {
- private List<LdapURL> urls = new ArrayList<LdapURL>();
- private DN dn;
-
-
- public Referral( DN dn )
- {
- this.dn = dn;
- }
-
-
- /**
- * Gets the list of {@link LdapURL}.
- *
- * @return the list of {@link LdapURL}
- */
- public List<LdapURL> getLdapURLs()
- {
- return urls;
- }
-
-
- /**
- * Gets the DN.
- *
- * @return the DN
- */
- public DN getDn()
- {
- return dn;
- }
-
-
- /**
- * Adds the URL.
- *
- * @param url the URL
- *
- * @throws LinkLoopException if a loop was encountered.
- */
- public void addUrl( LdapURL url ) throws LinkLoopException
- {
- if ( processedUrls.contains( url ) )
- {
- throw new LinkLoopException( NLS.bind( Messages.error__loop_detected, url ) );
- }
-
- urls.add( url );
- }
-
- }
-
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.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/StudioNamingEnumeration.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/StudioNamingEnumeration.java Tue Oct 19 15:00:06 2010
@@ -33,6 +33,8 @@ import javax.naming.directory.SearchResu
import javax.naming.ldap.Control;
import javax.naming.ldap.LdapContext;
+import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
+import org.apache.directory.shared.ldap.message.Referral;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.common.core.jobs.StudioProgressMonitor;
import org.apache.directory.studio.connection.core.Connection;
@@ -40,7 +42,6 @@ import org.apache.directory.studio.conne
import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
import org.apache.directory.studio.connection.core.IJndiLogger;
-import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo.Referral;
/**
@@ -283,111 +284,126 @@ public class StudioNamingEnumeration imp
private boolean checkReferral()
{
- boolean done = false;
-
- // ignore exception if referrals handling method is IGNORE
- // follow referral if referrals handling method is FOLLOW
- // follow manually if referrals handling method is FOLLOW_MANUALLY
- if ( referralsHandlingMethod == ReferralHandlingMethod.IGNORE )
- {
- done = true;
- delegate = null;
- }
- else if ( referralsHandlingMethod == ReferralHandlingMethod.FOLLOW_MANUALLY )
+ try
{
- delegate = new NamingEnumeration<SearchResult>()
- {
+ boolean done = false;
- List<LdapURL> urls = new ArrayList<LdapURL>();
+ // ignore exception if referrals handling method is IGNORE
+ // follow referral if referrals handling method is FOLLOW
+ // follow manually if referrals handling method is FOLLOW_MANUALLY
+ if ( referralsHandlingMethod == ReferralHandlingMethod.IGNORE )
+ {
+ done = true;
+ delegate = null;
+ }
+ else if ( referralsHandlingMethod == ReferralHandlingMethod.FOLLOW_MANUALLY )
+ {
+ delegate = new NamingEnumeration<SearchResult>()
{
- while ( referralsInfo.hasMoreReferrals() )
+
+ List<String> urls = new ArrayList<String>();
+ {
+ while ( referralsInfo.hasMoreReferrals() )
{
Referral referral = referralsInfo.getNextReferral();
for ( IJndiLogger logger : ConnectionCorePlugin.getDefault().getJndiLoggers() )
{
logger.logSearchResultReference( connection, referral, referralsInfo, requestNum, null );
}
- urls.addAll( referral.getLdapURLs() );
+ urls.addAll( referral.getLdapUrls() );
}
}
- public SearchResult nextElement()
+ public SearchResult nextElement()
{
throw new UnsupportedOperationException( "Call next() instead of nextElement() !" );
}
- public boolean hasMoreElements()
+ public boolean hasMoreElements()
{
throw new UnsupportedOperationException( "Call hasMore() instead of hasMoreElements() !" );
}
- public SearchResult next() throws NamingException
+ public SearchResult next() throws NamingException
{
- LdapURL url = urls.remove( 0 );
- SearchResult searchResult = new SearchResult( url.getDn().getName(), null, new BasicAttributes(),
- false );
- searchResult.setNameInNamespace( url.getDn().getName() );
- StudioSearchResult ssr = new StudioSearchResult( searchResult, null, false, url );
- return ssr;
+ try
+ {
+ LdapURL url = new LdapURL( urls.remove( 0 ) );
+ SearchResult searchResult = new SearchResult( url.getDn().getName(), null,
+ new BasicAttributes(),
+ false );
+ searchResult.setNameInNamespace( url.getDn().getName() );
+ StudioSearchResult ssr = new StudioSearchResult( searchResult, null, false, url );
+ return ssr;
+ }
+ catch ( LdapURLEncodingException e )
+ {
+ throw new NamingException( e.getMessage() );
+ }
}
- public boolean hasMore() throws NamingException
+ public boolean hasMore() throws NamingException
{
return !urls.isEmpty();
}
- public void close() throws NamingException
+ public void close() throws NamingException
{
urls.clear();
referralsInfo = null;
}
- };
- }
- else if ( referralsHandlingMethod == ReferralHandlingMethod.FOLLOW )
- {
- Referral referral = referralsInfo.getNextReferral();
- for ( IJndiLogger logger : ConnectionCorePlugin.getDefault().getJndiLoggers() )
- {
- logger.logSearchResultReference( connection, referral, referralsInfo, requestNum, null );
- }
-
- LdapURL url = referral.getLdapURLs().get( 0 );
- Connection referralConnection = JNDIConnectionWrapper.getReferralConnection( referral, monitor, this );
- if ( referralConnection != null )
- {
- done = false;
- String referralSearchBase = url.getDn() != null && !url.getDn().isEmpty() ? url.getDn().getName()
- : searchBase;
- String referralFilter = url.getFilter() != null && url.getFilter().length() == 0 ? url.getFilter()
- : filter;
- SearchControls referralSearchControls = new SearchControls();
- referralSearchControls.setSearchScope( url.getScope().getScope() > -1 ? url.getScope().getScope()
- : searchControls
- .getSearchScope() );
- referralSearchControls.setReturningAttributes( url.getAttributes() != null
- && url.getAttributes().size() > 0 ? url.getAttributes().toArray(
- new String[url.getAttributes().size()] ) : searchControls.getReturningAttributes() );
- referralSearchControls.setCountLimit( searchControls.getCountLimit() );
- referralSearchControls.setTimeLimit( searchControls.getTimeLimit() );
- referralSearchControls.setDerefLinkFlag( searchControls.getDerefLinkFlag() );
- referralSearchControls.setReturningObjFlag( searchControls.getReturningObjFlag() );
-
- delegate = referralConnection.getConnectionWrapper().search( referralSearchBase, referralFilter,
- referralSearchControls, aliasesDereferencingMethod, referralsHandlingMethod, controls, monitor,
- referralsInfo );
+ };
}
- else
+ else if ( referralsHandlingMethod == ReferralHandlingMethod.FOLLOW )
{
- done = true;
- delegate = null;
+ Referral referral = referralsInfo.getNextReferral();
+ for ( IJndiLogger logger : ConnectionCorePlugin.getDefault().getJndiLoggers() )
+ {
+ logger.logSearchResultReference( connection, referral, referralsInfo, requestNum, null );
+ }
+ List<String> urls = new ArrayList<String>( referral.getLdapUrls() );
+ LdapURL url = new LdapURL( urls.get( 0 ) );
+ Connection referralConnection = JNDIConnectionWrapper.getReferralConnection( referral, monitor, this );
+ if ( referralConnection != null )
+ {
+ done = false;
+ String referralSearchBase = url.getDn() != null && !url.getDn().isEmpty() ? url.getDn().getName()
+ : searchBase;
+ String referralFilter = url.getFilter() != null && url.getFilter().length() == 0 ? url.getFilter()
+ : filter;
+ SearchControls referralSearchControls = new SearchControls();
+ referralSearchControls.setSearchScope( url.getScope().getScope() > -1 ? url.getScope().getScope()
+ : searchControls
+ .getSearchScope() );
+ referralSearchControls.setReturningAttributes( url.getAttributes() != null
+ && url.getAttributes().size() > 0 ? url.getAttributes().toArray(
+ new String[url.getAttributes().size()] ) : searchControls.getReturningAttributes() );
+ referralSearchControls.setCountLimit( searchControls.getCountLimit() );
+ referralSearchControls.setTimeLimit( searchControls.getTimeLimit() );
+ referralSearchControls.setDerefLinkFlag( searchControls.getDerefLinkFlag() );
+ referralSearchControls.setReturningObjFlag( searchControls.getReturningObjFlag() );
+
+ delegate = referralConnection.getConnectionWrapper().search( referralSearchBase, referralFilter,
+ referralSearchControls, aliasesDereferencingMethod, referralsHandlingMethod, controls, monitor,
+ referralsInfo );
+ }
+ else
+ {
+ done = true;
+ delegate = null;
+ }
}
+ return done;
+ }
+ catch ( LdapURLEncodingException e )
+ {
+ return false;
}
- return done;
}
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionUIReferralHandler.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionUIReferralHandler.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionUIReferralHandler.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/ConnectionUIReferralHandler.java Tue Oct 19 15:00:06 2010
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
@@ -64,37 +65,40 @@ public class ConnectionUIReferralHandler
/**
* {@inheritDoc}
*/
- public Connection getReferralConnection( final List<LdapURL> referralUrls )
+ public Connection getReferralConnection( final List<String> referralUrls )
{
- // check cache
- for ( LdapURL url : referralUrls )
+ final Connection[] referralConnections = new Connection[1];
+ try
{
- String normalizedUrl = Utils.getSimpleNormalizedUrl( url );
-
- if ( referralUrlToReferralConnectionCache.containsKey( normalizedUrl ) )
+ // check cache
+ for ( String url : referralUrls )
{
- // check if referral connection exists in connection manager
- Connection referralConnection = referralUrlToReferralConnectionCache.get( normalizedUrl );
- Connection[] connections = ConnectionCorePlugin.getDefault().getConnectionManager().getConnections();
- for ( int i = 0; i < connections.length; i++ )
+ String normalizedUrl = Utils.getSimpleNormalizedUrl( new LdapURL( url ) );
+
+ if ( referralUrlToReferralConnectionCache.containsKey( normalizedUrl ) )
{
- Connection connection = connections[i];
- if ( referralConnection == connection )
+ // check if referral connection exists in connection manager
+ Connection referralConnection = referralUrlToReferralConnectionCache.get( normalizedUrl );
+ Connection[] connections = ConnectionCorePlugin.getDefault().getConnectionManager()
+ .getConnections();
+ for ( int i = 0; i < connections.length; i++ )
{
- return referralConnection;
+ Connection connection = connections[i];
+ if ( referralConnection == connection )
+ {
+ return referralConnection;
+ }
}
- }
- // referral connection doesn't exist in connection manager, remove it from cache
- referralUrlToReferralConnectionCache.remove( normalizedUrl );
+ // referral connection doesn't exist in connection manager, remove it from cache
+ referralUrlToReferralConnectionCache.remove( normalizedUrl );
+ }
}
- }
- // open dialog
- final Connection[] referralConnections = new Connection[1];
- PlatformUI.getWorkbench().getDisplay().syncExec( new Runnable()
- {
- public void run()
+ // open dialog
+ PlatformUI.getWorkbench().getDisplay().syncExec( new Runnable()
+ {
+ public void run()
{
SelectReferralConnectionDialog dialog = new SelectReferralConnectionDialog( PlatformUI.getWorkbench()
.getDisplay().getActiveShell(), referralUrls );
@@ -104,17 +108,22 @@ public class ConnectionUIReferralHandler
referralConnections[0] = connection;
}
}
- } );
+ } );
- // put to cache
- if ( referralConnections[0] != null )
- {
- for ( LdapURL url : referralUrls )
+ // put to cache
+ if ( referralConnections[0] != null )
{
- String normalizedUrl = Utils.getSimpleNormalizedUrl( url );
- referralUrlToReferralConnectionCache.put( normalizedUrl, referralConnections[0] );
+ for ( String url : referralUrls )
+ {
+ String normalizedUrl = Utils.getSimpleNormalizedUrl( new LdapURL( url ) );
+ referralUrlToReferralConnectionCache.put( normalizedUrl, referralConnections[0] );
+ }
}
}
+ catch ( LdapURLEncodingException e )
+ {
+ // Will never occur
+ }
return referralConnections[0];
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/SelectReferralConnectionDialog.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/SelectReferralConnectionDialog.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/SelectReferralConnectionDialog.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/dialogs/SelectReferralConnectionDialog.java Tue Oct 19 15:00:06 2010
@@ -23,6 +23,7 @@ package org.apache.directory.studio.conn
import java.util.List;
+import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
import org.apache.directory.shared.ldap.util.LdapURL;
import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils;
import org.apache.directory.studio.connection.core.Connection;
@@ -59,7 +60,7 @@ public class SelectReferralConnectionDia
private String title;
- private List<LdapURL> referralUrls;
+ private List<String> referralUrls;
private Connection selectedConnection;
@@ -78,7 +79,7 @@ public class SelectReferralConnectionDia
* @param parentShell the parent shell
* @param referralUrl the referral URL
*/
- public SelectReferralConnectionDialog( Shell parentShell, List<LdapURL> referralUrls )
+ public SelectReferralConnectionDialog( Shell parentShell, List<String> referralUrls )
{
super( parentShell );
super.setShellStyle( super.getShellStyle() | SWT.RESIZE );
@@ -166,9 +167,9 @@ public class SelectReferralConnectionDia
BaseWidgetUtils.createWrappedLabeledText( composite, Messages
.getString( "SelectReferralConnectionDialog.SelectConnectionToHandleReferral" ), 1 ); //$NON-NLS-1$
- for ( LdapURL url : referralUrls )
+ for ( String url : referralUrls )
{
- BaseWidgetUtils.createWrappedLabeledText( composite, " - " + url.toString(), 1 ); //$NON-NLS-1$
+ BaseWidgetUtils.createWrappedLabeledText( composite, " - " + url, 1 ); //$NON-NLS-1$
}
// create configuration
@@ -231,13 +232,21 @@ public class SelectReferralConnectionDia
Connection connection = connections[i];
LdapURL connectionUrl = connection.getUrl();
String normalizedConnectionUrl = Utils.getSimpleNormalizedUrl( connectionUrl );
- for ( LdapURL url : referralUrls )
+ for ( String url : referralUrls )
{
- if ( url != null && Utils.getSimpleNormalizedUrl( url ).equals( normalizedConnectionUrl ) )
+ try
{
- mainWidget.getViewer().reveal( connection );
- mainWidget.getViewer().setSelection( new StructuredSelection( connection ), true );
- break;
+ if ( url != null
+ && Utils.getSimpleNormalizedUrl( new LdapURL( url ) ).equals( normalizedConnectionUrl ) )
+ {
+ mainWidget.getViewer().reveal( connection );
+ mainWidget.getViewer().setSelection( new StructuredSelection( connection ), true );
+ break;
+ }
+ }
+ catch ( LdapURLEncodingException e )
+ {
+ // Will never occur
}
}
}
Modified: directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/ContinuedSearchResultEntry.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/ContinuedSearchResultEntry.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/ContinuedSearchResultEntry.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/ContinuedSearchResultEntry.java Tue Oct 19 15:00:06 2010
@@ -147,8 +147,8 @@ public class ContinuedSearchResultEntry
public void resolve()
{
// get referral connection, exit if canceled
- List<LdapURL> urls = new ArrayList<LdapURL>();
- urls.add( url );
+ List<String> urls = new ArrayList<String>();
+ urls.add( url.toString() );
Connection referralConnection = ConnectionCorePlugin.getDefault().getReferralHandler().getReferralConnection(
urls );
if ( referralConnection == null )
Modified: directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/SearchContinuation.java
URL: http://svn.apache.org/viewvc/directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/SearchContinuation.java?rev=1024257&r1=1024256&r2=1024257&view=diff
==============================================================================
--- directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/SearchContinuation.java (original)
+++ directory/studio/branches/studio-connection-refactoring/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/SearchContinuation.java Tue Oct 19 15:00:06 2010
@@ -151,8 +151,8 @@ public class SearchContinuation extends
public void resolve()
{
// get referral connection, exit if canceled
- List<LdapURL> urls = new ArrayList<LdapURL>();
- urls.add( searchContinuationURL );
+ List<String> urls = new ArrayList<String>();
+ urls.add( searchContinuationURL.toString() );
Connection referralConnection = ConnectionCorePlugin.getDefault().getReferralHandler().getReferralConnection(
urls );
if ( referralConnection == null )