
org.jnosql.diana.redis.key.DefaultRedisBucketManagerFactory Maven / Gradle / Ivy
/*
* Copyright (c) 2017 Otávio Santana and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Apache License v2.0 is available at http://www.opensource.org/licenses/apache2.0.php.
*
* You may elect to redistribute this code under either of these licenses.
*
* Contributors:
*
* Otavio Santana
*/
package org.jnosql.diana.redis.key;
import redis.clients.jedis.JedisPool;
import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import static java.util.Objects.requireNonNull;
class DefaultRedisBucketManagerFactory implements RedisBucketManagerFactory {
private static final Jsonb JSON = JsonbBuilder.create();
private final JedisPool jedisPool;
DefaultRedisBucketManagerFactory(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
@Override
public RedisBucketManager getBucketManager(String bucketName) {
requireNonNull(bucketName, "bucket name is required");
return new RedisBucketManager(bucketName, JSON, jedisPool.getResource());
}
@Override
public List getList(String bucketName, Class clazz) {
requireNonNull(bucketName, "bucket name is required");
requireNonNull(clazz, "Class type is required");
return new RedisList<>(jedisPool.getResource(), clazz, bucketName);
}
@Override
public Set getSet(String bucketName, Class clazz) {
requireNonNull(bucketName, "bucket name is required");
requireNonNull(clazz, "Class type is required");
return new RedisSet<>(jedisPool.getResource(), clazz, bucketName);
}
@Override
public Queue getQueue(String bucketName, Class clazz) {
requireNonNull(bucketName, "bucket name is required");
requireNonNull(clazz, "Class type is required");
return new RedisQueue<>(jedisPool.getResource(), clazz, bucketName);
}
@Override
public Map getMap(String bucketName, Class keyValue, Class valueValue) {
requireNonNull(bucketName, "bucket name is required");
requireNonNull(valueValue, "Class type is required");
return new RedisMap<>(jedisPool.getResource(), keyValue, valueValue, bucketName);
}
@Override
public SortedSet getSortedSet(String key) throws NullPointerException {
requireNonNull(key, "key is required");
return new DefaultSortedSet(jedisPool.getResource(), key);
}
@Override
public Counter getCounter(String key) throws NullPointerException {
requireNonNull(key, "key is required");
return new DefaultCounter(key, jedisPool.getResource());
}
@Override
public void close() {
jedisPool.close();
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("RedisBucketManagerFactory{");
sb.append("jedisPool=").append(jedisPool);
sb.append('}');
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy