From 705759b019ae5d3d13ff34917db7e9bdfe4c6782 Mon Sep 17 00:00:00 2001 From: Ruben Dijkstra Date: Sun, 13 Sep 2015 16:09:46 +0200 Subject: [PATCH] Update unsafe class names test This allows classes to be loaded that begin with com.sun or com.apple which are not in those packages. --- .../com/querydsl/codegen/ClassPathUtils.java | 2 +- .../test/java/com/applejuice/ShouldBeLoaded.java | 4 ++++ .../com/querydsl/codegen/ClassPathUtilsTest.java | 16 +++++++++++++--- .../test/java/com/suntanning/ShouldBeLoaded.java | 4 ++++ 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 querydsl-codegen/src/test/java/com/applejuice/ShouldBeLoaded.java create mode 100644 querydsl-codegen/src/test/java/com/suntanning/ShouldBeLoaded.java diff --git a/querydsl-codegen/src/main/java/com/querydsl/codegen/ClassPathUtils.java b/querydsl-codegen/src/main/java/com/querydsl/codegen/ClassPathUtils.java index f24b7b33b..c408a854c 100644 --- a/querydsl-codegen/src/main/java/com/querydsl/codegen/ClassPathUtils.java +++ b/querydsl-codegen/src/main/java/com/querydsl/codegen/ClassPathUtils.java @@ -73,7 +73,7 @@ public final class ClassPathUtils { */ public static Class safeClassForName(ClassLoader classLoader, String className) { try { - if (className.startsWith("com.sun") || className.startsWith("com.apple")) { + if (className.startsWith("com.sun.") || className.startsWith("com.apple.")) { return null; } else { return Class.forName(className, true, classLoader); diff --git a/querydsl-codegen/src/test/java/com/applejuice/ShouldBeLoaded.java b/querydsl-codegen/src/test/java/com/applejuice/ShouldBeLoaded.java new file mode 100644 index 000000000..840214775 --- /dev/null +++ b/querydsl-codegen/src/test/java/com/applejuice/ShouldBeLoaded.java @@ -0,0 +1,4 @@ +package com.applejuice; + +public class ShouldBeLoaded { +} diff --git a/querydsl-codegen/src/test/java/com/querydsl/codegen/ClassPathUtilsTest.java b/querydsl-codegen/src/test/java/com/querydsl/codegen/ClassPathUtilsTest.java index 735719009..abbe67652 100644 --- a/querydsl-codegen/src/test/java/com/querydsl/codegen/ClassPathUtilsTest.java +++ b/querydsl-codegen/src/test/java/com/querydsl/codegen/ClassPathUtilsTest.java @@ -13,8 +13,7 @@ */ package com.querydsl.codegen; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static org.junit.Assert.*; import java.io.IOException; import java.util.Set; @@ -23,7 +22,6 @@ import org.junit.Test; import com.SomeClass; - public class ClassPathUtilsTest { @Test @@ -40,4 +38,16 @@ public class ClassPathUtilsTest { assertFalse(classes.isEmpty()); assertEquals("XXX", SomeOtherClass2.property); } + + @Test + public void SafeClassForName() { + assertNull(safeForName("com.sun.nio.file.ExtendedOpenOption")); + assertNotNull(safeForName("com.suntanning.ShouldBeLoaded")); + assertNotNull(safeForName("com.applejuice.ShouldBeLoaded")); + } + + private Class safeForName(String className) { + return ClassPathUtils.safeClassForName(ClassPathUtilsTest.class.getClassLoader(), className); + } + } diff --git a/querydsl-codegen/src/test/java/com/suntanning/ShouldBeLoaded.java b/querydsl-codegen/src/test/java/com/suntanning/ShouldBeLoaded.java new file mode 100644 index 000000000..91114f6b8 --- /dev/null +++ b/querydsl-codegen/src/test/java/com/suntanning/ShouldBeLoaded.java @@ -0,0 +1,4 @@ +package com.suntanning; + +public class ShouldBeLoaded { +}