Skip to content

Commit e9abf72

Browse files
committed
Add comments
1 parent 856f50d commit e9abf72

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/semconv/http/HttpClientAttributesExtractor.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -170,38 +170,42 @@ private static String redactUrlParameters(String urlpart) {
170170
return urlpart;
171171
}
172172

173-
StringBuilder redactedParameters = new StringBuilder();
174-
boolean paramToRedact = false;
173+
boolean paramToRedact = false; // To be able to skip the characters of the parameters to redact
175174
boolean paramNameDetected = false;
176175
boolean reference = false;
177176

177+
StringBuilder urlPartAfterQuestionMark = new StringBuilder();
178+
179+
// To build a parameter name until we reach the '=' character
180+
// If the parameter name is a one to redact, we will redact the value
178181
StringBuilder currentParamName = new StringBuilder();
179182

180183
for (int i = questionMarkIndex + 1; i < urlpart.length(); i++) {
181184
char currentChar = urlpart.charAt(i);
182185
if (currentChar == '=') {
183186
paramNameDetected = true;
184-
redactedParameters.append(currentParamName);
185-
redactedParameters.append('=');
187+
urlPartAfterQuestionMark.append(currentParamName);
188+
urlPartAfterQuestionMark.append('=');
186189
if (PARAMS_TO_REDACT.contains(currentParamName.toString())) {
187-
redactedParameters.append("REDACTED");
190+
urlPartAfterQuestionMark.append("REDACTED");
188191
paramToRedact = true;
189192
}
190-
} else if (currentChar == '&') {
191-
redactedParameters.append('&');
193+
} else if (currentChar == '&') { // New parameter delimiter
194+
urlPartAfterQuestionMark.append('&');
192195
paramNameDetected = false;
193196
paramToRedact = false;
194-
currentParamName.setLength(0);
195-
} else if (currentChar == '#') {
197+
currentParamName.setLength(
198+
0); // To avoid creating a new StringBuilder for each new parameter
199+
} else if (currentChar == '#') { // Reference delimiter
196200
reference = true;
197-
redactedParameters.append('#');
201+
urlPartAfterQuestionMark.append('#');
198202
} else if (!paramNameDetected) {
199203
currentParamName.append(currentChar);
200204
} else if (!paramToRedact || reference) {
201-
redactedParameters.append(currentChar);
205+
urlPartAfterQuestionMark.append(currentChar);
202206
}
203207
}
204-
return urlpart.substring(0, questionMarkIndex) + "?" + redactedParameters;
208+
return urlpart.substring(0, questionMarkIndex) + "?" + urlPartAfterQuestionMark;
205209
}
206210

207211
private static boolean containsParamToRedact(String urlpart) {

0 commit comments

Comments
 (0)