Alon Bar-Lev has uploaded a new change for review. Change subject: common: handle resources if path contains special characters ......................................................................
common: handle resources if path contains special characters ClassLoader.getResource() returns URL, URL.getPath() returns URI encoded string. Trying to use this string to access file will fail without decoding it first. Change-Id: Iff53340e6243b9e7c634ba00f30bac685b82ef80 Signed-off-by: Alon Bar-Lev <[email protected]> --- M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/generic/DomainsPasswordMapTest.java M backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/PackageExplorer.java M backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/ReflectionHelper.java M backend/manager/tools/engine-config/src/test/java/org/ovirt/engine/core/config/EngineConfigTest.java 4 files changed, 14 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/7497/1 diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/generic/DomainsPasswordMapTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/generic/DomainsPasswordMapTest.java index 610b1de..ebc5e1b 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/generic/DomainsPasswordMapTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/generic/DomainsPasswordMapTest.java @@ -1,5 +1,7 @@ package org.ovirt.engine.core.dal.dbbroker.generic; +import java.net.URLDecoder; + import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -18,7 +20,7 @@ public void testPasswordDomainMap() throws Exception { String keyStorePassword = "NoSoup4U"; String clearTextPassword = keyStorePassword; - String keyStorePath = ClassLoader.getSystemResource(".keystore").getPath(); + String keyStorePath = URLDecoder.decode(ClassLoader.getSystemResource(".keystore").getPath(), "UTF-8"); String alias = "engine"; String encryptedPassword = EncryptionUtils.encrypt(clearTextPassword, diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/PackageExplorer.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/PackageExplorer.java index a750f0a..058acba 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/PackageExplorer.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/PackageExplorer.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.FileInputStream; import java.net.URL; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; @@ -29,11 +30,11 @@ while (resources.hasMoreElements()) { URL resource = resources.nextElement(); if (isJar(resource)) { - jars.add(new JarInputStream(new FileInputStream(getJarName(resource)))); + jars.add(new JarInputStream(new FileInputStream(URLDecoder.decode(getJarName(resource), "UTF-8")))); } else if (containsJar(resource)) { jars.add(getContainingResource(classLoader, resource)); } else { - dirs.add(new File(resource.getFile())); + dirs.add(new File(URLDecoder.decode(resource.getFile(), "UTF-8"))); } } walkJars(ret, packageName, jars); diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/ReflectionHelper.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/ReflectionHelper.java index 36cd41d..1b95961 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/ReflectionHelper.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/ReflectionHelper.java @@ -24,6 +24,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; @@ -212,11 +213,11 @@ Thread.currentThread().getContextClassLoader()); for (URL directory : dirs) { - String resource = directory.getPath().replace("/"+path+"/", ""); + String resource = URLDecoder.decode(directory.getPath(), "UTF-8").replace("/"+path+"/", ""); if (resource.endsWith(".jar")) { classes.addAll(getClassNamesInJarPackage(loader, resource, packageName)); } else { - classes.addAll(getClassNamesInPackage(new File(directory.getFile()), packageName)); + classes.addAll(getClassNamesInPackage(new File(URLDecoder.decode(directory.getFile(), "UTF-8")), packageName)); } } return classes; diff --git a/backend/manager/tools/engine-config/src/test/java/org/ovirt/engine/core/config/EngineConfigTest.java b/backend/manager/tools/engine-config/src/test/java/org/ovirt/engine/core/config/EngineConfigTest.java index fc2bab4..6a13f63 100644 --- a/backend/manager/tools/engine-config/src/test/java/org/ovirt/engine/core/config/EngineConfigTest.java +++ b/backend/manager/tools/engine-config/src/test/java/org/ovirt/engine/core/config/EngineConfigTest.java @@ -1,5 +1,7 @@ package org.ovirt.engine.core.config; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.util.List; import junit.framework.Assert; @@ -15,15 +17,15 @@ private EngineConfig config = EngineConfig.getInstance(); @BeforeClass - public static void setConfigFilePathProperty() { - final String path = ClassLoader.getSystemResource("engine-config.conf").getPath(); + public static void setConfigFilePathProperty() throws UnsupportedEncodingException { + final String path = URLDecoder.decode(ClassLoader.getSystemResource("engine-config.conf").getPath(), "UTF-8"); System.setProperty(EngineConfig.CONFIG_FILE_PATH_PROPERTY, path); } @Test public void testConfigDirWithFlagSet() throws Exception { // get the real path of the config file - final String path = ClassLoader.getSystemResource("engine-config.conf").getPath(); + final String path = URLDecoder.decode(ClassLoader.getSystemResource("engine-config.conf").getPath(), "UTF-8"); Assert.assertNotNull(path); EngineConfig.main("-a", "--config=" + path); } -- To view, visit http://gerrit.ovirt.org/7497 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iff53340e6243b9e7c634ba00f30bac685b82ef80 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
