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

[276103] Files with names in different cases are not handled properly

This commit is contained in:
David McKnight 2009-05-19 18:24:13 +00:00
parent 0b3fff494c
commit f56c3da68e
5 changed files with 308 additions and 22 deletions

View file

@ -54,6 +54,8 @@
* David McKnight (IBM) - [262092] Special characters are missing when pasting a file on a different connection * David McKnight (IBM) - [262092] Special characters are missing when pasting a file on a different connection
* David McKnight (IBM) - [271831] Set the readonly file attribute when download the file * David McKnight (IBM) - [271831] Set the readonly file attribute when download the file
* David McKnight (IBM) - [251136] Error copying local file to remote system when temp file is readonly * David McKnight (IBM) - [251136] Error copying local file to remote system when temp file is readonly
* David McKnight (IBM) - [276103] Files with names in different cases are not handled properly
* David McKnight (IBM) - [276534] Cache Conflict After Synchronization when Browsing Remote System with Case-Differentiated-Only Filenames
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.files.ui.resources; package org.eclipse.rse.files.ui.resources;
@ -198,6 +200,15 @@ public class UniversalFileTransferUtility {
{ {
SystemIFileProperties properties = new SystemIFileProperties(tempFile); SystemIFileProperties properties = new SystemIFileProperties(tempFile);
String replicaRemoteFilePath = properties.getRemoteFilePath();
String remoteFilePath = remoteFile.getAbsolutePath();
if (!replicaRemoteFilePath.equals(remoteFilePath)){
// this temp file is for a file of different case
return false;
}
long storedModifiedStamp = properties.getRemoteFileTimeStamp(); long storedModifiedStamp = properties.getRemoteFileTimeStamp();
// compare timestamps // compare timestamps
@ -1825,6 +1836,17 @@ public class UniversalFileTransferUtility {
if (targetFS instanceof FileServiceSubSystem) if (targetFS instanceof FileServiceSubSystem)
{ {
/*
OutputStream outStream = targetFS.getOutputStream(targetFolder.getAbsolutePath(), name, IFileService.NONE, monitor);
byte[] buffer = new byte[1024];
int readCount;
while( (readCount = inStream.read(buffer)) > 0)
{
outStream.write(buffer, 0, readCount);
}
outStream.close();
*/
IFileService fileService = ((FileServiceSubSystem)targetFS).getFileService(); IFileService fileService = ((FileServiceSubSystem)targetFS).getFileService();
// for bug 236723, getting remote encoding for target instead of default for target fs // for bug 236723, getting remote encoding for target instead of default for target fs
@ -2568,6 +2590,22 @@ public class UniversalFileTransferUtility {
} }
String fileName = expectedPath.segment(expectedPath.segmentCount() - 1); String fileName = expectedPath.segment(expectedPath.segmentCount() - 1);
try {
IResource[] resources = container.members();
boolean found = false;
for (int r = 0; r < resources.length && !found; r++){
IResource resource = resources[r];
if (resource instanceof IFile){
String resourceName = resource.getName();
if (resourceName.toLowerCase().equals(fileName.toLowerCase())){
found = true;
fileName = resourceName;
}
}
}
}
catch (CoreException e){}
actualPath = container.getLocation().append(fileName); actualPath = container.getLocation().append(fileName);
return actualPath; return actualPath;
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2002, 2008 IBM Corporation and others. * Copyright (c) 2002, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -15,23 +15,28 @@
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core * Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core
* David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob * David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob
* David McKnight (IBM) - [224377] "open with" menu does not have "other" option * David McKnight (IBM) - [224377] "open with" menu does not have "other" option
* David McKnight (IBM) - [276103] Files with names in different cases are not handled properly
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.rse.files.ui.resources.SystemEditableRemoteFile; import org.eclipse.rse.files.ui.resources.SystemEditableRemoteFile;
import org.eclipse.rse.files.ui.resources.UniversalFileTransferUtility;
import org.eclipse.rse.internal.files.ui.view.DownloadAndOpenJob; import org.eclipse.rse.internal.files.ui.view.DownloadAndOpenJob;
import org.eclipse.rse.subsystems.files.core.SystemIFileProperties; import org.eclipse.rse.subsystems.files.core.SystemIFileProperties;
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.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFile;
import org.eclipse.rse.ui.actions.SystemBaseAction; import org.eclipse.rse.ui.actions.SystemBaseAction;
import org.eclipse.rse.ui.view.ISystemEditableRemoteObject; import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorPart;
@ -139,16 +144,79 @@ public class SystemEditFileAction extends SystemBaseAction {
return false; return false;
} }
private SystemEditableRemoteFile getEditableRemoteObject(Object element)
{
SystemEditableRemoteFile editable = null;
RemoteFile remoteFile = (RemoteFile) element;
if (remoteFile.isFile())
{
try
{
IFile file = (IFile)UniversalFileTransferUtility.getTempFileFor(remoteFile);
if (file != null)
{
SystemIFileProperties properties = new SystemIFileProperties(file);
Object obj = properties.getRemoteFileObject();
if (obj != null && obj instanceof SystemEditableRemoteFile)
{
editable = (SystemEditableRemoteFile) obj;
String remotePath = remoteFile.getAbsolutePath();
String replicaRemotePath = editable.getAbsolutePath();
// first make sure that the correct remote file is referenced (might be difference because of different case)
if (!replicaRemotePath.equals(remotePath)){ // for bug 276103
IEditorPart editor = editable.getEditorPart();
boolean editorWasClosed = false;
if (editor.isDirty()){
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
if (editorWasClosed)
editable.doImmediateSaveAndUpload();
}
else {
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
}
if (!editorWasClosed){
// use cancelled operation so we need to get out of here
return null;
}
try {
IFile originalFile = editable.getLocalResource();
originalFile.delete(true, new NullProgressMonitor());
}
catch (CoreException e){
}
// fall through and let the new editable get created
}
else {
return editable;
}
}
}
editable = new SystemEditableRemoteFile(remoteFile);
}
catch (Exception e)
{
}
}
return editable;
}
/** /**
* Process the object: download file, open in editor, etc. * Process the object: download file, open in editor, etc.
*/ */
protected void process(IRemoteFile remoteFile) { protected void process(IRemoteFile remoteFile) {
/* SystemEditableRemoteFile editable = getEditableRemoteObject(remoteFile);
SystemEditableRemoteFile editableFile = new SystemEditableRemoteFile(remoteFile, _editorId); if (editable == null){
editableFile.open(SystemBasePlugin.getActiveWorkbenchShell()); // case for cancelled operation when user was prompted to save file of different case
*/ return;
SystemEditableRemoteFile editable = new SystemEditableRemoteFile(remoteFile, _editorDescriptor); }
else
{ {
try try
{ {

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2002, 2008 IBM Corporation and others. * Copyright (c) 2002, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -16,6 +16,7 @@
* David McKnight (IBM) - [209660] check for changed encoding before using cached file * David McKnight (IBM) - [209660] check for changed encoding before using cached file
* David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob * David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob
* David McKnight (IBM) - [224377] "open with" menu does not have "other" option * David McKnight (IBM) - [224377] "open with" menu does not have "other" option
* David McKnight (IBM) - [276103] Files with names in different cases are not handled properly
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -23,6 +24,7 @@ package org.eclipse.rse.internal.files.ui.actions;
import java.util.Iterator; import java.util.Iterator;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.rse.files.ui.resources.SystemEditableRemoteFile; import org.eclipse.rse.files.ui.resources.SystemEditableRemoteFile;
@ -31,10 +33,12 @@ import org.eclipse.rse.internal.files.ui.view.DownloadAndOpenJob;
import org.eclipse.rse.subsystems.files.core.SystemIFileProperties; import org.eclipse.rse.subsystems.files.core.SystemIFileProperties;
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.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFile;
import org.eclipse.rse.ui.actions.SystemBaseAction; import org.eclipse.rse.ui.actions.SystemBaseAction;
import org.eclipse.rse.ui.view.ISystemEditableRemoteObject; import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.PlatformUI; import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE; import org.eclipse.ui.ide.IDE;
@ -174,7 +178,12 @@ public class SystemEditFilesAction extends SystemBaseAction {
editorId = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$ editorId = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
} }
SystemEditableRemoteFile editable = new SystemEditableRemoteFile(remoteFile, des); SystemEditableRemoteFile editable = getEditableRemoteObject(remoteFile, des);
if (editable == null){
// case for cancelled operation when user was prompted to save file of different case
return;
}
else
{ {
try try
{ {
@ -203,4 +212,73 @@ public class SystemEditFilesAction extends SystemBaseAction {
} }
} }
private SystemEditableRemoteFile getEditableRemoteObject(Object element, IEditorDescriptor descriptor)
{
SystemEditableRemoteFile editable = null;
RemoteFile remoteFile = (RemoteFile) element;
if (remoteFile.isFile())
{
try
{
IFile file = (IFile)UniversalFileTransferUtility.getTempFileFor(remoteFile);
if (file != null)
{
SystemIFileProperties properties = new SystemIFileProperties(file);
Object obj = properties.getRemoteFileObject();
if (obj != null && obj instanceof SystemEditableRemoteFile)
{
editable = (SystemEditableRemoteFile) obj;
String remotePath = remoteFile.getAbsolutePath();
String replicaRemotePath = editable.getAbsolutePath();
// first make sure that the correct remote file is referenced (might be difference because of different case)
if (!replicaRemotePath.equals(remotePath)){ // for bug 276103
IEditorPart editor = editable.getEditorPart();
boolean editorWasClosed = false;
if (editor.isDirty()){
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
if (editorWasClosed)
editable.doImmediateSaveAndUpload();
}
else {
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
}
if (!editorWasClosed){
// use cancelled operation so we need to get out of here
return null;
}
try {
IFile originalFile = editable.getLocalResource();
originalFile.delete(true, new NullProgressMonitor());
}
catch (CoreException e){
}
// fall through and let the new editable get created
}
else {
return editable;
}
}
}
if (descriptor != null){
editable = new SystemEditableRemoteFile(remoteFile, descriptor);
}
else {
editable = new SystemEditableRemoteFile(remoteFile);
}
}
catch (Exception e)
{
}
}
return editable;
}
} }

View file

@ -1,5 +1,5 @@
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2005, 2008 IBM Corporation and others. * Copyright (c) 2005, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
@ -16,6 +16,7 @@
* Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core * Martin Oberhuber (Wind River) - [189130] Move SystemIFileProperties from UI to Core
* David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob * David McKnight (IBM) - [189873] DownloadJob changed to DownloadAndOpenJob
* David McKnight (IBM) - [224377] "open with" menu does not have "other" option * David McKnight (IBM) - [224377] "open with" menu does not have "other" option
*
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.files.ui.actions; package org.eclipse.rse.internal.files.ui.actions;
@ -27,6 +28,7 @@ import java.util.Comparator;
import java.util.Hashtable; import java.util.Hashtable;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.action.ContributionItem; import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
@ -40,6 +42,7 @@ import org.eclipse.rse.internal.files.ui.view.DownloadAndOpenJob;
import org.eclipse.rse.subsystems.files.core.SystemIFileProperties; import org.eclipse.rse.subsystems.files.core.SystemIFileProperties;
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.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFile;
import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.SystemBasePlugin; import org.eclipse.rse.ui.SystemBasePlugin;
import org.eclipse.rse.ui.view.ISystemEditableRemoteObject; import org.eclipse.rse.ui.view.ISystemEditableRemoteObject;
@ -50,6 +53,7 @@ import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException; import org.eclipse.ui.PartInitException;
@ -220,17 +224,79 @@ private void createOtherMenuItem(final Menu menu, final IRemoteFile remoteFile)
} }
private SystemEditableRemoteFile getEditableRemoteObject(Object element, IEditorDescriptor descriptor)
{
SystemEditableRemoteFile editable = null;
RemoteFile remoteFile = (RemoteFile) element;
if (remoteFile.isFile())
{
try
{
IFile file = (IFile)UniversalFileTransferUtility.getTempFileFor(remoteFile);
if (file != null)
{
SystemIFileProperties properties = new SystemIFileProperties(file);
Object obj = properties.getRemoteFileObject();
if (obj != null && obj instanceof SystemEditableRemoteFile)
{
editable = (SystemEditableRemoteFile) obj;
String remotePath = remoteFile.getAbsolutePath();
String replicaRemotePath = editable.getAbsolutePath();
// first make sure that the correct remote file is referenced (might be difference because of different case)
if (!replicaRemotePath.equals(remotePath)){ // for bug 276103
IEditorPart editor = editable.getEditorPart();
boolean editorWasClosed = false;
if (editor.isDirty()){
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
if (editorWasClosed)
editable.doImmediateSaveAndUpload();
}
else {
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
}
if (!editorWasClosed){
// use cancelled operation so we need to get out of here
return null;
}
try {
IFile originalFile = editable.getLocalResource();
originalFile.delete(true, new NullProgressMonitor());
}
catch (CoreException e){
}
// fall through and let the new editable get created
}
else {
return editable;
}
}
}
if (descriptor != null){
editable = new SystemEditableRemoteFile(remoteFile, descriptor);
}
else {
editable = new SystemEditableRemoteFile(remoteFile);
}
}
catch (Exception e)
{
}
}
return editable;
}
protected void openEditor(IRemoteFile remoteFile, IEditorDescriptor descriptor) { protected void openEditor(IRemoteFile remoteFile, IEditorDescriptor descriptor) {
SystemEditableRemoteFile editable = null; SystemEditableRemoteFile editable = getEditableRemoteObject(remoteFile, descriptor);
if (editable == null){
if (descriptor == null) // case for cancelled operation when user was prompted to save file of different case
{ return;
editable = new SystemEditableRemoteFile(remoteFile);
}
else
{
editable = new SystemEditableRemoteFile(remoteFile, descriptor);
} }
boolean systemEditor = descriptor != null && descriptor.getId().equals(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID); boolean systemEditor = descriptor != null && descriptor.getId().equals(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);

View file

@ -61,6 +61,7 @@
* David McKnight (IBM) - [261019] New File/Folder actions available in Work Offline mode * David McKnight (IBM) - [261019] New File/Folder actions available in Work Offline mode
* David McKnight (IBM) - [254769] Don't get latest file when opening a file always * David McKnight (IBM) - [254769] Don't get latest file when opening a file always
* David McKnight (IBM) - [264607] Unable to delete a broken symlink * David McKnight (IBM) - [264607] Unable to delete a broken symlink
* David McKnight (IBM) - [276103] Files with names in different cases are not handled properly
*******************************************************************************/ *******************************************************************************/
package org.eclipse.rse.internal.files.ui.view; package org.eclipse.rse.internal.files.ui.view;
@ -75,6 +76,7 @@ import java.util.StringTokenizer;
import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
@ -185,6 +187,7 @@ import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.IEditorRegistry;
import org.eclipse.ui.ISharedImages; import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbench;
@ -3291,6 +3294,38 @@ public class SystemViewRemoteFileAdapter
ISystemEditableRemoteObject editable = getEditableRemoteObject(remoteFile); ISystemEditableRemoteObject editable = getEditableRemoteObject(remoteFile);
if (editable != null) if (editable != null)
{ {
String remotePath = remoteFile.getAbsolutePath();
String replicaRemotePath = editable.getAbsolutePath();
// first make sure that the correct remote file is referenced (might be difference because of different case)
if (!replicaRemotePath.equals(remotePath)){ // for bug 276103
IEditorPart editor = editable.getEditorPart();
boolean editorWasClosed = false;
if (editor.isDirty()){
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
if (editorWasClosed)
editable.doImmediateSaveAndUpload();
}
else {
editorWasClosed = editor.getEditorSite().getPage().closeEditor(editor, true);
}
if (!editorWasClosed){
// use cancelled operation so we need to get out of here
return false;
}
try {
IFile file = editable.getLocalResource();
file.delete(true, new NullProgressMonitor());
}
catch (CoreException e){
}
// open new editor for correct replica
editable = getEditableRemoteObject(remoteFile);
}
try try
{ {
boolean isOpen = editable.checkOpenInEditor() != ISystemEditableRemoteObject.NOT_OPEN; boolean isOpen = editable.checkOpenInEditor() != ISystemEditableRemoteObject.NOT_OPEN;
@ -3406,10 +3441,11 @@ public class SystemViewRemoteFileAdapter
{ {
try try
{ {
IFile file = getCachedCopy(remoteFile); IFile file = getCachedCopy(remoteFile); // Note that this is a case-sensitive check
if (file != null) if (file != null)
{ {
SystemIFileProperties properties = new SystemIFileProperties(file); SystemIFileProperties properties = new SystemIFileProperties(file);
Object obj = properties.getRemoteFileObject(); Object obj = properties.getRemoteFileObject();
if (obj != null && obj instanceof ISystemEditableRemoteObject) if (obj != null && obj instanceof ISystemEditableRemoteObject)
{ {
@ -3419,10 +3455,10 @@ public class SystemViewRemoteFileAdapter
{ {
//((IRemoteFile)rmtFile).markStale(true); //((IRemoteFile)rmtFile).markStale(true);
} }
return rmtObj; return rmtObj;
} }
} }
return new SystemEditableRemoteFile(remoteFile); return new SystemEditableRemoteFile(remoteFile);
} }
catch (Exception e) catch (Exception e)