diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java index c1d4492f456..3b644e6818f 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java @@ -446,12 +446,11 @@ public class LocalFileService extends AbstractFileService implements IFileServic File target = new File(remoteParent, remoteFile); boolean sourceIsVirtual = ArchiveHandlerManager.isVirtual(localFile.getAbsolutePath()); boolean targetIsVirtual = ArchiveHandlerManager.isVirtual(target.getAbsolutePath()); - boolean targetIsArchive = ArchiveHandlerManager.getInstance().isArchive(target); if (sourceIsVirtual) { return copyFromArchive(localFile, target, remoteFile, monitor, srcEncoding, hostEncoding, !isBinary); } - if (targetIsVirtual || targetIsArchive) + if (targetIsVirtual) { return copyToArchive(localFile, target, remoteFile, monitor, srcEncoding, hostEncoding, !isBinary); } diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java index 3b7e32e6b5b..5ae32522497 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java @@ -450,6 +450,12 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I String remoteParentPath = remotePath.substring(0, slashIndex); String remoteFileName = remotePath.substring(slashIndex + 1, remotePath.length()); boolean isBinary = isBinary(srcEncoding, rmtEncoding, remotePath); + if (ArchiveHandlerManager.isVirtual(remotePath)) + { + AbsoluteVirtualPath avp = new AbsoluteVirtualPath(remotePath); + remoteParentPath = avp.getPath(); + remoteFileName = avp.getName(); + } try { getFileService().upload(monitor, new File(source), remoteParentPath, remoteFileName, isBinary, srcEncoding, rmtEncoding);