apache / apache/pulsar

Java client: cannot configure 'authParams' with PulsarClient.builder().loadConf

Open
#8,509 4 comments 0 reactions 1 assignee Claimed by @hangc0276 View on GitHub
type/bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.