You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/10/16 19:48:04 UTC

olingo-odata2 git commit: [OLINGO-582] Improved failure handling for class helper

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 0a70933b5 -> 10d21f4f0


[OLINGO-582] Improved failure handling for class helper


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/10d21f4f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/10d21f4f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/10d21f4f

Branch: refs/heads/master
Commit: 10d21f4f00cd6d52d7b363b83a5a08e4e7f655b2
Parents: 0a70933
Author: mibo <mi...@mirb.de>
Authored: Fri Oct 16 19:20:20 2015 +0200
Committer: mibo <mi...@mirb.de>
Committed: Fri Oct 16 19:45:21 2015 +0200

----------------------------------------------------------------------
 .../processor/core/util/ClassHelper.java           | 11 +++++++----
 .../processor/core/util/ClassHelperTest.java       | 17 +++++++++++++++++
 2 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/10d21f4f/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelper.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelper.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelper.java
index a5e9eb9..6a0dc3e 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelper.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelper.java
@@ -24,6 +24,7 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.ParameterizedType;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -109,14 +110,16 @@ public class ClassHelper {
       throw new IllegalArgumentException("No folder to scan found for package '" + packageToScan + "'.");
     }
     try {
-      URI uri = url.toURI();
-      if (uri == null) {
-        throw new IllegalArgumentException("No folder to scan found for package '" + packageToScan + "'.");
+      if(url.getPath().contains(" ")) {
+        url = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getPath().replace(" ", "%20"));
       }
-      return uri;
+      return url.toURI();
     } catch (URISyntaxException e) {
       throw new IllegalArgumentException("Invalid folder path for path URL '" + url +
           "' from thread context class loader.");
+    } catch (MalformedURLException e) {
+      throw new IllegalArgumentException("Invalid folder path for path URL '" + url +
+          "' from thread context class loader.");
     }
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/10d21f4f/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
index bcd955a..3ffba61 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/util/ClassHelperTest.java
@@ -78,6 +78,23 @@ public class ClassHelperTest {
     Assert.assertEquals(SimpleEntity.class.getName(), loadedClasses.get(0).getName());
   }
 
+  @Test(expected = ClassFormatError.class)
+  public void loadFromDirWithUnsafeName() throws Exception {
+    URL currentPath = Thread.currentThread().getContextClassLoader().getResource(".");
+    File folder = new File(currentPath.toURI().getSchemeSpecificPart(), "space space/package (123)/");
+    folder.mkdirs();
+    File classFile = new File(folder, "Invalid.class");
+    classFile.createNewFile();
+    String packageToScan = "space space.package";
+
+    //
+    List<Class<?>> loadedClasses = ClassHelper.loadClasses(packageToScan, annotatedTestEntityInnerClasses);
+
+    //
+    Assert.assertEquals(1, loadedClasses.size());
+    Assert.assertEquals(SimpleEntity.class.getName(), loadedClasses.get(0).getName());
+  }
+
   @Test
   public void loadSingleEntityFromJar() throws ODataException {
     String packageToScan = AnnotatedEntity.class.getPackage().getName();