Java client: cannot configure 'authParams' with PulsarClient.builder().loadConf
- Dominant language
- Java
- Stars
- 15.3k
- Forks
- 3.8k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 142
Description
`ClientBuilder loadConf(Map config)` does not support `authParams` nor `authParamMap` anymore.
Most likely this was broken by #8110
**Possible fix:**
Add annotation:
```java
@Target({ ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = SecretsSerializer.class)
public @interface Secret {
}
```
Serializer:
```java
public class SecretsSerializer extends JsonSerializer {
@Override
public void serialize(final Object value, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
if (value == null) {
serializerProvider.defaultSerializeNull(jsonGenerator);
return;
}
Object output = serializerProvider.getActiveView() == Views.Internal.class ? value : "*****";
jsonGenerator.writeObject(output);
}
}
```
And view:
```java
public interface Views {
interface Internal {
}
}
```
Then in `ClientConfigurationData`
```java
@Secret
private String authParams;
@Secret
private Map authParamMap;
```
and in `ConfigurationDataUtils.loadData`
```java
mapper.writerWithView(Views.Internal.class).writeValueAsString ...
```
**Version**: 2.6.2
Contributor guide
Assessment
This issue has not been assessed yet.