1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-06 07:45:50 +02:00

[183824][api] Forward SystemMessageException from IRemoteFileSubsystem rather than handling it

This commit is contained in:
Martin Oberhuber 2007-05-10 16:02:01 +00:00
parent a289426950
commit 0c96066b98
16 changed files with 292 additions and 371 deletions

View file

@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType * Martin Oberhuber (Wind River) - [175262] IHost.getSystemType() should return IRSESystemType
* Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods * Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.files.ui.resources; package org.eclipse.rse.files.ui.resources;
@ -599,7 +600,14 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP
return false; return false;
} }
subsystem.download(remoteFile, localPath, remoteFile.getEncoding(), monitor); try
{
subsystem.download(remoteFile, localPath, remoteFile.getEncoding(), monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
if (monitor.isCanceled()) if (monitor.isCanceled())
{ {
return false; return false;

View file

@ -16,6 +16,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods * Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.files.ui.resources; package org.eclipse.rse.files.ui.resources;
@ -217,7 +218,7 @@ public class UniversalFileTransferUtility
} }
} }
} }
catch (final RemoteFileIOException e) catch (final SystemMessageException e)
{ {
runInDisplayThread(new Runnable() { runInDisplayThread(new Runnable() {
public void run() { public void run() {
@ -1162,6 +1163,10 @@ public class UniversalFileTransferUtility
newFilePathList.add(newPath); newFilePathList.add(newPath);
} }
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (CoreException e) catch (CoreException e)
{ {
e.printStackTrace(); e.printStackTrace();
@ -1378,6 +1383,10 @@ public class UniversalFileTransferUtility
return newTargetFolder; return newTargetFolder;
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (CoreException e) catch (CoreException e)
{ {
e.printStackTrace(); e.printStackTrace();
@ -1456,15 +1465,19 @@ public class UniversalFileTransferUtility
monitor.done(); monitor.done();
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
if (newPath == null) cleanup(destinationArchive, null);
else cleanup(destinationArchive, new File(newPath));
throw e; throw e;
} }
if (newPath == null) cleanup(destinationArchive, null); finally {
else cleanup(destinationArchive, new File(newPath)); if (newPath == null) cleanup(destinationArchive, null);
else cleanup(destinationArchive, new File(newPath));
}
} }
protected static void setReadOnly(IFile file, boolean flag) protected static void setReadOnly(IFile file, boolean flag)
@ -1698,6 +1711,11 @@ public class UniversalFileTransferUtility
} }
} }
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
cleanup(cpdest, dest);
}
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
@ -1718,6 +1736,10 @@ public class UniversalFileTransferUtility
{ {
arc1.getParentRemoteFileSubSystem().delete(arc1, null); arc1.getParentRemoteFileSubSystem().delete(arc1, null);
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();

View file

@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType * Martin Oberhuber (Wind River) - [184095] Replace systemTypeName by IRSESystemType
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -113,7 +114,7 @@ public class SystemCombineAction extends SystemExtractToAction {
} }
catch (SystemMessageException e) catch (SystemMessageException e)
{ {
System.out.println(e.getMessage()); SystemMessageDialog.displayMessage(e);
} }
IProgressMonitor monitor = new NullProgressMonitor(); IProgressMonitor monitor = new NullProgressMonitor();
for (int i = 0; i < _selected.size(); i++) for (int i = 0; i < _selected.size(); i++)

View file

@ -12,6 +12,7 @@
* *
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -169,8 +170,8 @@ public class SystemExtractAction extends SystemBaseAction
SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_OPERATION_FAILED); SystemMessage msg = RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_OPERATION_FAILED);
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), msg); SystemMessageDialog dlg = new SystemMessageDialog(getShell(), msg);
dlg.open(); dlg.open();
System.out.println(e.getMessage()); //System.out.println(e.getMessage());
System.out.println("Could not extract " + sources[j].getAbsolutePath()); //$NON-NLS-1$ //System.out.println("Could not extract " + sources[j].getAbsolutePath()); //$NON-NLS-1$
} }
} }
} }

View file

@ -12,6 +12,7 @@
* *
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -147,13 +148,13 @@ public class SystemUploadConflictAction extends SystemBaseAction implements Runn
properties.setDirty(false); properties.setDirty(false);
properties.setUsedBinaryTransfer(_remoteFile.isBinary()); properties.setUsedBinaryTransfer(_remoteFile.isBinary());
} }
catch (RemoteFileSecurityException e) catch (final SystemMessageException e)
{ {
e.printStackTrace(); Display.getDefault().asyncExec(new Runnable() {
} public void run() {
catch (RemoteFileIOException e) SystemMessageDialog.displayMessage(e);
{ }
e.printStackTrace(); });
} }
catch (Exception e) catch (Exception e)
{ {

View file

@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.propertypages; package org.eclipse.rse.internal.files.ui.propertypages;
@ -26,6 +27,7 @@ import java.util.List;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.rse.core.events.ISystemResourceChangeEvents; import org.eclipse.rse.core.events.ISystemResourceChangeEvents;
import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources; import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.RemoteFileIOException; import org.eclipse.rse.services.files.RemoteFileIOException;
import org.eclipse.rse.services.files.RemoteFileSecurityException; import org.eclipse.rse.services.files.RemoteFileSecurityException;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
@ -462,6 +464,9 @@ public class SystemFilePropertyPage extends SystemBasePropertyPage
catch (RemoteFileSecurityException exc) { catch (RemoteFileSecurityException exc) {
setMessage(RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_SECURITY_ERROR)); setMessage(RSEUIPlugin.getPluginMessage(ISystemMessages.FILEMSG_SECURITY_ERROR));
} }
catch (SystemMessageException e) {
setMessage(e.getSystemMessage());
}
} }
// set the encoding // set the encoding

View file

@ -16,6 +16,7 @@
* Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation * Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation
* Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods * Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.files.ui.view; package org.eclipse.rse.internal.files.ui.view;
@ -96,8 +97,6 @@ import org.eclipse.rse.services.clientserver.SystemSearchString;
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager; import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.RemoteFileIOException;
import org.eclipse.rse.services.files.RemoteFileSecurityException;
import org.eclipse.rse.services.search.HostSearchResultSet; import org.eclipse.rse.services.search.HostSearchResultSet;
import org.eclipse.rse.services.search.IHostSearchConstants; import org.eclipse.rse.services.search.IHostSearchConstants;
import org.eclipse.rse.services.search.IHostSearchResultConfiguration; import org.eclipse.rse.services.search.IHostSearchResultConfiguration;
@ -1957,6 +1956,10 @@ public class SystemViewRemoteFileAdapter
resultSet.setMessage(msg); resultSet.setMessage(msg);
} }
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
@ -1982,6 +1985,10 @@ public class SystemViewRemoteFileAdapter
} }
} }
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
@ -2214,15 +2221,11 @@ public class SystemViewRemoteFileAdapter
return result; return result;
} }
catch (RemoteFileIOException e) catch (SystemMessageException e)
{ {
return e.getSystemMessage(); return e.getSystemMessage();
} }
catch (RemoteFileSecurityException e)
{
return e.getSystemMessage();
}
catch (Exception e) catch (Exception e)
{ {
} }

View file

@ -1,5 +1,3 @@
package org.eclipse.rse.internal.importexport.files;
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2000, 2007 IBM Corporation and others. * Copyright (c) 2000, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
@ -9,7 +7,10 @@ package org.eclipse.rse.internal.importexport.files;
* *
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * IBM Corporation - initial API and implementation
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.importexport.files;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -20,8 +21,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IPath;
import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.services.clientserver.SystemEncodingUtil; import org.eclipse.rse.services.clientserver.SystemEncodingUtil;
import org.eclipse.rse.services.files.RemoteFileException; import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.RemoteFileSecurityException;
import org.eclipse.rse.subsystems.files.core.model.RemoteFileUtility; import org.eclipse.rse.subsystems.files.core.model.RemoteFileUtility;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
@ -61,8 +61,9 @@ class RemoteExporter {
/** /**
* Writes the passed resource to the specified location recursively * Writes the passed resource to the specified location recursively
* @throws SystemMessageException TODO
*/ */
public void write(IResource resource, IPath destinationPath) throws IOException, CoreException, RemoteFileSecurityException, RemoteFileException { public void write(IResource resource, IPath destinationPath) throws IOException, CoreException, SystemMessageException {
if (resource.getType() == IResource.FILE) if (resource.getType() == IResource.FILE)
writeFile((IFile) resource, destinationPath); writeFile((IFile) resource, destinationPath);
else else
@ -71,8 +72,9 @@ class RemoteExporter {
/** /**
* Exports the passed container's children * Exports the passed container's children
* @throws SystemMessageException TODO
*/ */
protected void writeChildren(IContainer folder, IPath destinationPath) throws IOException, CoreException, RemoteFileSecurityException, RemoteFileException { protected void writeChildren(IContainer folder, IPath destinationPath) throws IOException, CoreException, SystemMessageException {
if (folder.isAccessible()) { if (folder.isAccessible()) {
IResource[] children = folder.members(); IResource[] children = folder.members();
for (int i = 0; i < children.length; i++) { for (int i = 0; i < children.length; i++) {
@ -85,8 +87,9 @@ class RemoteExporter {
/** /**
* Writes the passed file resource to the specified destination on the remote * Writes the passed file resource to the specified destination on the remote
* file system * file system
* @throws SystemMessageException TODO
*/ */
protected void writeFile(IFile file, IPath destinationPath) throws IOException, CoreException, RemoteFileSecurityException, RemoteFileException { protected void writeFile(IFile file, IPath destinationPath) throws IOException, CoreException, SystemMessageException {
IRemoteFileSubSystem rfss = RemoteFileUtility.getFileSubSystem((IHost) _host); IRemoteFileSubSystem rfss = RemoteFileUtility.getFileSubSystem((IHost) _host);
String dest = destinationPath.toString(); String dest = destinationPath.toString();
char sep = rfss.getSeparatorChar(); char sep = rfss.getSeparatorChar();
@ -100,8 +103,9 @@ class RemoteExporter {
/** /**
* Writes the passed resource to the specified location recursively * Writes the passed resource to the specified location recursively
* @throws SystemMessageException TODO
*/ */
protected void writeResource(IResource resource, IPath destinationPath) throws IOException, CoreException, RemoteFileSecurityException, RemoteFileException { protected void writeResource(IResource resource, IPath destinationPath) throws IOException, CoreException, SystemMessageException {
if (resource.getType() == IResource.FILE) if (resource.getType() == IResource.FILE)
writeFile((IFile) resource, destinationPath); writeFile((IFile) resource, destinationPath);
else { else {

View file

@ -8,6 +8,7 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * IBM Corporation - initial API and implementation
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.importexport.files; package org.eclipse.rse.internal.importexport.files;
@ -78,6 +79,8 @@ public class UniFilePlus extends File {
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
else else
throw new IOException(exc.getMessage()); throw new IOException(exc.getMessage());
} catch (SystemMessageException e) {
throw new IOException(e.getMessage());
} }
if (newFile != null) { if (newFile != null) {
remoteFile = newFile; remoteFile = newFile;
@ -95,6 +98,10 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
ok = false;
} }
return ok; return ok;
} }
@ -286,6 +293,9 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
if (dir != null) remoteFile = dir; if (dir != null) remoteFile = dir;
return (dir != null); return (dir != null);
@ -299,6 +309,9 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
if (dir != null) remoteFile = dir; if (dir != null) remoteFile = dir;
return (dir != null); return (dir != null);
@ -312,6 +325,9 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
return ok; return ok;
} }
@ -326,6 +342,9 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
return ok; return ok;
} }
@ -338,6 +357,9 @@ public class UniFilePlus extends File {
Exception e = exc.getRemoteException(); Exception e = exc.getRemoteException();
if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e; if ((e != null) && (e instanceof SecurityException)) throw (SecurityException) e;
throw new SecurityException(exc.getMessage()); throw new SecurityException(exc.getMessage());
} catch (SystemMessageException e) {
//TODO should there be more user feedback?
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
return ok; return ok;
} }

View file

@ -12,6 +12,7 @@
* *
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.services.files; package org.eclipse.rse.services.files;
@ -25,7 +26,6 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.rse.services.IService; import org.eclipse.rse.services.IService;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
/** /**
* A IFileService is an abstraction of a file service that runs over some sort of connection. * A IFileService is an abstraction of a file service that runs over some sort of connection.
* It can be shared among multiple instances of a subsystem. At some point this file * It can be shared among multiple instances of a subsystem. At some point this file
@ -69,7 +69,8 @@ public interface IFileService extends IService
* @param monitor the monitor for this potentially long running operation * @param monitor the monitor for this potentially long running operation
* @return true if the file was uploaded * @return true if the file was uploaded
* @throws SystemMessageException if an error occurs. * @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the RemoteFileException family. * Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean upload(File localFile, String remoteParent, String remoteFile, boolean isBinary, String srcEncoding, String hostEncoding, IProgressMonitor monitor) throws SystemMessageException; public boolean upload(File localFile, String remoteParent, String remoteFile, boolean isBinary, String srcEncoding, String hostEncoding, IProgressMonitor monitor) throws SystemMessageException;
@ -84,7 +85,8 @@ public interface IFileService extends IService
* @param monitor the monitor for this potentially long running operation * @param monitor the monitor for this potentially long running operation
* @return true if the file was copied from the remote system. * @return true if the file was copied from the remote system.
* @throws SystemMessageException if an error occurs. * @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the RemoteFileException family. * Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean download(String remoteParent, String remoteFile, File localFile, boolean isBinary, String hostEncoding, IProgressMonitor monitor) throws SystemMessageException; public boolean download(String remoteParent, String remoteFile, File localFile, boolean isBinary, String hostEncoding, IProgressMonitor monitor) throws SystemMessageException;

View file

@ -17,6 +17,7 @@
* Martin Oberhuber (Wind River) - [168596] FileServiceSubSystem.isCaseSensitive() * Martin Oberhuber (Wind River) - [168596] FileServiceSubSystem.isCaseSensitive()
* Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods * Martin Oberhuber (Wind River) - [177523] Unify singleton getter methods
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.subsystems.files.core.servicesubsystem; package org.eclipse.rse.subsystems.files.core.servicesubsystem;
@ -27,6 +28,7 @@ import java.io.OutputStream;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.rse.core.SystemBasePlugin;
import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.subsystems.IConnectorService; import org.eclipse.rse.core.subsystems.IConnectorService;
import org.eclipse.rse.core.subsystems.IServiceSubSystemConfiguration; import org.eclipse.rse.core.subsystems.IServiceSubSystemConfiguration;
@ -40,9 +42,6 @@ import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.IFileService; import org.eclipse.rse.services.files.IFileService;
import org.eclipse.rse.services.files.IHostFile; import org.eclipse.rse.services.files.IHostFile;
import org.eclipse.rse.services.files.RemoteFileIOException;
import org.eclipse.rse.services.files.RemoteFileSecurityException;
import org.eclipse.rse.services.files.RemoteFolderNotEmptyException;
import org.eclipse.rse.services.search.IHostSearchResultConfiguration; import org.eclipse.rse.services.search.IHostSearchResultConfiguration;
import org.eclipse.rse.services.search.IHostSearchResultSet; import org.eclipse.rse.services.search.IHostSearchResultSet;
import org.eclipse.rse.services.search.ISearchService; import org.eclipse.rse.services.search.ISearchService;
@ -54,8 +53,6 @@ import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileContext;
import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileSubSystem;
import org.eclipse.rse.ui.ISystemMessages; import org.eclipse.rse.ui.ISystemMessages;
import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.messages.SystemMessageDialog;
import org.eclipse.swt.widgets.Display;
public final class FileServiceSubSystem extends RemoteFileSubSystem implements IFileServiceSubSystem public final class FileServiceSubSystem extends RemoteFileSubSystem implements IFileServiceSubSystem
{ {
@ -434,15 +431,11 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
/** /*
* Get the remote file and save it locally. The file is saved in the encoding * (non-Javadoc)
* specified. * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#download(org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile, java.lang.String, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
* @param file remote file that represents the file to be obtained
* @param localpath the absolute path of the local file
* @param encoding the encoding of the local file
* @param monitor progress monitor
*/ */
public void download(IRemoteFile file, String localpath, String encoding, IProgressMonitor monitor) public void download(IRemoteFile file, String localpath, String encoding, IProgressMonitor monitor) throws SystemMessageException
{ {
//Fixing bug 158534. TODO remove when bug 162688 is fixed. //Fixing bug 158534. TODO remove when bug 162688 is fixed.
if (monitor==null) { if (monitor==null) {
@ -450,16 +443,7 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
} }
String parentPath = file.getParentPath(); String parentPath = file.getParentPath();
File localFile = new File(localpath); File localFile = new File(localpath);
try getFileService().download(parentPath, file.getName(), localFile, isBinary(file), file.getEncoding(), monitor);
{
getFileService().download(parentPath, file.getName(), localFile, isBinary(file), file.getEncoding(), monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
}
if (monitor.isCanceled()) if (monitor.isCanceled())
{ {
localFile.delete(); localFile.delete();
@ -487,15 +471,11 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
} }
} }
/** /*
* Put the local copy of the remote file back to the remote location. The file * (non-Javadoc)
* is assumed to be in the encoding of the local operating system * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#upload(java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
* @param source the absolute path of the local copy
* @param srcEncoding The encoding of the local copy
* @param remotePath remote file that represents the file on the server
* @param rmtEncoding The encoding of the remote file.
*/ */
public void upload(String source, String srcEncoding, String remotePath, String rmtEncoding, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException { public void upload(String source, String srcEncoding, String remotePath, String rmtEncoding, IProgressMonitor monitor) throws SystemMessageException {
int slashIndex = remotePath.lastIndexOf(getSeparator()); int slashIndex = remotePath.lastIndexOf(getSeparator());
if (slashIndex > -1) { if (slashIndex > -1) {
String remoteParentPath = remotePath.substring(0, slashIndex); String remoteParentPath = remotePath.substring(0, slashIndex);
@ -507,27 +487,15 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
remoteParentPath = avp.getPath(); remoteParentPath = avp.getPath();
remoteFileName = avp.getName(); remoteFileName = avp.getName();
} }
try getFileService().upload(new File(source), remoteParentPath, remoteFileName, isBinary, srcEncoding, rmtEncoding, monitor);
{
getFileService().upload(new File(source), remoteParentPath, remoteFileName, isBinary, srcEncoding, rmtEncoding, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
}
} }
} }
/** /*
* Put the local copy of the remote file back to the remote location. The file * (non-Javadoc)
* is assumed to be in the encoding of the local operating system * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#upload(java.lang.String, org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
* @param source the absolute path of the local copy
* @param destination location to copy to
* @param encoding The encoding of the local copy
* @param monitor progress monitor
*/ */
public void upload(String source, IRemoteFile destination, String encoding, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public void upload(String source, IRemoteFile destination, String encoding, IProgressMonitor monitor) throws SystemMessageException
{ {
String remoteParentPath = destination.getParentPath(); String remoteParentPath = destination.getParentPath();
String remoteFileName = destination.getName(); String remoteFileName = destination.getName();
@ -537,39 +505,22 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
if (!destination.canWrite()) if (!destination.canWrite())
{ {
SystemMessage msg = RSEUIPlugin.getPluginMessage("RSEF5003").makeSubstitution(remoteFileName, getHostName()); //$NON-NLS-1$ SystemMessage msg = RSEUIPlugin.getPluginMessage("RSEF5003").makeSubstitution(remoteFileName, getHostName()); //$NON-NLS-1$
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), msg); throw new SystemMessageException(msg);
dlg.open();
return;
}
try
{
getFileService().upload(new File(source), remoteParentPath, remoteFileName, isBinary, encoding, hostEncoding, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
} }
getFileService().upload(new File(source), remoteParentPath, remoteFileName, isBinary, encoding, hostEncoding, monitor);
} }
public boolean copy(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException /*
* (non-Javadoc)
* @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#copy(org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile, org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
*/
public boolean copy(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws SystemMessageException
{ {
IFileService service = getFileService(); IFileService service = getFileService();
try return service.copy(sourceFolderOrFile.getParentPath(), sourceFolderOrFile.getName(), targetFolder.getAbsolutePath(), newName, monitor);
{
return service.copy(sourceFolderOrFile.getParentPath(), sourceFolderOrFile.getName(), targetFolder.getAbsolutePath(), newName, monitor);
}
catch (SystemMessageException e)
{
Display dis = Display.getDefault();
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dis.syncExec(new SystemMessageDialogRunnable(dlg));
}
return false;
} }
public boolean copyBatch(IRemoteFile[] sourceFolderOrFiles, IRemoteFile targetFolder, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public boolean copyBatch(IRemoteFile[] sourceFolderOrFiles, IRemoteFile targetFolder, IProgressMonitor monitor) throws SystemMessageException
{ {
IFileService service = getFileService(); IFileService service = getFileService();
String[] sourceParents = new String[sourceFolderOrFiles.length]; String[] sourceParents = new String[sourceFolderOrFiles.length];
@ -580,17 +531,7 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
sourceParents[i] = sourceFolderOrFiles[i].getParentPath(); sourceParents[i] = sourceFolderOrFiles[i].getParentPath();
sourceNames[i] = sourceFolderOrFiles[i].getName(); sourceNames[i] = sourceFolderOrFiles[i].getName();
} }
try return service.copyBatch(sourceParents, sourceNames, targetFolder.getAbsolutePath(), monitor);
{
return service.copyBatch(sourceParents, sourceNames, targetFolder.getAbsolutePath(), monitor);
}
catch (SystemMessageException e)
{
Display dis = Display.getDefault();
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dis.syncExec(new SystemMessageDialogRunnable(dlg));
}
return false;
} }
public IRemoteFile getParentFolder(IRemoteFile folderOrFile, IProgressMonitor monitor) public IRemoteFile getParentFolder(IRemoteFile folderOrFile, IProgressMonitor monitor)
@ -605,75 +546,42 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
} }
} }
public IRemoteFile createFile(IRemoteFile fileToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public IRemoteFile createFile(IRemoteFile fileToCreate, IProgressMonitor monitor) throws SystemMessageException
{ {
IFileService service = getFileService(); IFileService service = getFileService();
String parent = fileToCreate.getParentPath(); String parent = fileToCreate.getParentPath();
String name = fileToCreate.getName(); String name = fileToCreate.getName();
IHostFile newFile = null; IHostFile newFile = service.createFile(parent, name, monitor);
try
{
newFile = service.createFile(parent, name, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
SystemMessageDialogRunnable runnable = new SystemMessageDialogRunnable(dlg);
Display.getDefault().asyncExec(runnable);
return null;
}
return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), fileToCreate.getParentRemoteFile(), newFile); return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), fileToCreate.getParentRemoteFile(), newFile);
} }
public IRemoteFile createFolder(IRemoteFile folderToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public IRemoteFile createFolder(IRemoteFile folderToCreate, IProgressMonitor monitor) throws SystemMessageException
{ {
IFileService service = getFileService(); IFileService service = getFileService();
String parent = folderToCreate.getParentPath(); String parent = folderToCreate.getParentPath();
String name = folderToCreate.getName(); String name = folderToCreate.getName();
IHostFile newFolder = null; IHostFile newFolder = service.createFolder(parent, name, monitor);
try
{
newFolder = service.createFolder(parent, name, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return null;
}
return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), folderToCreate.getParentRemoteFile(), newFolder); return getHostFileToRemoteFileAdapter().convertToRemoteFile(this, getDefaultContext(), folderToCreate.getParentRemoteFile(), newFolder);
} }
public IRemoteFile createFolders(IRemoteFile folderToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public IRemoteFile createFolders(IRemoteFile folderToCreate, IProgressMonitor monitor) throws SystemMessageException
{ {
return createFolder(folderToCreate, monitor); return createFolder(folderToCreate, monitor);
} }
public boolean delete(IRemoteFile folderOrFile, IProgressMonitor monitor) throws RemoteFolderNotEmptyException, RemoteFileSecurityException, RemoteFileIOException public boolean delete(IRemoteFile folderOrFile, IProgressMonitor monitor) throws SystemMessageException
{ {
boolean result = false;
IFileService service = getFileService(); IFileService service = getFileService();
String parent = folderOrFile.getParentPath(); String parent = folderOrFile.getParentPath();
String name = folderOrFile.getName(); String name = folderOrFile.getName();
try boolean result = service.delete(parent, name, monitor);
{ folderOrFile.markStale(true);
result = service.delete(parent, name, monitor);
folderOrFile.markStale(true);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
return result; return result;
} }
public boolean deleteBatch(IRemoteFile[] folderOrFiles, IProgressMonitor monitor) throws RemoteFolderNotEmptyException, RemoteFileSecurityException, RemoteFileIOException public boolean deleteBatch(IRemoteFile[] folderOrFiles, IProgressMonitor monitor) throws SystemMessageException
{ {
boolean result = false;
String[] parents = new String[folderOrFiles.length]; String[] parents = new String[folderOrFiles.length];
String[] names = new String[folderOrFiles.length]; String[] names = new String[folderOrFiles.length];
for (int i = 0; i < folderOrFiles.length; i++) for (int i = 0; i < folderOrFiles.length; i++)
@ -685,95 +593,46 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
removeCachedRemoteFile(folderOrFiles[i]); removeCachedRemoteFile(folderOrFiles[i]);
} }
IFileService service = getFileService(); IFileService service = getFileService();
try return service.deleteBatch(parents, names, monitor);
{
result = service.deleteBatch(parents, names, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
return result;
} }
public boolean rename(IRemoteFile folderOrFile, String newName, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public boolean rename(IRemoteFile folderOrFile, String newName, IProgressMonitor monitor) throws SystemMessageException
{ {
boolean result = false;
removeCachedRemoteFile(folderOrFile); removeCachedRemoteFile(folderOrFile);
IFileService service = getFileService(); IFileService service = getFileService();
String srcParent = folderOrFile.getParentPath(); String srcParent = folderOrFile.getParentPath();
String oldName = folderOrFile.getName(); String oldName = folderOrFile.getName();
String newPath = srcParent + folderOrFile.getSeparator() + newName; String newPath = srcParent + folderOrFile.getSeparator() + newName;
try boolean result = service.rename(srcParent, oldName, newName, monitor);
{ folderOrFile.getHostFile().renameTo(newPath);
result = service.rename(srcParent, oldName, newName, monitor);
folderOrFile.getHostFile().renameTo(newPath);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
return result; return result;
} }
public boolean move(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public boolean move(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws SystemMessageException
{ {
boolean result = false;
IFileService service = getFileService(); IFileService service = getFileService();
String srcParent = sourceFolderOrFile.getParentPath(); String srcParent = sourceFolderOrFile.getParentPath();
String srcName = sourceFolderOrFile.getName(); String srcName = sourceFolderOrFile.getName();
String tgtParent = targetFolder.getAbsolutePath(); String tgtParent = targetFolder.getAbsolutePath();
try removeCachedRemoteFile(sourceFolderOrFile);
{ boolean result = service.move(srcParent, srcName, tgtParent, newName, monitor);
removeCachedRemoteFile(sourceFolderOrFile); sourceFolderOrFile.markStale(true);
result = service.move(srcParent, srcName, tgtParent, newName, monitor); targetFolder.markStale(true);
sourceFolderOrFile.markStale(true);
targetFolder.markStale(true);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
return result; return result;
} }
public boolean setLastModified(IRemoteFile folderOrFile, long newDate, IProgressMonitor monitor) throws SystemMessageException
public boolean setLastModified(IRemoteFile folderOrFile, long newDate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException
{ {
String name = folderOrFile.getName(); String name = folderOrFile.getName();
String parent = folderOrFile.getParentPath(); String parent = folderOrFile.getParentPath();
try return _hostFileService.setLastModified(parent, name, newDate, monitor);
{
return _hostFileService.setLastModified(parent, name, newDate, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
} }
public boolean setReadOnly(IRemoteFile folderOrFile, boolean readOnly, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException public boolean setReadOnly(IRemoteFile folderOrFile, boolean readOnly, IProgressMonitor monitor) throws SystemMessageException
{ {
String name = folderOrFile.getName(); String name = folderOrFile.getName();
String parent = folderOrFile.getParentPath(); String parent = folderOrFile.getParentPath();
try return _hostFileService.setReadOnly(parent, name, readOnly, monitor);
{
return _hostFileService.setReadOnly(parent, name, readOnly, monitor);
}
catch (SystemMessageException e)
{
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
return false;
}
} }
public ILanguageUtilityFactory getLanguageUtilityFactory() public ILanguageUtilityFactory getLanguageUtilityFactory()
@ -886,18 +745,12 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I
* @see RemoteFileSubSystem#getRemoteEncoding() * @see RemoteFileSubSystem#getRemoteEncoding()
*/ */
public String getRemoteEncoding() { public String getRemoteEncoding() {
String encoding = null;
try { try {
encoding = getFileService().getEncoding(null); return getFileService().getEncoding(null);
} catch (SystemMessageException e) {
SystemBasePlugin.logMessage(e.getSystemMessage());
} }
catch (SystemMessageException e) { return super.getRemoteEncoding();
SystemMessageDialog dlg = new SystemMessageDialog(getShell(), e.getSystemMessage());
dlg.open();
encoding = super.getRemoteEncoding();
}
return encoding;
} }
/** /**

View file

@ -14,6 +14,7 @@
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.subsystems.files.core.subsystems; package org.eclipse.rse.subsystems.files.core.subsystems;
@ -27,9 +28,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.rse.core.model.SystemRemoteResourceSet; import org.eclipse.rse.core.model.SystemRemoteResourceSet;
import org.eclipse.rse.core.subsystems.ISubSystem; import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.files.RemoteFileIOException; import org.eclipse.rse.services.files.RemoteFileException;
import org.eclipse.rse.services.files.RemoteFileSecurityException;
import org.eclipse.rse.services.files.RemoteFolderNotEmptyException;
import org.eclipse.rse.services.search.IHostSearchResultConfiguration; import org.eclipse.rse.services.search.IHostSearchResultConfiguration;
import org.eclipse.rse.subsystems.files.core.ILanguageUtilityFactory; import org.eclipse.rse.subsystems.files.core.ILanguageUtilityFactory;
@ -45,10 +44,6 @@ import org.eclipse.rse.subsystems.files.core.ILanguageUtilityFactory;
* The idea is to encourage a common API and GUI layer that works * The idea is to encourage a common API and GUI layer that works
* with any remote unix-like file system on any remote operating system. * with any remote unix-like file system on any remote operating system.
*/ */
/**
* @lastgen interface RemoteFileSubSystem extends SubSystem {}
*/
public interface IRemoteFileSubSystem extends ISubSystem { public interface IRemoteFileSubSystem extends ISubSystem {
// ---------------------- // ----------------------
@ -191,6 +186,7 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param monitor the progress monitor * @param monitor the progress monitor
*/ */
public IRemoteFile[] listFiles(IRemoteFile parent, String fileNameFilter, IRemoteFileContext context, IProgressMonitor monitor) throws SystemMessageException; public IRemoteFile[] listFiles(IRemoteFile parent, String fileNameFilter, IRemoteFileContext context, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Given a search configuration, searches for its results. * Given a search configuration, searches for its results.
* @param searchConfig a search configuration. * @param searchConfig a search configuration.
@ -203,7 +199,6 @@ public interface IRemoteFileSubSystem extends ISubSystem {
*/ */
public void cancelSearch(IHostSearchResultConfiguration searchConfig); public void cancelSearch(IHostSearchResultConfiguration searchConfig);
/** /**
* Given a folder or file, return its parent folder object. * Given a folder or file, return its parent folder object.
* @param folderOrFile folder or file to return parent of. * @param folderOrFile folder or file to return parent of.
@ -295,8 +290,11 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* *
* @param fileToCreate The object representing the file to be created. * @param fileToCreate The object representing the file to be created.
* @return The same input object returned for convenience. Will throw exception if it fails. * @return The same input object returned for convenience. Will throw exception if it fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public IRemoteFile createFile(IRemoteFile fileToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public IRemoteFile createFile(IRemoteFile fileToCreate, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Create a new folder, given its IRemoteFile object (these do not have to represent existing folders) * Create a new folder, given its IRemoteFile object (these do not have to represent existing folders)
@ -312,8 +310,11 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param folderToCreate The object representing the folder to be created. * @param folderToCreate The object representing the folder to be created.
* @param monitor the progress monitor * @param monitor the progress monitor
* @return The same input object returned for convenience. Will throw exception if it fails. * @return The same input object returned for convenience. Will throw exception if it fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public IRemoteFile createFolder(IRemoteFile folderToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public IRemoteFile createFolder(IRemoteFile folderToCreate, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Given an IRemoteFile for a folder, this will create that folder and any missing parent folders in its path. * Given an IRemoteFile for a folder, this will create that folder and any missing parent folders in its path.
@ -327,12 +328,13 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @see #getParentFolder(IRemoteFile, IProgressMonitor) * @see #getParentFolder(IRemoteFile, IProgressMonitor)
* *
* @param folderToCreate The object representing the folder to be created, along with its parents. * @param folderToCreate The object representing the folder to be created, along with its parents.
* @param monitor the progress monitr * @param monitor the progress monitor
* @return The same input object returned for convenience. Will throw exception if it fails. * @return The same input object returned for convenience. Will throw exception if it fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public IRemoteFile createFolders(IRemoteFile folderToCreate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public IRemoteFile createFolders(IRemoteFile folderToCreate, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Delete the given remote file or folder. * Delete the given remote file or folder.
@ -343,8 +345,11 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param folderOrFile represents the object to be deleted. * @param folderOrFile represents the object to be deleted.
* @param monitor progressMonitor * @param monitor progressMonitor
* @return false if the given folder/file didn't exist to begin with, else true. Throws an exception if anything fails. * @return false if the given folder/file didn't exist to begin with, else true. Throws an exception if anything fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean delete(IRemoteFile folderOrFile, IProgressMonitor monitor) throws RemoteFolderNotEmptyException, RemoteFileSecurityException, RemoteFileIOException; public boolean delete(IRemoteFile folderOrFile, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Delete the given batch of remote file or folder. * Delete the given batch of remote file or folder.
@ -356,20 +361,24 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param folderOrFiles represents the objects to be deleted. * @param folderOrFiles represents the objects to be deleted.
* @param monitor progressMonitor * @param monitor progressMonitor
* @return false if any of the given folder/file dont exist to begin with, else true. Throws an exception if anything fails. * @return false if any of the given folder/file dont exist to begin with, else true. Throws an exception if anything fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean deleteBatch(IRemoteFile[] folderOrFiles, IProgressMonitor monitor) throws RemoteFolderNotEmptyException, RemoteFileSecurityException, RemoteFileIOException; public boolean deleteBatch(IRemoteFile[] folderOrFiles, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Rename the given remote file or folder. This renames it in memory and, iff it exists, on disk. * Rename the given remote file or folder. This renames it in memory and, iff it exists, on disk.
* @param folderOrFile represents the object to be renamed. * @param folderOrFile represents the object to be renamed.
* @param newName new name to give it. * @param newName new name to give it.
* @param monitor the progress monitor * @param monitor the progress monitor
* @return false if the given folder/file didn't exist on disk (still renamed in memory), else true. Throws an exception if anything fails. * @return false if the given folder/file didn't exist on disk (still renamed in memory), else true. Throws an exception if anything fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean rename(IRemoteFile folderOrFile, String newName, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public boolean rename(IRemoteFile folderOrFile, String newName, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Move a file or folder to a new target parent folder. * Move a file or folder to a new target parent folder.
* *
@ -377,9 +386,12 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param targetFolder The folder to move to. No guarantee it is on the same system, so be sure to check getSystemConnection()! * @param targetFolder The folder to move to. No guarantee it is on the same system, so be sure to check getSystemConnection()!
* @param newName The new name for the moved file or folder * @param newName The new name for the moved file or folder
* @param monitor progress monitor * @param monitor progress monitor
* @return false true iff the move succeeded * @return true if the move succeeded
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean move(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName,IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public boolean move(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName,IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Set the last modified date for the given file or folder. Like a Unix "touch" operation. * Set the last modified date for the given file or folder. Like a Unix "touch" operation.
@ -387,21 +399,25 @@ public interface IRemoteFileSubSystem extends ISubSystem {
* @param folderOrFile represents the object to be renamed. * @param folderOrFile represents the object to be renamed.
* @param newDate new date, in milliseconds from epoch, to assign. * @param newDate new date, in milliseconds from epoch, to assign.
* @param monitor the progress monitor * @param monitor the progress monitor
*
* @return false if the given folder/file didn't exist on disk (operation fails), else true. Throws an exception if anything fails. * @return false if the given folder/file didn't exist on disk (operation fails), else true. Throws an exception if anything fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean setLastModified(IRemoteFile folderOrFile, long newDate, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public boolean setLastModified(IRemoteFile folderOrFile, long newDate, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Set a files readonly permissions. * Set a files read-only permissions.
* Folder or file must exist on disk for this to succeed. * Folder or file must exist on disk for this to succeed.
* @param folderOrFile represents the object to be renamed. * @param folderOrFile represents the object to be renamed.
* @param readOnly whether to set it to be readonly or not * @param readOnly whether to set it to be read-only or not
* @param monitor the progress monitor * @param monitor the progress monitor
*
* @return false if the given folder/file didn't exist on disk (operation fails), else true. Throws an exception if anything fails. * @return false if the given folder/file didn't exist on disk (operation fails), else true. Throws an exception if anything fails.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean setReadOnly(IRemoteFile folderOrFile, boolean readOnly, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public boolean setReadOnly(IRemoteFile folderOrFile, boolean readOnly, IProgressMonitor monitor) throws SystemMessageException;
// ---------------------------- // ----------------------------
@ -411,72 +427,92 @@ public interface IRemoteFileSubSystem extends ISubSystem {
// Beginning of methods for downloading remote files from the server // Beginning of methods for downloading remote files from the server
/** /**
* Copy a file or folder to a new target parent folder. * Copy a file or folder to a new target parent folder.
* *
* @param sourceFolderOrFile The file or folder to copy * @param sourceFolderOrFile The file or folder to copy
* @param targetFolder The folder to copy to. No guarantee it is on the same system, so be sure to check getSystemConnection()! * @param targetFolder The folder to copy to. No guarantee it is on the same system, so be sure to check getSystemConnection()!
* @param newName The new name for the copied file or folder * @param newName The new name for the copied file or folder
* @return false true iff the copy succeeded * @param monitor progress monitor
*/ * @return true if the copy succeeded
public boolean copy(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; * @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/
public boolean copy(IRemoteFile sourceFolderOrFile, IRemoteFile targetFolder, String newName, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Copy a set of remote files or folders to a new target parent folder. Precondition: Sources and target must all be on the same system! * Copy a set of remote files or folders to a new target parent folder. Precondition: Sources and target must all be on the same system!
* @param sourceFolderOrFile The file or folder to copy * @param sourceFolderOrFile The file or folder to copy
* @param targetFolder The folder to copy to. * @param targetFolder The folder to copy to.
* @return false true iff all copies succeeded * @param monitor progress monitor
* @return true if all copies succeeded
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public boolean copyBatch(IRemoteFile[] sourceFolderOrFile, IRemoteFile targetFolder, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public boolean copyBatch(IRemoteFile[] sourceFolderOrFile, IRemoteFile targetFolder, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Get the remote file and save it locally. The file is saved in the encoding * Get the remote file and save it locally.
* specified. Two exceptions: if the remote file is binary, encoding does not apply. *
* If the remote file is a XML file, then it will be copied to local in the encoding * The file is saved in the encoding specified, with two exceptions:
* specified in the XML declaration, or as determined from the XML specification. * <ul>
* <li>If the remote file is binary, encoding does not apply.</li>
* <li>If the remote file is a XML file, then it will be
* copied to local in the encoding specified in the XML
* declaration, or as determined from the XML specification.</li>
* </ul>
* @param source remote file that represents the file to be obtained * @param source remote file that represents the file to be obtained
* @param destination the absolute path of the local file * @param destination the absolute path of the local file
* @param encoding the encoding of the local file * @param encoding the encoding of the local file
* @param monitor the progress monitor * @param monitor the progress monitor
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public void download(IRemoteFile source, String destination, String encoding, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public void download(IRemoteFile source, String destination, String encoding, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Put the local copy of the remote file back to the remote location. The file * Put the local copy of the remote file back to the remote location.
* is assumed to be in the encoding specified. *
* Two exceptions: if the local file is binary, encoding does not apply. * The file is assumed to be in the encoding specified, with
* If the local file is a XML file, then it will be copied to remote in the encoding * two exceptions:
* specified in the XML declaration, or as determined from the XML specification. * <ul>
* <li>If the local file is binary, encoding does not apply.</li>
* <li>If the local file is a XML file, then it will be copied
* to remote in the encoding specified in the XML declaration,
* or as determined from the XML specification.</li>
* </ul>
* @param source the absolute path of the local copy * @param source the absolute path of the local copy
* @param destination remote file that represents the file on the server * @param destination remote file that represents the file on the server
* @param encoding the encoding of the local copy * @param encoding the encoding of the local copy
* @param monitor the progress monitor * @param monitor the progress monitor
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public void upload(String source, IRemoteFile destination, String encoding, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public void upload(String source, IRemoteFile destination, String encoding, IProgressMonitor monitor) throws SystemMessageException;
/** /**
* Put the local copy of the remote file back to the remote location. The file * Put the local copy of the remote file back to the remote location.
* is assumed to be in the encoding of the local operating system. *
* Two exceptions: if the local file is binary, encoding does not apply. * The file is assumed to be in the encoding of the local operating system,
* If the local file is a XML file, then it will be copied to remote in the encoding * with two exceptions:
* specified in the XML declaration, or as determined from the XML specification. * <ul>
* <li>If the local file is binary, encoding does not apply.</li>
* <li>If the local file is a XML file, then it will be copied
* to remote in the encoding specified in the XML declaration,
* or as determined from the XML specification.</li>
* </ul>
* @param source the absolute path of the local copy * @param source the absolute path of the local copy
* @param srcEncoding the encoding of the local copy * @param srcEncoding the encoding of the local copy
* @param remotePath remote file that represents the file on the server * @param remotePath remote file that represents the file on the server
* @param rmtEncoding the encoding of the remote file. * @param rmtEncoding the encoding of the remote file.
* @throws SystemMessageException if an error occurs.
* Typically this would be one of those in the
* {@link RemoteFileException} family.
*/ */
public void upload(String source, String srcEncoding, String remotePath, String rmtEncoding, IProgressMonitor monitor) throws RemoteFileSecurityException, RemoteFileIOException; public void upload(String source, String srcEncoding, String remotePath, String rmtEncoding, IProgressMonitor monitor) throws SystemMessageException;
/**
* @generated This field/method will be replaced during code generation
* @return The value of the HomeFolder attribute
*/
String getHomeFolder();
/**
* @generated This field/method will be replaced during code generation
* @param value The new value of the HomeFolder attribute
*/
void setHomeFolder(String value);
/** /**
* Returns a language utility factory associated with this subsystem. * Returns a language utility factory associated with this subsystem.
@ -491,7 +527,6 @@ public interface IRemoteFileSubSystem extends ISubSystem {
*/ */
public int getUnusedPort(); public int getUnusedPort();
/** /**
* Return a list of roots/drives on the remote system. * Return a list of roots/drives on the remote system.
* This version is called by RemoteFileSubSystemImpl's resolveFilterString(s) * This version is called by RemoteFileSubSystemImpl's resolveFilterString(s)

View file

@ -15,6 +15,7 @@
* Martin Oberhuber (Wind River) - Fix 162962 - recursive removeCachedRemoteFile() * Martin Oberhuber (Wind River) - Fix 162962 - recursive removeCachedRemoteFile()
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation * Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.subsystems.files.core.subsystems; package org.eclipse.rse.subsystems.files.core.subsystems;
@ -25,6 +26,7 @@ import java.io.BufferedReader;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
@ -88,16 +90,6 @@ import org.eclipse.ui.dialogs.PropertyPage;
public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFileSubSystem, ICommunicationsListener public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFileSubSystem, ICommunicationsListener
{ {
/**
* The default value of the '{@link #getHomeFolder() <em>Home Folder</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getHomeFolder()
* @generated
* @ordered
*/
protected static final String HOME_FOLDER_EDEFAULT = null;
public boolean osVarsSet, osWindows, osWindows95, osWindowsNT; public boolean osVarsSet, osWindows, osWindows95, osWindowsNT;
public String osName, osCmdShell; public String osName, osCmdShell;
// variables to affect the list method for subsetting folder contents // variables to affect the list method for subsetting folder contents
@ -112,21 +104,13 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
protected ArrayList _searchHistory; protected ArrayList _searchHistory;
// all created IRemoteFiles mapped in cache to quick retreival // all created IRemoteFiles mapped in cache to quick retrieval
protected HashMap _cachedRemoteFiles = new HashMap(); protected HashMap _cachedRemoteFiles = new HashMap();
/** /**
* @generated This field/method will be replaced during code generation. * Default constructor. Do not call directly! Rather, use the mof generated factory method to create.
* After instantiation, be sure to call {@link #setSubSystemConfiguration(ISubSystemConfiguration)}.
*/ */
/**
* @generated This field/method will be replaced during code generation.
*/
protected String homeFolder = HOME_FOLDER_EDEFAULT;
/**
* Default constructor. Do not call directly! Rather, use the mof generated factory method to create.
* After instantiation, be sure to call {@link #setSubSystemConfiguration(ISubSystemConfiguration)}.
*/
public RemoteFileSubSystem(IHost host, IConnectorService connectorService) public RemoteFileSubSystem(IHost host, IConnectorService connectorService)
{ {
super(host, connectorService); super(host, connectorService);
@ -833,7 +817,7 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
* Do one filter string relative resolve * Do one filter string relative resolve
*/ */
protected Object[] internalResolveOneFilterString(IProgressMonitor monitor, Object parent, RemoteFileFilterString fs, boolean sort) protected Object[] internalResolveOneFilterString(IProgressMonitor monitor, Object parent, RemoteFileFilterString fs, boolean sort)
throws java.lang.reflect.InvocationTargetException, java.lang.InterruptedException, SystemMessageException throws InvocationTargetException, InterruptedException, SystemMessageException
{ {
currFilterString = fs; currFilterString = fs;
String filterString = fs.toStringNoSwitches(); String filterString = fs.toStringNoSwitches();
@ -958,9 +942,6 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
return listFoldersAndFiles(parent, fileNameFilter, context, monitor); return listFoldersAndFiles(parent, fileNameFilter, context, monitor);
} }
/** /**
* Given a folder or file, return its parent folder name, fully qualified * Given a folder or file, return its parent folder name, fully qualified
* @param folderOrFile folder or file to return parent of. * @param folderOrFile folder or file to return parent of.
@ -970,8 +951,7 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
return folderOrFile.getParentPath(); return folderOrFile.getParentPath();
} }
/*
/**
* @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getRemoteSearchResultObject(java.lang.String) * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getRemoteSearchResultObject(java.lang.String)
*/ */
public IRemoteSearchResult getRemoteSearchResultObject(String key) throws SystemMessageException { public IRemoteSearchResult getRemoteSearchResultObject(String key) throws SystemMessageException {
@ -1245,22 +1225,6 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
return rc; return rc;
} // end runCmd method } // end runCmd method
/**
* @generated This field/method will be replaced during code generation
*/
public String getHomeFolder()
{
return homeFolder;
}
/**
* @generated This field/method will be replaced during code generation.
*/
public void setHomeFolder(String newHomeFolder)
{
homeFolder = newHomeFolder;
}
public void initializeSubSystem(IProgressMonitor monitor) public void initializeSubSystem(IProgressMonitor monitor)
{ {
getConnectorService().addCommunicationsListener(this); getConnectorService().addCommunicationsListener(this);
@ -1406,27 +1370,12 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
return true; return true;
} }
/**
* @generated This field/method will be replaced during code generation.
*/
public String toString()
{
StringBuffer result = new StringBuffer(super.toString());
result.append(" (homeFolder: "); //$NON-NLS-1$
result.append(homeFolder);
result.append(')');
return result.toString();
}
/** /**
* Returns -1 by default. Subclasses should override if necessary. * Returns -1 by default. Subclasses should override if necessary.
* @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getUnusedPort() * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getUnusedPort()
*/ */
public int getUnusedPort() public int getUnusedPort()
{ {
return -1; return -1;
} }
@ -1492,7 +1441,8 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi
} }
/** /**
* Returns the local platform encoding by default. Subclasses should override to return the actual remote encoding. * Returns the local platform encoding by default.
* Subclasses should override to return the actual remote encoding.
* @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getRemoteEncoding() * @see org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem#getRemoteEncoding()
*/ */
public String getRemoteEncoding() { public String getRemoteEncoding() {

View file

@ -13,6 +13,7 @@
* *
* Contributors: * Contributors:
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.subsystems.files.dstore; package org.eclipse.rse.internal.subsystems.files.dstore;
@ -26,6 +27,7 @@ import org.eclipse.dstore.extra.DomainEvent;
import org.eclipse.rse.core.subsystems.RemoteChildrenContentsType; import org.eclipse.rse.core.subsystems.RemoteChildrenContentsType;
import org.eclipse.rse.internal.services.dstore.search.DStoreSearchResultConfiguration; import org.eclipse.rse.internal.services.dstore.search.DStoreSearchResultConfiguration;
import org.eclipse.rse.services.clientserver.SystemSearchString; import org.eclipse.rse.services.clientserver.SystemSearchString;
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
import org.eclipse.rse.services.search.IHostSearchConstants; import org.eclipse.rse.services.search.IHostSearchConstants;
import org.eclipse.rse.services.search.IHostSearchResult; import org.eclipse.rse.services.search.IHostSearchResult;
import org.eclipse.rse.services.search.IHostSearchResultSet; import org.eclipse.rse.services.search.IHostSearchResultSet;
@ -35,6 +37,7 @@ import org.eclipse.rse.subsystems.files.core.servicesubsystem.OutputRefresh;
import org.eclipse.rse.subsystems.files.core.subsystems.IHostFileToRemoteFileAdapter; import org.eclipse.rse.subsystems.files.core.subsystems.IHostFileToRemoteFileAdapter;
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
import org.eclipse.rse.subsystems.files.core.subsystems.RemoteSearchResultsContentsType; import org.eclipse.rse.subsystems.files.core.subsystems.RemoteSearchResultsContentsType;
import org.eclipse.rse.ui.messages.SystemMessageDialog;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;
public class DStoreFileSubSystemSearchResultConfiguration extends DStoreSearchResultConfiguration public class DStoreFileSubSystemSearchResultConfiguration extends DStoreSearchResultConfiguration
@ -103,6 +106,10 @@ public class DStoreFileSubSystemSearchResultConfiguration extends DStoreSearchRe
} }
convertedResults[i] = remoteFile; convertedResults[i] = remoteFile;
} }
catch (SystemMessageException e)
{
SystemMessageDialog.displayMessage(e);
}
catch (Exception e) catch (Exception e)
{ {

View file

@ -1,5 +1,5 @@
/******************************************************************************** /********************************************************************************
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved. * Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms * 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 * of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html * available at http://www.eclipse.org/legal/epl-v10.html
@ -11,7 +11,7 @@
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
* *
* Contributors: * Contributors:
* {Name} (company) - description of contribution. * Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.ui.messages; package org.eclipse.rse.ui.messages;
@ -47,8 +47,6 @@ import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Text;
/** /**
*/ */
public class SystemMessageDialog extends ErrorDialog implements Listener { public class SystemMessageDialog extends ErrorDialog implements Listener {
@ -585,7 +583,7 @@ public class SystemMessageDialog extends ErrorDialog implements Listener {
*/ */
public static Shell getDefaultShell() public static Shell getDefaultShell()
{ {
return Display.getCurrent().getActiveShell(); return SystemBasePlugin.getActiveWorkbenchShell();
} }
/** /**
@ -627,17 +625,24 @@ public class SystemMessageDialog extends ErrorDialog implements Listener {
displayErrorMessage(shell,msg); displayErrorMessage(shell,msg);
} }
/** /**
* Display this wrapped system message to the user * Display this wrapped system message to the user
*/ */
public static void displayMessage(org.eclipse.swt.widgets.Shell shell, SystemMessageException msgEx) public static void displayMessage(Shell shell, SystemMessageException msgEx)
{ {
if (msgEx != null) if (msgEx != null)
SystemMessageDialog.displayErrorMessage(shell, msgEx.getSystemMessage()); SystemMessageDialog.displayErrorMessage(shell, msgEx.getSystemMessage());
} }
/**
* Display this wrapped system message to the user
*/
public static void displayMessage(SystemMessageException msgEx)
{
if (msgEx != null)
SystemMessageDialog.displayErrorMessage(getDefaultShell(), msgEx.getSystemMessage());
}
/** /**
* For ease of use for simple host error messages that are xlated already. * For ease of use for simple host error messages that are xlated already.
*/ */

View file

@ -1,5 +1,5 @@
/******************************************************************************** /********************************************************************************
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved. * Copyright (c) 2002, 2007 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms * 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 * of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html * available at http://www.eclipse.org/legal/epl-v10.html
@ -11,7 +11,7 @@
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
* *
* Contributors: * Contributors:
* {Name} (company) - description of contribution. * Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.core; package org.eclipse.rse.core;
@ -78,11 +78,13 @@ public abstract class SystemBasePlugin extends AbstractUIPlugin
public static Shell getActiveWorkbenchShell() { public static Shell getActiveWorkbenchShell() {
IWorkbenchWindow window = getActiveWorkbenchWindow(); IWorkbenchWindow window = getActiveWorkbenchWindow();
if (window != null) { if (window != null) {
return window.getShell(); return window.getShell();
} }
Display d = Display.getCurrent();
if (d!=null) return d.getActiveShell();
d = Display.getDefault();
if (d!=null) return d.getActiveShell();
return null; return null;
} }