1 20 21 package org.apache.directory.ldapstudio.browser.common; 22 23 24 import java.util.HashMap ; 25 import java.util.Map ; 26 27 import org.apache.directory.ldapstudio.browser.common.dialogs.SelectReferralConnectionDialog; 28 import org.apache.directory.ldapstudio.browser.core.BrowserCorePlugin; 29 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 30 import org.apache.directory.ldapstudio.browser.core.model.IReferralHandler; 31 import org.apache.directory.ldapstudio.browser.core.model.URL; 32 33 import org.eclipse.ui.PlatformUI; 34 35 36 public class BrowserCommonReferralHandler implements IReferralHandler 37 { 38 39 private Map referralUrlToReferralConnectionCache = new HashMap (); 40 41 42 public IConnection getReferralConnection( final URL referralUrl ) 43 { 44 45 if ( referralUrlToReferralConnectionCache.containsKey( referralUrl ) ) 47 { 48 IConnection referralConnection = ( IConnection ) referralUrlToReferralConnectionCache.get( referralUrl ); 49 if ( referralConnection != null ) 50 { 51 IConnection[] connections = BrowserCorePlugin.getDefault().getConnectionManager().getConnections(); 52 for ( int i = 0; i < connections.length; i++ ) 53 { 54 IConnection connection = connections[i]; 55 if ( referralConnection == connection ) 56 { 57 return referralConnection; 58 } 59 } 60 } 61 } 62 63 referralUrlToReferralConnectionCache.remove( referralUrl ); 64 65 final IConnection[] referralConnection = new IConnection[1]; 67 PlatformUI.getWorkbench().getDisplay().syncExec( new Runnable () 68 { 69 public void run() 70 { 71 SelectReferralConnectionDialog dialog = new SelectReferralConnectionDialog( PlatformUI.getWorkbench() 72 .getDisplay().getActiveShell(), referralUrl ); 73 if ( dialog.open() == SelectReferralConnectionDialog.OK ) 74 { 75 IConnection connection = dialog.getReferralConnection(); 76 referralUrlToReferralConnectionCache.put( referralUrl, connection ); 77 referralConnection[0] = connection; 78 } 79 } 80 } ); 81 82 return referralConnection[0]; 83 } 84 85 } 86 | Popular Tags |