diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java new file mode 100644 index 00000000000..8e86589db9e --- /dev/null +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/files/FileServiceArchiveTest.java @@ -0,0 +1,786 @@ +/******************************************************************************* + * Copyright (c) 2007 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Xuan Chen (IBM) - initial API and implementation + *******************************************************************************/ +package org.eclipse.rse.tests.subsystems.files; + +import java.io.File; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.rse.core.IRSESystemType; +import org.eclipse.rse.core.model.IHost; +import org.eclipse.rse.core.model.ISystemRegistry; +import org.eclipse.rse.core.model.SystemStartHere; +import org.eclipse.rse.core.subsystems.ISubSystem; +import org.eclipse.rse.services.clientserver.messages.SystemMessageException; +import org.eclipse.rse.services.files.IFileService; +import org.eclipse.rse.subsystems.files.core.servicesubsystem.IFileServiceSubSystem; +import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; +import org.eclipse.rse.tests.RSETestsPlugin; +import org.eclipse.rse.ui.ISystemPreferencesConstants; +import org.eclipse.rse.ui.RSEUIPlugin; + +public class FileServiceArchiveTest extends FileServiceBaseTest { + + protected String ZIP_SOURCE_DIR = ""; + protected String TMP_DIR_PARENT = ""; + protected String SYSTEM_TYPE_ID = IRSESystemType.SYSTEMTYPE_LOCAL_ID; + protected String SYSTEM_ADDRESS = ""; + protected String SYSTEM_NAME = ""; + protected String USER_ID = ""; + protected String PASSWORD = ""; + + public void setUp() { + if (!classBeenRunBefore) + { + IPreferenceStore store = RSEUIPlugin.getDefault().getPreferenceStore(); + + //We need to setDefault first in order to set the value of a preference. + store.setDefault(ISystemPreferencesConstants.ALERT_SSL, ISystemPreferencesConstants.DEFAULT_ALERT_SSL); + store.setDefault(ISystemPreferencesConstants.ALERT_NONSSL, ISystemPreferencesConstants.DEFAULT_ALERT_NON_SSL); + store.setValue(ISystemPreferencesConstants.ALERT_SSL, false); + store.setValue(ISystemPreferencesConstants.ALERT_NONSSL, false); + try + { + System.out.println("need to sleep"); + Thread.sleep(500); + } + catch (Exception e) + { + e.printStackTrace(); + } + classBeenRunBefore = true; + } + IHost localHost = getLocalSystemConnection(); + ISystemRegistry sr = SystemStartHere.getSystemRegistry(); + ISubSystem[] ss = sr.getServiceSubSystems(localHost, IFileService.class); + for (int i=0; i"; //$NON-NLS-1$ + } + //Fallback: Windows TODO: test unicode + return "a !@#${a}'` file%^&()_ =[]~+-;,."; //$NON-NLS-1$ + } + + public IRemoteFile copySourceFileOrFolder(String sourceFullName, String sourceName, String targetFolderFullName) + { + boolean ok = false; + IRemoteFile result = null; + try + { + IRemoteFile originalTargetArchiveFile = fss.getRemoteFileObject(sourceFullName, mon); + IRemoteFile targetFolder = fss.getRemoteFileObject(targetFolderFullName, mon); + ok = fss.copy(originalTargetArchiveFile, targetFolder, sourceName, mon); + if (ok) + { + //copy is successful + result = fss.getRemoteFileObject(getNewAbsoluteName(targetFolder, sourceName), mon); + } + //Need to call resolveFilterString of the parent to make sure the newly copied child + //is added to the DStore map. Otherwise, next time when query it, it will just created a + //default filter string. And the dstore server cannot handler it correctly. + Object[] children = fss.resolveFilterString(targetFolder, null, mon); + } + catch(Exception e) + { + return null; + } + return result; + } + + public IRemoteFile createFileOrFolder(String targetFolderName, String fileOrFolderName, boolean isFolder) + { + IRemoteFile result = null; + try + { + System.out.println("targetFolderName is " + targetFolderName); + if (fss == null) + { + System.out.println("fss is null "); + } + IRemoteFile targetFolder = fss.getRemoteFileObject(targetFolderName, mon); + //fss.resolveFilterString(targetFolder, null, mon); + String fileOrFolderAbsName = getNewAbsoluteName(targetFolder, fileOrFolderName); + IRemoteFile newFileOrFolderPath = fss.getRemoteFileObject(fileOrFolderAbsName, mon); + if (isFolder) + { + result = fss.createFolder(newFileOrFolderPath, mon); + } + else + { + result = fss.createFile(newFileOrFolderPath, mon); + } + //Need to call resolveFilterString of the parent to make sure the newly created child + //is added to the DStore map. Otherwise, next time when query it, it will just created a + //default filter string. And the dstore server cannot handler it correctly. + Object[] children = fss.resolveFilterString(targetFolder, null, mon); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + return result; + } + + public Object getChildFromFolder(IRemoteFile folderToCheck, String childName) + { + //then check the result of copy + Object[] children = null; + Object foundChild = null; + try + { + children = fss.resolveFilterString(folderToCheck, null, mon); + for (int i=0; i