/**************************************************************************** * Copyright (c) 2004, 2007 Composent, Inc. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Composent, Inc. - initial API and implementation *****************************************************************************/ package org.eclipse.ecf.provider.filetransfer.browse; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.ecf.core.identity.IDFactory; import org.eclipse.ecf.core.identity.Namespace; import org.eclipse.ecf.core.security.IConnectContext; import org.eclipse.ecf.core.util.Proxy; import org.eclipse.ecf.filetransfer.IRemoteFileSystemBrowserContainerAdapter; import org.eclipse.ecf.filetransfer.IRemoteFileSystemListener; import org.eclipse.ecf.filetransfer.IRemoteFileSystemRequest; import org.eclipse.ecf.filetransfer.RemoteFileSystemException; import org.eclipse.ecf.filetransfer.identity.IFileID; import org.eclipse.ecf.filetransfer.service.IRemoteFileSystemBrowser; import org.eclipse.ecf.internal.provider.filetransfer.Activator; import org.eclipse.ecf.internal.provider.filetransfer.Messages; import org.eclipse.ecf.provider.filetransfer.identity.FileTransferNamespace; /** * Multi protocol handler for remote file system browser. */ public class MultiProtocolFileSystemBrowserAdapter implements IRemoteFileSystemBrowser { IConnectContext connectContext = null; Proxy proxy = null; /* * (non-Javadoc) * * @see org.eclipse.ecf.filetransfer.IRetrieveFileTransferContainerAdapter#setConnectContextForAuthentication(org.eclipse.ecf.core.security.IConnectContext) */ public void setConnectContextForAuthentication(IConnectContext connectContext) { this.connectContext = connectContext; } /* * (non-Javadoc) * * @see org.eclipse.ecf.filetransfer.IRetrieveFileTransferContainerAdapter#setProxy(org.eclipse.ecf.core.util.Proxy) */ public void setProxy(Proxy proxy) { this.proxy = proxy; } /* (non-Javadoc) * @see org.eclipse.ecf.filetransfer.IRemoteFileSystemBrowserContainerAdapter#getDirectoryNamespace() */ public Namespace getBrowseNamespace() { return IDFactory.getDefault().getNamespaceByName(FileTransferNamespace.PROTOCOL); } /* (non-Javadoc) * @see org.eclipse.ecf.filetransfer.IRemoteFileSystemBrowserContainerAdapter#sendDirectoryRequest(org.eclipse.ecf.filetransfer.identity.IFileID, org.eclipse.ecf.filetransfer.IRemoteFileSystemListener) */ public IRemoteFileSystemRequest sendBrowseRequest(IFileID directoryOrFileID, IRemoteFileSystemListener listener) throws RemoteFileSystemException { Assert.isNotNull(directoryOrFileID); Assert.isNotNull(listener); URL url; try { url = directoryOrFileID.getURL(); } catch (final MalformedURLException e) { throw new RemoteFileSystemException(Messages.AbstractRetrieveFileTransfer_MalformedURLException); } IRemoteFileSystemBrowserContainerAdapter fileSystemBrowser = null; fileSystemBrowser = Activator.getDefault().getBrowseFileTransfer(url.getProtocol()); if (fileSystemBrowser == null) { if (url.getProtocol().equalsIgnoreCase("file")) { //$NON-NLS-1$ LocalFileSystemBrowser fsb = new LocalFileSystemBrowser(directoryOrFileID, listener); return fsb.sendBrowseRequest(); } URLFileSystemBrowser ufsb = new URLFileSystemBrowser(directoryOrFileID, listener, url, connectContext, proxy); return ufsb.sendBrowseRequest(); } // Set connect context fileSystemBrowser.setConnectContextForAuthentication(connectContext); // Set Proxy fileSystemBrowser.setProxy(proxy); return fileSystemBrowser.sendBrowseRequest(directoryOrFileID, listener); } /* (non-Javadoc) * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ public Object getAdapter(Class adapter) { if (adapter == null) return null; final IAdapterManager adapterManager = Activator.getDefault().getAdapterManager(); if (adapterManager == null) return null; return adapterManager.loadAdapter(this, adapter.getName()); } }