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

Reply via email to