diff --git a/src/main/java/perfix/MutableBoolean.java b/src/main/java/perfix/MutableBoolean.java deleted file mode 100644 index d9e5671..0000000 --- a/src/main/java/perfix/MutableBoolean.java +++ /dev/null @@ -1,22 +0,0 @@ -package perfix; - -public class MutableBoolean { - private boolean value; - - public MutableBoolean(boolean value) { - this.value = value; - } - - public void set(boolean value) { - this.value = value; - } - - public boolean get() { - return value; - } - - @Override - public String toString() { - return Boolean.toString(value); - } -} diff --git a/src/main/java/perfix/instrument/ClassInstrumentor.java b/src/main/java/perfix/instrument/ClassInstrumentor.java index 0aa361d..2bf9407 100644 --- a/src/main/java/perfix/instrument/ClassInstrumentor.java +++ b/src/main/java/perfix/instrument/ClassInstrumentor.java @@ -4,7 +4,6 @@ import javassist.CannotCompileException; import javassist.ClassPool; import javassist.CtClass; import javassist.NotFoundException; -import perfix.MutableBoolean; import java.io.IOException; import java.lang.instrument.ClassFileTransformer; @@ -94,14 +93,8 @@ public class ClassInstrumentor extends Instrumentor { return getCtClass(resource.replaceAll("/", ".")); } - private boolean shouldInclude(String resource, List excludes) { - MutableBoolean included = new MutableBoolean(false); - excludes.forEach(include -> { - if (resource.startsWith(include)) { - included.set(true); - } - }); - return included.get(); + private boolean shouldInclude(String resource, List includes) { + return includes.stream().anyMatch(resource::startsWith); } private boolean isInnerClass(String resource) { diff --git a/src/main/java/perfix/instrument/Instrumentor.java b/src/main/java/perfix/instrument/Instrumentor.java index 0b03be7..79d6559 100644 --- a/src/main/java/perfix/instrument/Instrumentor.java +++ b/src/main/java/perfix/instrument/Instrumentor.java @@ -5,8 +5,10 @@ import javassist.*; import java.io.IOException; import java.lang.instrument.Instrumentation; import java.util.List; +import java.util.logging.Logger; public abstract class Instrumentor { + private static final Logger log = Logger.getLogger("perfix"); static final String JAVA_STRING = "java.lang.String"; static final String JAVA_HASHMAP = "java.util.HashMap"; static final String PERFIX_METHODINVOCATION_CLASS = "perfix.MethodInvocation"; @@ -29,8 +31,7 @@ public abstract class Instrumentor { hashMapClass = classPool.get(JAVA_HASHMAP); } catch (NotFoundException e) { - e.printStackTrace(); - //suppress TODO implement trace + log.severe(e.toString()); } } diff --git a/src/main/java/perfix/instrument/JdbcInstrumentor.java b/src/main/java/perfix/instrument/JdbcInstrumentor.java index 0ed5771..f5b50d3 100644 --- a/src/main/java/perfix/instrument/JdbcInstrumentor.java +++ b/src/main/java/perfix/instrument/JdbcInstrumentor.java @@ -6,11 +6,13 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.logging.Logger; import java.util.stream.Stream; import static java.util.Arrays.stream; public class JdbcInstrumentor extends Instrumentor { + private static final Logger log = Logger.getLogger("perfix"); private static CtClass statementTextClass = null; @@ -41,7 +43,7 @@ public class JdbcInstrumentor extends Instrumentor { try { return bytecode(preparedStatementInterface); } catch (CannotCompileException | IOException e) { - e.printStackTrace(); + log.severe(e.toString()); return uninstrumentedByteCode; } } @@ -69,8 +71,7 @@ public class JdbcInstrumentor extends Instrumentor { method.insertAfter("$_.setSqlForPerfix($1);"); //$_ is result instance, $1 is first argument } catch (CannotCompileException | NotFoundException e) { - // suppress - e.printStackTrace(); + log.severe(e.toString()); } } ); @@ -134,7 +135,7 @@ public class JdbcInstrumentor extends Instrumentor { methods.addAll(Arrays.asList(preparedStatementClass.getDeclaredMethods(methodname))); } catch (NotFoundException e) { - e.printStackTrace(); + log.severe(e.toString()); throw new RuntimeException(e); } } diff --git a/src/main/java/perfix/instrument/StatementText.java b/src/main/java/perfix/instrument/StatementText.java index fe298b4..7a6554a 100644 --- a/src/main/java/perfix/instrument/StatementText.java +++ b/src/main/java/perfix/instrument/StatementText.java @@ -19,12 +19,6 @@ public class StatementText { throw new IndexOutOfBoundsException("" + index); } statementText.vars[index - 1] = value; - } else { - if (statementText!=null){ - System.out.println(statementText); - } else { - System.out.println("null"); - } } } @@ -59,7 +53,7 @@ public class StatementText { @Override public String toString() { - StringBuilder output=new StringBuilder(sql); + StringBuilder output = new StringBuilder(sql); int found = 0; for (int i = 0; i < sql.length(); i++) { if (output.charAt(i) == BOUNDVAR_MARK) { diff --git a/src/main/java/perfix/server/HTTPServer.java b/src/main/java/perfix/server/HTTPServer.java index ab5a15d..4c417ff 100644 --- a/src/main/java/perfix/server/HTTPServer.java +++ b/src/main/java/perfix/server/HTTPServer.java @@ -28,7 +28,7 @@ public class HTTPServer implements HttpHandler { try { HttpServer server = HttpServer.create(new InetSocketAddress("localhost", port), 0); server.createContext("/", this); - server.setExecutor(Executors.newFixedThreadPool(2)); + server.setExecutor(Executors.newFixedThreadPool(3)); server.start(); System.out.println(" --- Perfix http server running. Point your browser to http://localhost:" + port + "/"); } catch (IOException ioe) { diff --git a/src/main/java/perfix/server/json/SynthSerializerFactory.java b/src/main/java/perfix/server/json/SynthSerializerFactory.java index 5e85d0c..f31de76 100644 --- a/src/main/java/perfix/server/json/SynthSerializerFactory.java +++ b/src/main/java/perfix/server/json/SynthSerializerFactory.java @@ -5,11 +5,14 @@ import javassist.*; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.logging.Logger; import static java.util.Arrays.asList; import static java.util.Collections.unmodifiableSet; public class SynthSerializerFactory implements SerializerFactory { + + private static final Logger log = Logger.getLogger("perfix"); private static final String STRING = "java.lang.String"; private static final String BOOLEAN = "java.lang.Boolean"; private static final String CHARACTER = "java.lang.Character"; @@ -64,7 +67,7 @@ public class SynthSerializerFactory implements SerializerFactory { return createSerializerInstance(serializerClass); } catch (NotFoundException | CannotCompileException | ReflectiveOperationException e) { - e.printStackTrace(); + log.severe(e.toString()); throw new SerializerCreationException(e); } }); @@ -270,24 +273,18 @@ public class SynthSerializerFactory implements SerializerFactory { private List getAllFields(CtClass beanClass) { try { List allfields = new ArrayList<>(); - for (CtField field : beanClass.getDeclaredFields()) { - allfields.add(field); - } - if (beanClass.getSuperclass() != null) { - return getAllFields(beanClass.getSuperclass(), allfields); - } - return allfields; + return getAllFields(beanClass, allfields); } catch (NotFoundException e) { throw new SerializerCreationException(e); } } - private List getAllFields(CtClass beanClass, List allfields) { - for (CtField field : beanClass.getDeclaredFields()) { - allfields.add(field); + private List getAllFields(CtClass beanClass, List allfields) throws NotFoundException { + allfields.addAll(asList(beanClass.getDeclaredFields())); + if (beanClass.getSuperclass() != null) { + return getAllFields(beanClass.getSuperclass(), allfields); } - return allfields; }