[OLINGO-1398] Improved jar file handling
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 6a0dc3e..3162dad 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.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
+import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
@@ -146,17 +147,18 @@
private static Collection<String> getClassFqnFromJar(final URI uri, final String packageToScan) {
final String jarFilePath;
- String filepath = uri.getSchemeSpecificPart().substring(5);
+ String filepath = uri.toString();
String[] split = filepath.split(JAR_RESOURCE_SEPARATOR);
- if (split.length == 2) {
- jarFilePath = split[0];
+ if (split.length > 1) {
+ jarFilePath = filepath.substring(0, filepath.lastIndexOf("!")+2);
} else {
throw new IllegalArgumentException("Illegal jar file path '" + filepath + "'.");
}
-
JarFile jarFile = null;
try {
- jarFile = new JarFile(jarFilePath);
+ URL url = new URL(jarFilePath);
+ JarURLConnection connection = (JarURLConnection) url.openConnection();
+ jarFile = connection.getJarFile();
List<String> classFileNames = new ArrayList<String>();
Enumeration<JarEntry> entries = jarFile.entries();