From f2da23a456267a4f17c56e18285b79b1dd0d533a Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Sun, 2 Apr 2023 10:13:38 +0300 Subject: [PATCH] refactoring --- .../java/org/redisson/RedissonStream.java | 6 +- .../api/stream/BaseStreamAddArgs.java | 74 --------------- .../api/stream/BaseStreamTrimArgs.java | 56 ------------ .../api/stream/BaseStreamTrimLimitArgs.java | 43 --------- .../redisson/api/stream/StreamAddArgs.java | 2 +- .../api/stream/StreamAddArgsSource.java | 27 ------ .../redisson/api/stream/StreamAddParams.java | 89 +++++++++++++++++-- .../redisson/api/stream/StreamTrimArgs.java | 6 +- .../api/stream/StreamTrimArgsSource.java | 27 ------ .../redisson/api/stream/StreamTrimParams.java | 53 +++++++---- 10 files changed, 124 insertions(+), 259 deletions(-) delete mode 100644 redisson/src/main/java/org/redisson/api/stream/BaseStreamAddArgs.java delete mode 100644 redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimArgs.java delete mode 100644 redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimLimitArgs.java delete mode 100644 redisson/src/main/java/org/redisson/api/stream/StreamAddArgsSource.java delete mode 100644 redisson/src/main/java/org/redisson/api/stream/StreamTrimArgsSource.java diff --git a/redisson/src/main/java/org/redisson/RedissonStream.java b/redisson/src/main/java/org/redisson/RedissonStream.java index 4a6027f68..e11d9b871 100644 --- a/redisson/src/main/java/org/redisson/RedissonStream.java +++ b/redisson/src/main/java/org/redisson/RedissonStream.java @@ -901,8 +901,7 @@ public class RedissonStream extends RedissonExpirable implements RStream RFuture addCustomAsync(StreamMessageId id, StreamAddArgs args) { - StreamAddArgsSource source = (StreamAddArgsSource) args; - StreamAddParams pps = source.getParams(); + StreamAddParams pps = (StreamAddParams) args; List params = new LinkedList(); params.add(getRawName()); @@ -1379,8 +1378,7 @@ public class RedissonStream extends RedissonExpirable implements RStream trimAsync(StreamTrimArgs args, boolean trimStrict) { - StreamTrimArgsSource source = (StreamTrimArgsSource) args; - StreamTrimParams pps = source.getParams(); + StreamTrimParams pps = (StreamTrimParams) args; List params = new LinkedList<>(); params.add(getRawName()); diff --git a/redisson/src/main/java/org/redisson/api/stream/BaseStreamAddArgs.java b/redisson/src/main/java/org/redisson/api/stream/BaseStreamAddArgs.java deleted file mode 100644 index 788bb4e9f..000000000 --- a/redisson/src/main/java/org/redisson/api/stream/BaseStreamAddArgs.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright (c) 2013-2022 Nikita Koksharov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.redisson.api.stream; - -import java.util.Map; - -/** - * - * @author Nikita Koksharov - * - */ -class BaseStreamAddArgs implements StreamAddArgs, StreamAddArgsSource { - - private final StreamAddParams params; - - BaseStreamAddArgs(Map entries) { - params = new StreamAddParams(entries); - } - - @Override - public StreamAddParams getParams() { - return params; - } - - @Override - public StreamAddArgs noMakeStream() { - params.setNoMakeStream(true); - return this; - } - - @Override - public StreamAddArgs trim(TrimStrategy strategy, int threshold) { - return trim(strategy, threshold, 0); - } - - @Override - public StreamAddArgs trimStrict(TrimStrategy strategy, int threshold) { - params.setMaxLen(threshold); - params.setTrimStrict(true); - return this; - } - - @Override - public StreamAddArgs trim(TrimStrategy strategy, int threshold, int limit) { - params.setMaxLen(threshold); - params.setTrimStrict(false); - params.setLimit(limit); - return this; - } - - @Override - public StreamTrimStrategyArgs> trim() { - params.setTrimStrict(true); - return new BaseStreamTrimArgs<>(params, this); - } - - @Override - public StreamTrimStrategyArgs> trimNonStrict() { - return new BaseStreamTrimArgs<>(params, this); - } -} diff --git a/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimArgs.java b/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimArgs.java deleted file mode 100644 index e21a93620..000000000 --- a/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimArgs.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2013-2022 Nikita Koksharov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.redisson.api.stream; - -import org.redisson.api.StreamMessageId; - -/** - * - * @author Nikita Koksharov - * - */ -class BaseStreamTrimArgs implements StreamTrimStrategyArgs, StreamTrimArgs, StreamTrimArgsSource { - - private final StreamTrimParams params; - private final T args; - - BaseStreamTrimArgs(StreamTrimParams params, T args) { - this.params = params; - this.args = args; - } - - BaseStreamTrimArgs(StreamTrimParams params) { - this.params = params; - this.args = (T) this; - } - - @Override - public StreamTrimLimitArgs maxLen(int threshold) { - params.setMaxLen(threshold); - return new BaseStreamTrimLimitArgs<>(params, args); - } - - @Override - public StreamTrimLimitArgs minId(StreamMessageId messageId) { - params.setMinId(messageId); - return new BaseStreamTrimLimitArgs<>(params, args); - } - - @Override - public StreamTrimParams getParams() { - return params; - } -} diff --git a/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimLimitArgs.java b/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimLimitArgs.java deleted file mode 100644 index bb2ae7a1e..000000000 --- a/redisson/src/main/java/org/redisson/api/stream/BaseStreamTrimLimitArgs.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright (c) 2013-2022 Nikita Koksharov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.redisson.api.stream; - -/** - * - * @author Nikita Koksharov - * - */ -class BaseStreamTrimLimitArgs implements StreamTrimLimitArgs { - - private final StreamTrimParams params; - private final T args; - - BaseStreamTrimLimitArgs(StreamTrimParams params, T args) { - this.params = params; - this.args = args; - } - - @Override - public T noLimit() { - return args; - } - - @Override - public T limit(int size) { - params.setLimit(size); - return args; - } -} diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamAddArgs.java b/redisson/src/main/java/org/redisson/api/stream/StreamAddArgs.java index 1e51b2d7e..2c43b9eb1 100644 --- a/redisson/src/main/java/org/redisson/api/stream/StreamAddArgs.java +++ b/redisson/src/main/java/org/redisson/api/stream/StreamAddArgs.java @@ -181,7 +181,7 @@ public interface StreamAddArgs { * @return arguments object */ static StreamAddArgs entries(Map entries) { - return new BaseStreamAddArgs(entries); + return new StreamAddParams(entries); } } diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamAddArgsSource.java b/redisson/src/main/java/org/redisson/api/stream/StreamAddArgsSource.java deleted file mode 100644 index 2a9dabc61..000000000 --- a/redisson/src/main/java/org/redisson/api/stream/StreamAddArgsSource.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (c) 2013-2022 Nikita Koksharov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.redisson.api.stream; - -/** - * - * @author Nikita Koksharov - * - */ -public interface StreamAddArgsSource { - - StreamAddParams getParams(); - -} diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamAddParams.java b/redisson/src/main/java/org/redisson/api/stream/StreamAddParams.java index 78c87053b..81666fd9a 100644 --- a/redisson/src/main/java/org/redisson/api/stream/StreamAddParams.java +++ b/redisson/src/main/java/org/redisson/api/stream/StreamAddParams.java @@ -15,6 +15,8 @@ */ package org.redisson.api.stream; +import org.redisson.api.StreamMessageId; + import java.util.Map; /** @@ -22,16 +24,84 @@ import java.util.Map; * @author Nikita Koksharov * */ -public class StreamAddParams extends StreamTrimParams { +public class StreamAddParams implements StreamAddArgs, + StreamTrimStrategyArgs>, + StreamTrimLimitArgs> { private Map entries; private boolean noMakeStream; private boolean trimStrict; - public StreamAddParams(Map entries) { + private int maxLen; + private StreamMessageId minId; + private int limit; + + StreamAddParams(Map entries) { this.entries = entries; } + @Override + public StreamAddArgs noMakeStream() { + this.noMakeStream = true; + return this; + } + + @Override + public StreamAddArgs trim(TrimStrategy strategy, int threshold) { + return trim(strategy, threshold, 0); + } + + @Override + public StreamAddArgs trimStrict(TrimStrategy strategy, int threshold) { + this.maxLen = threshold; + this.trimStrict = true; + return this; + } + + @Override + public StreamAddArgs trim(TrimStrategy strategy, int threshold, int limit) { + this.maxLen = threshold; + this.trimStrict = false; + this.limit = limit; + return this; + } + + @Override + public StreamTrimStrategyArgs> trim() { + this.trimStrict = true; + return this; + } + + @Override + public StreamTrimStrategyArgs> trimNonStrict() { + this.trimStrict = false; + return this; + } + + @Override + public StreamTrimLimitArgs> maxLen(int threshold) { + this.maxLen = threshold; + return this; + } + + @Override + public StreamTrimLimitArgs> minId(StreamMessageId messageId) { + this.minId = messageId; + return this; + } + + @Override + public StreamAddArgs noLimit() { + this.limit = 0; + return this; + } + + @Override + public StreamAddArgs limit(int size) { + this.limit = size; + return this; + } + public Map getEntries() { return entries; } @@ -40,16 +110,19 @@ public class StreamAddParams extends StreamTrimParams { return noMakeStream; } - public void setNoMakeStream(boolean noMakeStream) { - this.noMakeStream = noMakeStream; - } - public boolean isTrimStrict() { return trimStrict; } - public void setTrimStrict(boolean trimStrict) { - this.trimStrict = trimStrict; + public int getMaxLen() { + return maxLen; } + public StreamMessageId getMinId() { + return minId; + } + + public int getLimit() { + return limit; + } } diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgs.java b/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgs.java index 6333bcbac..d5ecb3c71 100644 --- a/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgs.java +++ b/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgs.java @@ -33,8 +33,7 @@ public interface StreamTrimArgs { * @return arguments object */ static StreamTrimLimitArgs maxLen(int threshold) { - BaseStreamTrimArgs args = new BaseStreamTrimArgs(new StreamTrimParams()); - return args.maxLen(threshold); + return new StreamTrimParams(threshold); } /** @@ -45,8 +44,7 @@ public interface StreamTrimArgs { * @return arguments object */ static StreamTrimLimitArgs minId(StreamMessageId messageId) { - BaseStreamTrimArgs args = new BaseStreamTrimArgs(new StreamTrimParams()); - return args.minId(messageId); + return new StreamTrimParams(messageId); } } diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgsSource.java b/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgsSource.java deleted file mode 100644 index 092a830e1..000000000 --- a/redisson/src/main/java/org/redisson/api/stream/StreamTrimArgsSource.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (c) 2013-2022 Nikita Koksharov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.redisson.api.stream; - -/** - * - * @author Nikita Koksharov - * - */ -public interface StreamTrimArgsSource { - - StreamTrimParams getParams(); - -} diff --git a/redisson/src/main/java/org/redisson/api/stream/StreamTrimParams.java b/redisson/src/main/java/org/redisson/api/stream/StreamTrimParams.java index 3d99fa308..5afb283a4 100644 --- a/redisson/src/main/java/org/redisson/api/stream/StreamTrimParams.java +++ b/redisson/src/main/java/org/redisson/api/stream/StreamTrimParams.java @@ -22,32 +22,55 @@ import org.redisson.api.StreamMessageId; * @author Nikita Koksharov * */ -public class StreamTrimParams { +public class StreamTrimParams implements StreamTrimStrategyArgs, + StreamTrimArgs, + StreamTrimLimitArgs { - private int maxLen; - private StreamMessageId minId; - private int limit; + int maxLen; + StreamMessageId minId; + int limit; + + StreamTrimParams(int threshold) { + this.maxLen = threshold; + } + + StreamTrimParams(StreamMessageId minId) { + this.minId = minId; + } + + @Override + public StreamTrimLimitArgs maxLen(int threshold) { + this.maxLen = threshold; + return this; + } + + @Override + public StreamTrimLimitArgs minId(StreamMessageId messageId) { + this.minId = messageId; + return this; + } + + @Override + public StreamTrimArgs noLimit() { + this.limit = 0; + return this; + } + + @Override + public StreamTrimArgs limit(int size) { + this.limit = size; + return this; + } public int getMaxLen() { return maxLen; } - public void setMaxLen(int maxLen) { - this.maxLen = maxLen; - } public StreamMessageId getMinId() { return minId; } - public void setMinId(StreamMessageId minId) { - this.minId = minId; - } public int getLimit() { return limit; } - - public void setLimit(int limit) { - this.limit = limit; - } - }