Skip to content

Commit 52dcd30

Browse files
authored
Allow excluding all methods of a class (#10753)
1 parent 4fc3bab commit 52dcd30

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParser.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,10 @@ public final class MethodsConfigurationParser {
1818

1919
private static final Logger logger = Logger.getLogger(MethodsConfigurationParser.class.getName());
2020

21-
static final String PACKAGE_CLASS_NAME_REGEX = "[\\w.$]+";
22-
private static final String METHOD_LIST_REGEX = "\\s*(?:\\w+\\s*,)*\\s*(?:\\w+\\s*,?)\\s*";
21+
private static final String PACKAGE_CLASS_NAME_REGEX = "[\\w.$]+";
22+
private static final String METHOD_LIST_REGEX = "(?:\\s*\\w+\\s*,)*+(?:\\s*\\w+)?\\s*";
2323
private static final String CONFIG_FORMAT =
24-
"(?:\\s*"
25-
+ PACKAGE_CLASS_NAME_REGEX
26-
+ "\\["
27-
+ METHOD_LIST_REGEX
28-
+ "]\\s*;)*\\s*"
29-
+ PACKAGE_CLASS_NAME_REGEX
30-
+ "\\["
31-
+ METHOD_LIST_REGEX
32-
+ "]";
24+
PACKAGE_CLASS_NAME_REGEX + "(?:\\[" + METHOD_LIST_REGEX + "])?";
3325

3426
/**
3527
* This method takes a string in a form of {@code
@@ -54,6 +46,10 @@ public static Map<String, Set<String>> parse(String configString) {
5446
if (classMethod.trim().isEmpty()) {
5547
continue;
5648
}
49+
if (!classMethod.contains("[")) {
50+
toTrace.put(classMethod.trim(), Collections.emptySet());
51+
continue;
52+
}
5753
String[] splitClassMethod = classMethod.split("\\[", -1);
5854
String className = splitClassMethod[0];
5955
String method = splitClassMethod[1].trim();

javaagent-tooling/src/test/groovy/io/opentelemetry/javaagent/tooling/config/MethodsConfigurationParserTest.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package io.opentelemetry.javaagent.tooling.config
88

99
import spock.lang.Specification
1010

11+
import static java.util.Collections.emptySet
12+
1113
class MethodsConfigurationParserTest extends Specification {
1214

1315
def "test configuration #value"() {
@@ -18,7 +20,7 @@ class MethodsConfigurationParserTest extends Specification {
1820
value | expected
1921
null | [:]
2022
" " | [:]
21-
"some.package.ClassName" | [:]
23+
"some.package.ClassName" | ["some.package.ClassName":emptySet()]
2224
"some.package.ClassName[ , ]" | [:]
2325
"some.package.ClassName[ , method]" | [:]
2426
"some.package.Class\$Name[ method , ]" | ["some.package.Class\$Name": ["method"].toSet()]

0 commit comments

Comments
 (0)