Skip to content

Commit

Permalink
Fixed - Redisson config should be read at runtime in Quarkus environm…
Browse files Browse the repository at this point in the history
…ent. #3943 #3861
  • Loading branch information
Nikita Koksharov committed Jan 20, 2022
1 parent f31d4bb commit 5a9596f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,8 @@
import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
import io.quarkus.redisson.client.runtime.RedissonClientProducer;
import io.quarkus.redisson.client.runtime.RedissonClientRecorder;
import io.quarkus.runtime.Quarkus;
import org.eclipse.microprofile.config.ConfigProvider;
import org.redisson.config.PropertiesConvertor;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Optional;

/**
*
Expand Down Expand Up @@ -88,24 +82,7 @@ void addConfig(BuildProducer<NativeImageResourceBuildItem> nativeResources,
@BuildStep
@Record(ExecutionTime.RUNTIME_INIT)
RedissonClientItemBuild build(RedissonClientRecorder recorder) throws IOException {
InputStream configStream;
Optional<String> configFile = ConfigProvider.getConfig().getOptionalValue("quarkus.redisson.file", String.class);
if (configFile.isPresent()) {
configStream = getClass().getResourceAsStream(configFile.get());
} else {
configStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("redisson.yaml");
}
if (configStream != null) {
byte[] array = new byte[configStream.available()];
configStream.read(array);
recorder.configureRedisson(new String(array, StandardCharsets.UTF_8));
} else {
String yaml = PropertiesConvertor.toYaml("quarkus.redisson.", ConfigProvider.getConfig().getPropertyNames(), prop -> {
return ConfigProvider.getConfig().getValue(prop, String.class);
});
recorder.configureRedisson(yaml);
}

recorder.createProducer();
return new RedissonClientItemBuild();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,20 @@
package io.quarkus.redisson.client.runtime;

import io.quarkus.arc.DefaultBean;
import org.eclipse.microprofile.config.ConfigProvider;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.PropertiesConvertor;

import javax.annotation.PreDestroy;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Singleton;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Optional;

/**
*
Expand All @@ -34,24 +39,38 @@
@ApplicationScoped
public class RedissonClientProducer {

private String config;
private RedissonClient redisson;

@Produces
@Singleton
@DefaultBean
public RedissonClient create() throws IOException {
if (config != null){
Config c = Config.fromYAML(config);
redisson = Redisson.create(c);
InputStream configStream;
Optional<String> configFile = ConfigProvider.getConfig().getOptionalValue("quarkus.redisson.file", String.class);
if (configFile.isPresent()) {
configStream = getClass().getResourceAsStream(configFile.get());
} else {
redisson = Redisson.create();
configStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("redisson.yaml");
}
String config;
if (configStream != null) {
byte[] array = new byte[configStream.available()];
configStream.read(array);
config = new String(array, StandardCharsets.UTF_8);
} else {
String yaml = PropertiesConvertor.toYaml("quarkus.redisson.", ConfigProvider.getConfig().getPropertyNames(), prop -> {
return ConfigProvider.getConfig().getValue(prop, String.class);
});
config = yaml;
}

Config c = Config.fromYAML(config);
redisson = Redisson.create(c);
return redisson;
}

public void setConfig(String config) {
this.config = config;
public void setConfig(org.eclipse.microprofile.config.Config config) {

}

@PreDestroy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@
@Recorder
public class RedissonClientRecorder {

public void configureRedisson(String config) {
RedissonClientProducer producer = Arc.container().instance(RedissonClientProducer.class).get();
producer.setConfig(config);
public void createProducer() {
Arc.container().instance(RedissonClientProducer.class).get();
}

}

0 comments on commit 5a9596f

Please sign in to comment.