@@ -219,15 +219,15 @@ private Object convertMapsToArrays(Map<String, Object> map) {
219
219
*/
220
220
public Settings getByPrefix (String prefix ) {
221
221
return new Settings (new FilteredMap (this .settings , (k ) -> k .startsWith (prefix ), prefix ), secureSettings == null ? null :
222
- new PrefixedSecureSettings (secureSettings , s -> prefix + s , s -> s .startsWith (prefix )));
222
+ new PrefixedSecureSettings (secureSettings , prefix , s -> s .startsWith (prefix )));
223
223
}
224
224
225
225
/**
226
226
* Returns a new settings object that contains all setting of the current one filtered by the given settings key predicate.
227
227
*/
228
228
public Settings filter (Predicate <String > predicate ) {
229
229
return new Settings (new FilteredMap (this .settings , predicate , null ), secureSettings == null ? null :
230
- new PrefixedSecureSettings (secureSettings , UnaryOperator . identity () , predicate ));
230
+ new PrefixedSecureSettings (secureSettings , "" , predicate ));
231
231
}
232
232
233
233
/**
@@ -1257,13 +1257,15 @@ public int size() {
1257
1257
1258
1258
private static class PrefixedSecureSettings implements SecureSettings {
1259
1259
private final SecureSettings delegate ;
1260
- private final UnaryOperator <String > keyTransform ;
1260
+ private final UnaryOperator <String > addPrefix ;
1261
+ private final UnaryOperator <String > removePrefix ;
1261
1262
private final Predicate <String > keyPredicate ;
1262
1263
private final SetOnce <Set <String >> settingNames = new SetOnce <>();
1263
1264
1264
- PrefixedSecureSettings (SecureSettings delegate , UnaryOperator < String > keyTransform , Predicate <String > keyPredicate ) {
1265
+ PrefixedSecureSettings (SecureSettings delegate , String prefix , Predicate <String > keyPredicate ) {
1265
1266
this .delegate = delegate ;
1266
- this .keyTransform = keyTransform ;
1267
+ this .addPrefix = s -> prefix + s ;
1268
+ this .removePrefix = s -> s .substring (prefix .length ());
1267
1269
this .keyPredicate = keyPredicate ;
1268
1270
}
1269
1271
@@ -1276,7 +1278,8 @@ public boolean isLoaded() {
1276
1278
public Set <String > getSettingNames () {
1277
1279
synchronized (settingNames ) {
1278
1280
if (settingNames .get () == null ) {
1279
- Set <String > names = delegate .getSettingNames ().stream ().filter (keyPredicate ).collect (Collectors .toSet ());
1281
+ Set <String > names = delegate .getSettingNames ().stream ()
1282
+ .filter (keyPredicate ).map (removePrefix ).collect (Collectors .toSet ());
1280
1283
settingNames .set (Collections .unmodifiableSet (names ));
1281
1284
}
1282
1285
}
@@ -1285,12 +1288,12 @@ public Set<String> getSettingNames() {
1285
1288
1286
1289
@ Override
1287
1290
public SecureString getString (String setting ) throws GeneralSecurityException {
1288
- return delegate .getString (keyTransform .apply (setting ));
1291
+ return delegate .getString (addPrefix .apply (setting ));
1289
1292
}
1290
1293
1291
1294
@ Override
1292
1295
public InputStream getFile (String setting ) throws GeneralSecurityException {
1293
- return delegate .getFile (keyTransform .apply (setting ));
1296
+ return delegate .getFile (addPrefix .apply (setting ));
1294
1297
}
1295
1298
1296
1299
@ Override
0 commit comments