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();