From 33bad99ca1edb859046137044f2a170ffc006fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 14 Sep 2011 12:24:13 +0300 Subject: [PATCH] some fixes to ClassPathUtils --- .../query/support/ProjectableAdapter.java | 2 +- .../query/support/ProjectableQuery.java | 2 -- .../java/com/mysema/util/ClassPathUtils.java | 25 +++++++++++-------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/support/ProjectableAdapter.java b/querydsl-core/src/main/java/com/mysema/query/support/ProjectableAdapter.java index 9d838fd71..cf7aff712 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/ProjectableAdapter.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/ProjectableAdapter.java @@ -20,7 +20,7 @@ import com.mysema.query.types.Expression; * @author tiwe */ public class ProjectableAdapter

implements Projectable { - + private final P projectable; public ProjectableAdapter(P projectable) { diff --git a/querydsl-core/src/main/java/com/mysema/query/support/ProjectableQuery.java b/querydsl-core/src/main/java/com/mysema/query/support/ProjectableQuery.java index 38cf4f3ab..3ae688bb8 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/ProjectableQuery.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/ProjectableQuery.java @@ -38,8 +38,6 @@ public abstract class ProjectableQuery> return count(); } - - @Override public final CloseableIterator iterate(Expression first, Expression second, Expression... rest) { return iterate(merge(first, second, rest)); diff --git a/querydsl-core/src/main/java/com/mysema/util/ClassPathUtils.java b/querydsl-core/src/main/java/com/mysema/util/ClassPathUtils.java index f4b358c83..1bd0a9b35 100644 --- a/querydsl-core/src/main/java/com/mysema/util/ClassPathUtils.java +++ b/querydsl-core/src/main/java/com/mysema/util/ClassPathUtils.java @@ -23,15 +23,16 @@ public final class ClassPathUtils { private static final Pattern JAR_URL_SEPARATOR = Pattern.compile("!"); public static Set> scanPackage(ClassLoader classLoader, Package pkg) throws IOException { - Enumeration urls = classLoader.getResources(pkg.getName().replace('.', '/')); + String packagePath = pkg.getName().replace('.', '/'); + Enumeration urls = classLoader.getResources(packagePath); Set> classes = new HashSet>(); while (urls.hasMoreElements()){ URL url = urls.nextElement(); if (url.getProtocol().equals("jar")){ - scanJar(classes, url); + scanJar(classes, url, packagePath); }else if (url.getProtocol().equals("file")){ - scanDirectory(pkg, classes, url); + scanDirectory(pkg, classes, url, pkg.getName()); }else{ throw new IllegalArgumentException("Illegal url : " + url); @@ -40,7 +41,7 @@ public final class ClassPathUtils { return classes; } - private static void scanDirectory(Package pkg, Set> classes, URL url) throws IOException { + private static void scanDirectory(Package pkg, Set> classes, URL url, String packageName) throws IOException { Deque files = new ArrayDeque(); String packagePath; try { @@ -56,10 +57,12 @@ public final class ClassPathUtils { if (child.getName().endsWith(".class")){ String fileName = child.getPath().substring(packagePath.length()+1).replace(File.separatorChar, '.'); String className = pkg.getName() + "." + fileName.substring(0, fileName.length()-6); - Class cl = safeClassForName(className); - if (cl != null) { - classes.add(cl); - } + if (className.startsWith(packageName)) { + Class cl = safeClassForName(className); + if (cl != null) { + classes.add(cl); + } + } }else if (child.isDirectory()){ files.add(child); } @@ -67,13 +70,13 @@ public final class ClassPathUtils { } } - private static void scanJar(Set> classes, URL url) throws IOException { + private static void scanJar(Set> classes, URL url, String packagePath) throws IOException { String[] fileAndPath = JAR_URL_SEPARATOR.split(url.getFile().substring(5)); JarFile jarFile = new JarFile(fileAndPath[0]); Enumeration entries = jarFile.entries(); while (entries.hasMoreElements()){ - JarEntry entry = entries.nextElement(); - if (entry.getName().endsWith(".class") && entry.getName().startsWith(fileAndPath[1].substring(1))){ + JarEntry entry = entries.nextElement(); + if (entry.getName().endsWith(".class") && entry.getName().startsWith(packagePath) && entry.getName().startsWith(fileAndPath[1].substring(1))){ String className = entry.getName().substring(0, entry.getName().length()-6).replace('/', '.'); Class cl = safeClassForName(className); if (cl != null) {