1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-02 22:55:26 +02:00

[286129][api] RemoteFileException(String) violates API contract

This commit is contained in:
Martin Oberhuber 2009-09-15 21:21:37 +00:00
parent 9b9ab65317
commit 43af27a74a
3 changed files with 44 additions and 9 deletions

View file

@ -43,6 +43,7 @@
* David McKnight (IBM) - [238367] [regression] Error when deleting Archive Files
* David McKnight (IBM) - [280899] RSE can't open files in some directory, which give the RSEG1067 error me
* Martin Oberhuber (Wind River) - [285942] Throw exception when listing a non-folder
* Martin Oberhuber (Wind River) - [286129][api] RemoteFileException(String) violates API contract
*******************************************************************************/
package org.eclipse.rse.internal.services.local.files;
@ -739,7 +740,8 @@ public class LocalFileService extends AbstractFileService implements ILocalServi
if (localParent.exists()) {
File[] files = localParent.listFiles(fFilter);
if (files == null) {
throw new RemoteFileException("Error listing: " + localParent.getAbsolutePath());
//throw new RemoteFileException("Error listing: " + localParent.getAbsolutePath());
throw new RemoteFileIOException(new IOException("Error listing: " + localParent.getAbsolutePath()));
}
return convertToHostFiles(files, type);
} else {

View file

@ -40,6 +40,7 @@
* David McKnight (IBM) - [272882] [api] Handle exceptions in IService.initService()
* Martin Oberhuber (Wind River) - [274568] Dont use SftpMonitor for Streams transfer
* Patrick Tassé (Ericsson) - [285226] Empty directory shown as an error message
* Martin Oberhuber (Wind River) - [286129][api] RemoteFileException(String) violates API contract
*******************************************************************************/
package org.eclipse.rse.internal.services.ssh.files;
@ -556,7 +557,8 @@ public class SftpFileService extends AbstractFileService implements ISshService,
SftpATTRS attrs = getChannel("SftpFileService.internalFetch: " + parentPath).stat(parentPath); //$NON-NLS-1$
if (!attrs.isDir()) {
// parent was a file and not a folder
throw new RemoteFileException("Not a folder: " + parentPath); //$NON-NLS-1$
//throw new RemoteFileException("Not a folder: " + parentPath); //$NON-NLS-1$
throw new RemoteFileIOException(new IOException("Not a folder: " + parentPath)); //$NON-NLS-1$
}
}
if (filematcher.matches(fileName) || (lsEntry.getAttrs().isDir() && fileType!=IFileService.FILE_TYPE_FOLDERS)) {

View file

@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
* Copyright (c) 2000, 2009 IBM Corporation 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
@ -13,11 +13,18 @@
*
* Contributors:
* Martin Oberhuber (Wind River) - [226374] [api] Need default SystemMessageException specialisations
* Martin Oberhuber (Wind River) - [286129][api] RemoteFileException(String) violates API contract
*******************************************************************************/
package org.eclipse.rse.services.files;
import java.util.ResourceBundle;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.osgi.util.NLS;
import org.eclipse.rse.internal.services.Activator;
import org.eclipse.rse.internal.services.RSEServicesMessages;
import org.eclipse.rse.services.clientserver.messages.SimpleSystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.services.clientserver.messages.SystemRemoteMessageException;
@ -46,21 +53,32 @@ public class RemoteFileException extends SystemRemoteMessageException
private static final long serialVersionUID = 1L;
/**
* Constructor for RemoteFileException with an error message for getMessage() to return.
* Constructor for RemoteFileException with an error message for
* getMessage() to return.
*
* @param bundle The ResourceBundle containing the error message
* @param key The key to retrieve the message
* @deprecated this constructor violates the contract that all
* RemoteFileException instances must have an embedded remote
* exception for {@link #getRemoteException()} to return
*/
public RemoteFileException(ResourceBundle bundle, String key)
{
this(getString(bundle,key), null);
this(getString(bundle, key));
}
/**
* Constructor for RemoteFileException with an error message for getMessage() to return.
* Constructor for RemoteFileException with an error message for
* getMessage() to return.
*
* @param msg The fully resolved message
* @deprecated this constructor violates the contract that all
* RemoteFileException instances must have an embedded remote
* exception for {@link #getRemoteException()} to return
*/
public RemoteFileException(String msg)
{
this(msg, null);
this(msg, new Exception(msg));
}
/**
* Constructor for RemoteFileException with an error message for getMessage() to return,
@ -82,15 +100,28 @@ public class RemoteFileException extends SystemRemoteMessageException
public RemoteFileException(String msg, Exception remoteException)
{
super(msg, remoteException);
String msgTxt = RSEServicesMessages.FILEMSG_OPERATION_FAILED;
if (remoteException != null && remoteException.getMessage() != null && !remoteException.getMessage().equals(msg)) {
msg = (msg == null) ? remoteException.getMessage() : msg + ": " + remoteException.getMessage();
}
String msgDetails = NLS.bind(RSEServicesMessages.FILEMSG_OPERATION_FAILED_DETAILS, msg);
SystemMessage myMessage = new SimpleSystemMessage(Activator.PLUGIN_ID, "RSEF1002", //$NON-NLS-1$
IStatus.ERROR, msgTxt, msgDetails);
setSystemMessage(myMessage);
}
/**
* Constructor for RemoteFileException with an error message for getMessage() to return.
* Constructor for RemoteFileException with an error message for
* getMessage() to return.
*
* @param msg The fully resolved message
* @deprecated this constructor violates the contract that all
* RemoteFileException instances must have an embedded remote
* exception for {@link #getRemoteException()} to return
*/
public RemoteFileException(SystemMessage msg)
{
this(msg, null);
this(msg, new Exception(msg.getLevelOneText()));
}
/**
* Constructor for RemoteFileException with an error message for getMessage() to return.