diff --git a/pom.xml b/pom.xml index 0c62798f..eddd3d09 100644 --- a/pom.xml +++ b/pom.xml @@ -421,7 +421,7 @@ -cp ${project.build.outputDirectory}${path.separator}${maven.compile.classpath} com.zaxxer.hikari.util.JavassistProxyFactory - ${project.basedir}${file.separator} + ${project.basedir} diff --git a/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java b/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java index 534ce7cb..1060d04d 100644 --- a/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java +++ b/src/main/java/com/zaxxer/hikari/util/JavassistProxyFactory.java @@ -20,6 +20,7 @@ import com.zaxxer.hikari.pool.*; import javassist.*; import javassist.bytecode.ClassFile; +import java.io.File; import java.io.IOException; import java.lang.reflect.Array; import java.sql.*; @@ -35,11 +36,12 @@ import java.util.Set; * instances of the generated proxies. * * @author Brett Wooldridge + * @author Yanming Zhou */ public final class JavassistProxyFactory { private static ClassPool classPool; - private static String genDirectory = ""; + private static String genDirectory = "target" + File.separator + "classes"; public static void main(String... args) throws Exception { classPool = new ClassPool(); @@ -47,9 +49,15 @@ public final class JavassistProxyFactory classPool.appendClassPath(new LoaderClassPath(JavassistProxyFactory.class.getClassLoader())); if (args.length > 0) { - genDirectory = args[0]; + String parentDir = args[0]; + if (!parentDir.endsWith(File.separator)) { + parentDir += File.separator; + } + genDirectory = parentDir + genDirectory; } + System.out.println("Generating following classes to " + genDirectory); + // Cast is not needed for these String methodBody = "{ try { return delegate.method($$); } catch (SQLException e) { throw checkException(e); } }"; generateProxyClass(Connection.class, ProxyConnection.class.getName(), methodBody); @@ -96,7 +104,7 @@ public final class JavassistProxyFactory } } - proxyCt.writeFile(genDirectory + "target/classes"); + proxyCt.writeFile(genDirectory); } /** @@ -173,7 +181,7 @@ public final class JavassistProxyFactory } targetCt.getClassFile().setMajorVersion(ClassFile.JAVA_8); - targetCt.writeFile(genDirectory + "target/classes"); + targetCt.writeFile(genDirectory); } private static boolean isThrowsSqlException(CtMethod method) diff --git a/src/test/java/com/zaxxer/hikari/pool/TestJavassistCodegen.java b/src/test/java/com/zaxxer/hikari/pool/TestJavassistCodegen.java index 14ac1ecb..9a305252 100644 --- a/src/test/java/com/zaxxer/hikari/pool/TestJavassistCodegen.java +++ b/src/test/java/com/zaxxer/hikari/pool/TestJavassistCodegen.java @@ -19,7 +19,7 @@ public class TestJavassistCodegen { @Test public void testCodegen() throws Exception { String tmp = System.getProperty("java.io.tmpdir"); - JavassistProxyFactory.main(tmp + (tmp.endsWith("/") ? "" : "/")); + JavassistProxyFactory.main(tmp); Path base = Paths.get(tmp, "target/classes/com/zaxxer/hikari/pool".split("/")); Assert.assertTrue("", Files.isRegularFile(base.resolve("HikariProxyConnection.class")));