/** * Tests FileURL's getters and setters. * * @throws MalformedURLException should not happen */ @Test public void testAccessors() throws MalformedURLException { FileURL url = getRootURL(); String scheme = getScheme(); Credentials credentials = new Credentials("login", "password"); String host = "host"; int port = 10000; String path = getSchemePath("/path/to"); String query = "query"; url.setScheme(scheme); url.setCredentials(credentials); url.setHost(host); url.setPort(port); url.setPath(path); url.setQuery(query); url.setProperty("name", "value"); assert scheme.equals(url.getScheme()); assert credentials.equals(url.getCredentials(), true); assert host.equals(url.getHost()); assert port == url.getPort(); assert path.equals(url.getPath()); assert query.equals(url.getQuery()); assert "to".equals(url.getFilename()); assert "value".equals(url.getProperty("name")); // Test null values url.setCredentials(null); url.setHost(null); url.setPort(-1); url.setPath("/"); url.setQuery(null); url.setProperty("name", null); assert scheme.equals(url.getScheme()); assert url.getCredentials() == null; assert !url.containsCredentials(); assert url.getHost() == null; assert -1 == url.getPort(); assert "/".equals(url.getPath()); assert url.getQuery() == null; assert url.getFilename() == null; assert url.getProperty("name") == null; assert (scheme + "://").equals(url.toString(true, false)); // Path cannot be null, the path is supposed to be "/" if a null or empty value is specified url.setPath(null); assert "/".equals(url.getPath()); url.setPath(""); assert "/".equals(url.getPath()); // Path must always start with a leading '/', if the specified does not then a '/' is // automatically added url.setPath("path/to"); assert "/path/to".equals(url.getPath()); }
@Override public AbstractFile[] ls() throws IOException, UnsupportedFileOperationException { List<GuestFileInfo> fileInfos = new ArrayList<GuestFileInfo>(); int index = 0; VsphereConnHandler connHandler = null; try { connHandler = getConnHandler(); ManagedObjectReference fileManager = getFileManager(connHandler); boolean haveRemaining; do { GuestListFileInfo res = connHandler .getClient() .getVimPort() .listFilesInGuest(fileManager, vm, credentials, getPathInVm(), index, null, null); haveRemaining = (res.getRemaining() != 0); fileInfos.addAll(res.getFiles()); index = fileInfos.size(); } while (haveRemaining); String parentPath = PathUtils.removeTrailingSeparator(fileURL.getPath()) + SEPARATOR; Collection<AbstractFile> res = new ArrayList<AbstractFile>(); for (GuestFileInfo f : fileInfos) { final String name = getFileName(f.getPath()); if (name.equals(".") || name.equals("..")) { continue; } FileURL childURL = (FileURL) fileURL.clone(); childURL.setPath(parentPath + name); AbstractFile newFile = new VSphereFile(childURL, this, f); res.add(newFile); } return res.toArray(new AbstractFile[0]); } catch (FileFaultFaultMsg e) { translateandLogException(e); } catch (GuestOperationsFaultFaultMsg e) { translateandLogException(e); } catch (InvalidStateFaultMsg e) { translateandLogException(e); } catch (RuntimeFaultFaultMsg e) { translateandLogException(e); } catch (TaskInProgressFaultMsg e) { translateandLogException(e); } catch (InvalidPropertyFaultMsg e) { translateandLogException(e); } catch (URISyntaxException e) { translateandLogException(e); } finally { releaseConnHandler(connHandler); } // we never get here.. return null; }
@Override public AbstractFile getRoot() { FileURL rootURL = (FileURL) getURL().clone(); String rootPath = getRootPath(); rootURL.setPath("/" + vmIdentifier + "/" + rootPath); return FileFactory.getFile(rootURL); }
/** * Tests <code>equals</code> methods. * * @throws MalformedURLException should not happen */ @Test public void testEquals() throws MalformedURLException { // No query part, as it is not parsed by all schemes FileURL url1 = getURL("login", "password", "host", 10000, "/path", null); url1.setProperty("name", "value"); FileURL url2 = (FileURL) url1.clone(); // Assert that both URLs are equal assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Add a trailing path separator to one of the URL's path and assert they are still equal url1.setPath(url1.getPath() + url1.getPathSeparator()); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that having the port part set to the standart port is equivalent to not having a port // part (-1) url1.setPort(url1.getStandardPort()); url2.setPort(-1); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that the scheme comparison is case-insensitive url1.setScheme(url1.getScheme().toUpperCase()); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that the host comparison is case-insensitive url1.setHost(url1.getHost().toUpperCase()); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that the path comparison is case-sensitive url1.setPath(url1.getPath().toUpperCase()); assertNotEquals(url1, url2); assertNotEquals(url1, url2, true, true); // Make both URLs equal again url1.setPath(url2.getPath()); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that the query comparison is case-sensitive url1.setQuery("query"); url2.setQuery("QUERY"); assertNotEquals(url1, url2); assertNotEquals(url1, url2, true, true); // Make both URLs equal again url1.setQuery(url2.getQuery()); assertEquals(url1, url2); assertEquals(url1, url2, true, true); // Assert that the credentials comparison is case-sensitive url1.setCredentials(new Credentials("LOGIN", "password")); assertEquals(url1, url2, false, false); assertNotEquals(url1, url2, true, true); url1.setCredentials(new Credentials("login", "PASSWORD")); assertEquals(url1, url2, false, false); assertNotEquals(url1, url2, true, true); // Assert that URLs are equal if credentials comparison is disabled assertEquals(url1, url2, false, true); // Make both URLs equal again url1.setCredentials(new Credentials("login", "password")); assertEquals(url1, url2, true, true); // Assert that the properties comparison is case-sensitive url1.setProperty("name", null); url1.setProperty("NAME", "value"); assertEquals(url1, url2, false, false); assertNotEquals(url1, url2, true, true); url1.setProperty("name", "VALUE"); assertEquals(url1, url2, false, false); assertNotEquals(url1, url2, true, true); // Assert that URLs are equal if properties comparison is disabled assertEquals(url1, url2, true, false); // Make both URLs equal again url1.setProperty("NAME", null); url1.setProperty("name", "value"); assertEquals(url1, url2, true, true); // Assert that the properties comparison fails if an extra property is added to one of the URLs url1.setProperty("name2", "value2"); assertNotEquals(url1, url2, true, true); // Assert that URLs are equal if properties comparison is disabled assertEquals(url1, url2, true, false); // Make both URLs equal again url1.setProperty("name2", null); assertEquals(url1, url2, true, true); }