diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java index 33c258284a..a5340ddbd3 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DriverInstrumentation.java @@ -35,18 +35,17 @@ public final class DriverInstrumentation extends Instrumenter.Default { @Override public String[] helperClassNames() { - final JDBCConnectionUrlParser[] parsers = JDBCConnectionUrlParser.values(); - final List parserClasses = new ArrayList<>(parsers.length + 3); + final List helpers = new ArrayList<>(JDBCConnectionUrlParser.values().length + 4); - parserClasses.add(packageName + ".DBInfo"); - parserClasses.add(packageName + ".DBInfo$Builder"); - parserClasses.add(packageName + ".JDBCMaps"); - parserClasses.add(packageName + ".JDBCConnectionUrlParser"); + helpers.add(packageName + ".DBInfo"); + helpers.add(packageName + ".DBInfo$Builder"); + helpers.add(packageName + ".JDBCMaps"); + helpers.add(packageName + ".JDBCConnectionUrlParser"); - for (final JDBCConnectionUrlParser parser : parsers) { - parserClasses.add(parser.getClass().getName()); + for (final JDBCConnectionUrlParser parser : JDBCConnectionUrlParser.values()) { + helpers.add(parser.getClass().getName()); } - return parserClasses.toArray(new String[0]); + return helpers.toArray(new String[0]); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCConnectionUrlParser.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCConnectionUrlParser.java index ba5cdf4a30..8f5124ad79 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCConnectionUrlParser.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCConnectionUrlParser.java @@ -618,36 +618,37 @@ public enum JDBCConnectionUrlParser { populateStandardProperties(builder, splitQuery(split[1], ";")); } - if (split[0].startsWith("memory:")) { + final String details = split[0]; + if (details.startsWith("memory:")) { builder.subtype("memory"); - final String urlInstance = split[0].substring("memory:".length()); + final String urlInstance = details.substring("memory:".length()); if (!urlInstance.isEmpty()) { instance = urlInstance; } - } else if (split[0].startsWith("directory:")) { + } else if (details.startsWith("directory:")) { builder.subtype("directory"); - final String urlInstance = split[0].substring("directory:".length()); + final String urlInstance = details.substring("directory:".length()); if (!urlInstance.isEmpty()) { instance = urlInstance; } - } else if (split[0].startsWith("classpath:")) { + } else if (details.startsWith("classpath:")) { builder.subtype("classpath"); - final String urlInstance = split[0].substring("classpath:".length()); + final String urlInstance = details.substring("classpath:".length()); if (!urlInstance.isEmpty()) { instance = urlInstance; } - } else if (split[0].startsWith("jar:")) { + } else if (details.startsWith("jar:")) { builder.subtype("jar"); - final String urlInstance = split[0].substring("jar:".length()); + final String urlInstance = details.substring("jar:".length()); if (!urlInstance.isEmpty()) { instance = urlInstance; } - } else if (split[0].startsWith("//")) { + } else if (details.startsWith("//")) { builder.subtype("network"); if (dbInfo.getPort() == null) { builder.port(DEFAULT_PORT); } - String url = split[0].substring("//".length()); + String url = details.substring("//".length()); final int instanceLoc = url.indexOf("/"); if (instanceLoc >= 0) { instance = url.substring(instanceLoc + 1); @@ -666,7 +667,7 @@ public enum JDBCConnectionUrlParser { } } else { builder.subtype("directory"); - final String urlInstance = split[0]; + final String urlInstance = details; if (!urlInstance.isEmpty()) { instance = urlInstance; } @@ -701,7 +702,7 @@ public enum JDBCConnectionUrlParser { if (connectionUrl == null) { return DEFAULT; } - // Make this easer and ignore case. + // Make this easier and ignore case. connectionUrl = connectionUrl.toLowerCase(); if (!connectionUrl.startsWith("jdbc:")) { diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java index 1b4b0d7da6..2242387c1d 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/PreparedStatementInstrumentation.java @@ -42,24 +42,23 @@ public final class PreparedStatementInstrumentation extends Instrumenter.Default @Override public String[] helperClassNames() { - final JDBCConnectionUrlParser[] parsers = JDBCConnectionUrlParser.values(); - final List parserClasses = new ArrayList<>(parsers.length + 8); + final List helpers = new ArrayList<>(JDBCConnectionUrlParser.values().length + 9); - parserClasses.add(packageName + ".DBInfo"); - parserClasses.add(packageName + ".DBInfo$Builder"); - parserClasses.add(packageName + ".JDBCUtils"); - parserClasses.add(packageName + ".JDBCMaps"); - parserClasses.add(packageName + ".JDBCConnectionUrlParser"); + helpers.add(packageName + ".DBInfo"); + helpers.add(packageName + ".DBInfo$Builder"); + helpers.add(packageName + ".JDBCUtils"); + helpers.add(packageName + ".JDBCMaps"); + helpers.add(packageName + ".JDBCConnectionUrlParser"); - parserClasses.add("datadog.trace.agent.decorator.BaseDecorator"); - parserClasses.add("datadog.trace.agent.decorator.ClientDecorator"); - parserClasses.add("datadog.trace.agent.decorator.DatabaseClientDecorator"); - parserClasses.add(packageName + ".JDBCDecorator"); + helpers.add("datadog.trace.agent.decorator.BaseDecorator"); + helpers.add("datadog.trace.agent.decorator.ClientDecorator"); + helpers.add("datadog.trace.agent.decorator.DatabaseClientDecorator"); + helpers.add(packageName + ".JDBCDecorator"); - for (final JDBCConnectionUrlParser parser : parsers) { - parserClasses.add(parser.getClass().getName()); + for (final JDBCConnectionUrlParser parser : JDBCConnectionUrlParser.values()) { + helpers.add(parser.getClass().getName()); } - return parserClasses.toArray(new String[0]); + return helpers.toArray(new String[0]); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java index 9d513319e9..5c0fb81177 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/StatementInstrumentation.java @@ -42,24 +42,23 @@ public final class StatementInstrumentation extends Instrumenter.Default { @Override public String[] helperClassNames() { - final JDBCConnectionUrlParser[] parsers = JDBCConnectionUrlParser.values(); - final List parserClasses = new ArrayList<>(parsers.length + 8); + final List helpers = new ArrayList<>(JDBCConnectionUrlParser.values().length + 9); - parserClasses.add(packageName + ".DBInfo"); - parserClasses.add(packageName + ".DBInfo$Builder"); - parserClasses.add(packageName + ".JDBCUtils"); - parserClasses.add(packageName + ".JDBCMaps"); - parserClasses.add(packageName + ".JDBCConnectionUrlParser"); + helpers.add(packageName + ".DBInfo"); + helpers.add(packageName + ".DBInfo$Builder"); + helpers.add(packageName + ".JDBCUtils"); + helpers.add(packageName + ".JDBCMaps"); + helpers.add(packageName + ".JDBCConnectionUrlParser"); - parserClasses.add("datadog.trace.agent.decorator.BaseDecorator"); - parserClasses.add("datadog.trace.agent.decorator.ClientDecorator"); - parserClasses.add("datadog.trace.agent.decorator.DatabaseClientDecorator"); - parserClasses.add(packageName + ".JDBCDecorator"); + helpers.add("datadog.trace.agent.decorator.BaseDecorator"); + helpers.add("datadog.trace.agent.decorator.ClientDecorator"); + helpers.add("datadog.trace.agent.decorator.DatabaseClientDecorator"); + helpers.add(packageName + ".JDBCDecorator"); - for (final JDBCConnectionUrlParser parser : parsers) { - parserClasses.add(parser.getClass().getName()); + for (final JDBCConnectionUrlParser parser : JDBCConnectionUrlParser.values()) { + helpers.add(parser.getClass().getName()); } - return parserClasses.toArray(new String[0]); + return helpers.toArray(new String[0]); } @Override diff --git a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy index 3e70935b54..e0fb31854a 100644 --- a/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy +++ b/dd-java-agent/instrumentation/jdbc/src/test/groovy/JDBCConnectionUrlParserTest.groovy @@ -30,6 +30,8 @@ class JDBCConnectionUrlParserTest extends Specification { url | _ null | _ "" | _ + "jdbc:" | _ + "jdbc::" | _ "bogus:string" | _ }