From b9d3d77bc645e219782ca3946ba878108d363e30 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Mon, 6 Dec 2010 11:55:52 +0200 Subject: [PATCH] DATAKV-12 + RedisList implements BlockingDeque --- .../keyvalue/redis/util/DefaultRedisList.java | 46 +++++++++++++++++++ .../data/keyvalue/redis/util/RedisList.java | 4 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/DefaultRedisList.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/DefaultRedisList.java index 1de20d3e3..773626536 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/DefaultRedisList.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/DefaultRedisList.java @@ -447,4 +447,50 @@ public class DefaultRedisList extends AbstractRedisCollection implements R public E take() throws InterruptedException { return poll(0, TimeUnit.SECONDS); } + + + // + // BlockingDeque + // + + @Override + public boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException { + return offerFirst(e); + } + + @Override + public boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException { + return offerLast(e); + } + + @Override + public E pollFirst(long timeout, TimeUnit unit) throws InterruptedException { + return poll(timeout, unit); + } + + @Override + public E pollLast(long timeout, TimeUnit unit) throws InterruptedException { + E element = listOps.rightPop(timeout, unit); + return (element == null ? null : element); + } + + @Override + public void putFirst(E e) throws InterruptedException { + add(e); + } + + @Override + public void putLast(E e) throws InterruptedException { + put(e); + } + + @Override + public E takeFirst() throws InterruptedException { + return take(); + } + + @Override + public E takeLast() throws InterruptedException { + return pollLast(0, TimeUnit.SECONDS); + } } \ No newline at end of file diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/RedisList.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/RedisList.java index f68cc441e..41393fdcc 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/RedisList.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/util/RedisList.java @@ -15,9 +15,9 @@ */ package org.springframework.data.keyvalue.redis.util; -import java.util.Deque; import java.util.List; import java.util.Queue; +import java.util.concurrent.BlockingDeque; /** * Redis extension for the {@link List} contract. Supports {@link List} and {@link Queue} specific @@ -25,7 +25,7 @@ import java.util.Queue; * * @author Costin Leau */ -public interface RedisList extends RedisStore, List, Deque { +public interface RedisList extends RedisStore, List, BlockingDeque { List range(long start, long end);