From 7baf5895f8ad0157a2e7dd1fd1c89bc2c15ccffe Mon Sep 17 00:00:00 2001 From: "Edward M. Kagan" Date: Thu, 1 Oct 2020 03:08:39 +0300 Subject: [PATCH] Added support for password protected redis server --- .../pagan/quarkus/jedis/JedisProccessor.java | 48 +++++++++++-------- .../org/pagan/quarkus/jedis/JedisConfig.java | 12 +++-- .../pagan/quarkus/jedis/JedisRecorder.java | 2 +- .../org/pagan/quarkus/jedis/JedisSupport.java | 34 ++++++++----- 4 files changed, 60 insertions(+), 36 deletions(-) diff --git a/jedis/deployment/src/main/java/org/pagan/quarkus/jedis/JedisProccessor.java b/jedis/deployment/src/main/java/org/pagan/quarkus/jedis/JedisProccessor.java index b5fb652..f0237c0 100644 --- a/jedis/deployment/src/main/java/org/pagan/quarkus/jedis/JedisProccessor.java +++ b/jedis/deployment/src/main/java/org/pagan/quarkus/jedis/JedisProccessor.java @@ -15,7 +15,7 @@ import io.quarkus.deployment.builditem.ShutdownContextBuildItem; * @author Edward M. Kagan */ public class JedisProccessor { - + private JedisConfig config; @BuildStep @@ -29,30 +29,36 @@ public class JedisProccessor { System.out.println("JedisProccessor - beans"); return AdditionalBeanBuildItem.unremovableOf(JedisSupport.class); } - + @Record(ExecutionTime.RUNTIME_INIT) @BuildStep - void build(JedisRecorder recorder, BuildProducer serviceStart, BeanContainerBuildItem beanContainer, ShutdownContextBuildItem shutdownContext) { + void build(JedisRecorder recorder, BuildProducer serviceStart, + BeanContainerBuildItem beanContainer, ShutdownContextBuildItem shutdownContext) { System.out.println("JedisProccessor - build"); -// BuildProducer reflectiveClassBuildItemBuildProducer) { -// reflectiveClassBuildItemBuildProducer.produce(new ReflectiveClassBuildItem(false, false, BaseGenericObjectPool.class.getName())); -// reflectiveClassBuildItemBuildProducer.produce(new ReflectiveClassBuildItem(false, false, DefaultEvictionPolicy.class.getName())); + // BuildProducer + // reflectiveClassBuildItemBuildProducer) { + // reflectiveClassBuildItemBuildProducer.produce(new + // ReflectiveClassBuildItem(false, false, + // BaseGenericObjectPool.class.getName())); + // reflectiveClassBuildItemBuildProducer.produce(new + // ReflectiveClassBuildItem(false, false, + // DefaultEvictionPolicy.class.getName())); recorder.initialize(config, beanContainer.getValue(), shutdownContext); serviceStart.produce(new ServiceStartBuildItem("jedis")); } - - // @BuildStep -// SubstrateProxyDefinitionBuildItem httpProxies() { -// return new SubstrateProxyDefinitionBuildItem(MBeanServer.class.getName(), -// MBeanServerConnection.class.getName(), -// KeyedObjectPool.class.getName(), -// KeyedPooledObjectFactory.class.getName(), -// ObjectPool.class.getName(), -// PooledObject.class.getName(), -// PooledObjectFactory.class.getName(), -// SwallowedExceptionListener.class.getName(), -// TrackedUse.class.getName(), -// UsageTracking.class.getName()); -// } - + + // @BuildStep + // SubstrateProxyDefinitionBuildItem httpProxies() { + // return new SubstrateProxyDefinitionBuildItem(MBeanServer.class.getName(), + // MBeanServerConnection.class.getName(), + // KeyedObjectPool.class.getName(), + // KeyedPooledObjectFactory.class.getName(), + // ObjectPool.class.getName(), + // PooledObject.class.getName(), + // PooledObjectFactory.class.getName(), + // SwallowedExceptionListener.class.getName(), + // TrackedUse.class.getName(), + // UsageTracking.class.getName()); + // } + } diff --git a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisConfig.java b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisConfig.java index 21b6b82..6bdfceb 100644 --- a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisConfig.java +++ b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisConfig.java @@ -10,7 +10,7 @@ import io.quarkus.runtime.annotations.ConfigRoot; */ @ConfigRoot(name = "jedis", phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED) public class JedisConfig { - + /** * Comma-separated list of Redis-shards, with port number obviously */ @@ -28,11 +28,17 @@ public class JedisConfig { */ @ConfigItem(defaultValue = "50") public long maxWait; - + /** * Will Jedis log activity */ @ConfigItem(defaultValue = "true") public boolean log; - + + /** + * Cluster access password + */ + @ConfigItem(defaultValue = "") + public String password; + } diff --git a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisRecorder.java b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisRecorder.java index 51aac17..ceb8d07 100644 --- a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisRecorder.java +++ b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisRecorder.java @@ -13,4 +13,4 @@ public class JedisRecorder { shutdownContext.addShutdownTask(() -> support.shutdown()); } -} +} diff --git a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisSupport.java b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisSupport.java index 8699acc..71b5899 100644 --- a/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisSupport.java +++ b/jedis/runtime/src/main/java/org/pagan/quarkus/jedis/JedisSupport.java @@ -10,6 +10,7 @@ import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.ShardedJedisPool; import redis.clients.jedis.Jedis; +import redis.clients.jedis.Protocol; import redis.clients.jedis.ShardedJedis; /** @@ -31,29 +32,40 @@ public class JedisSupport { poolConfig.setTestOnBorrow(true); poolConfig.setMaxWaitMillis(config.maxWait); poolConfig.setMaxTotal(config.poolMax); -// poolConfig.setJmxEnabled(false); + // poolConfig.setJmxEnabled(false); poolConfig.setJmxEnabled(true); if (config.shards.contains(",")) { List jedisShards = Arrays.stream(config.shards.split(",")).map(uri -> { - return new JedisShardInfo(URI.create(uri)); + JedisShardInfo jedisShardInfo = new JedisShardInfo(URI.create(uri)); + if (config.password.length() > 0) { + jedisShardInfo.setPassword(config.password); + } + return jedisShardInfo; }).collect(Collectors.toList()); this.shardedJedisPool = new ShardedJedisPool(poolConfig, jedisShards); - + } else { - this.jedisPool = new JedisPool(poolConfig, URI.create(config.shards)); + URI server = URI.create(config.shards); + if (config.password.length() > 0) { + this.jedisPool = new JedisPool(poolConfig, server.getHost(), server.getPort(), Protocol.DEFAULT_TIMEOUT, + config.password); + } else { + this.jedisPool = new JedisPool(poolConfig, server); + } + } } - - public ShardedJedis sharedContext () { + + public ShardedJedis sharedContext() { return shardedJedisPool.getResource(); } - - public Jedis context () { + + public Jedis context() { return jedisPool.getResource(); } - + public void shutdown() { -// redisRuntime.shutdown(); + // redisRuntime.shutdown(); } - + }