@@ -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