refactoring

pull/2459/merge
Nikita Koksharov 2 years ago
parent 2a8711e8d2
commit f2da23a456

@ -901,8 +901,7 @@ public class RedissonStream<K, V> extends RedissonExpirable implements RStream<K
}
public <R> RFuture<R> addCustomAsync(StreamMessageId id, StreamAddArgs<K, V> args) {
StreamAddArgsSource<K, V> source = (StreamAddArgsSource<K, V>) args;
StreamAddParams<K, V> pps = source.getParams();
StreamAddParams<K, V> pps = (StreamAddParams<K, V>) args;
List<Object> params = new LinkedList<Object>();
params.add(getRawName());
@ -1379,8 +1378,7 @@ public class RedissonStream<K, V> extends RedissonExpirable implements RStream<K
}
private RFuture<Long> trimAsync(StreamTrimArgs args, boolean trimStrict) {
StreamTrimArgsSource source = (StreamTrimArgsSource) args;
StreamTrimParams pps = source.getParams();
StreamTrimParams pps = (StreamTrimParams) args;
List<Object> params = new LinkedList<>();
params.add(getRawName());

@ -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<K, V> implements StreamAddArgs<K, V>, StreamAddArgsSource<K, V> {
private final StreamAddParams<K, V> params;
BaseStreamAddArgs(Map<K, V> entries) {
params = new StreamAddParams<K, V>(entries);
}
@Override
public StreamAddParams<K, V> getParams() {
return params;
}
@Override
public StreamAddArgs<K, V> noMakeStream() {
params.setNoMakeStream(true);
return this;
}
@Override
public StreamAddArgs<K, V> trim(TrimStrategy strategy, int threshold) {
return trim(strategy, threshold, 0);
}
@Override
public StreamAddArgs<K, V> trimStrict(TrimStrategy strategy, int threshold) {
params.setMaxLen(threshold);
params.setTrimStrict(true);
return this;
}
@Override
public StreamAddArgs<K, V> trim(TrimStrategy strategy, int threshold, int limit) {
params.setMaxLen(threshold);
params.setTrimStrict(false);
params.setLimit(limit);
return this;
}
@Override
public StreamTrimStrategyArgs<StreamAddArgs<K, V>> trim() {
params.setTrimStrict(true);
return new BaseStreamTrimArgs<>(params, this);
}
@Override
public StreamTrimStrategyArgs<StreamAddArgs<K, V>> trimNonStrict() {
return new BaseStreamTrimArgs<>(params, this);
}
}

@ -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<T> implements StreamTrimStrategyArgs<T>, 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<T> maxLen(int threshold) {
params.setMaxLen(threshold);
return new BaseStreamTrimLimitArgs<>(params, args);
}
@Override
public StreamTrimLimitArgs<T> minId(StreamMessageId messageId) {
params.setMinId(messageId);
return new BaseStreamTrimLimitArgs<>(params, args);
}
@Override
public StreamTrimParams getParams() {
return params;
}
}

@ -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<T> implements StreamTrimLimitArgs<T> {
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;
}
}

@ -181,7 +181,7 @@ public interface StreamAddArgs<K, V> {
* @return arguments object
*/
static <K, V> StreamAddArgs<K, V> entries(Map<K, V> entries) {
return new BaseStreamAddArgs<K, V>(entries);
return new StreamAddParams<K, V>(entries);
}
}

@ -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<K, V> {
StreamAddParams<K, V> getParams();
}

@ -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<K, V> extends StreamTrimParams {
public class StreamAddParams<K, V> implements StreamAddArgs<K, V>,
StreamTrimStrategyArgs<StreamAddArgs<K, V>>,
StreamTrimLimitArgs<StreamAddArgs<K, V>> {
private Map<K, V> entries;
private boolean noMakeStream;
private boolean trimStrict;
public StreamAddParams(Map<K, V> entries) {
private int maxLen;
private StreamMessageId minId;
private int limit;
StreamAddParams(Map<K, V> entries) {
this.entries = entries;
}
@Override
public StreamAddArgs<K, V> noMakeStream() {
this.noMakeStream = true;
return this;
}
@Override
public StreamAddArgs<K, V> trim(TrimStrategy strategy, int threshold) {
return trim(strategy, threshold, 0);
}
@Override
public StreamAddArgs<K, V> trimStrict(TrimStrategy strategy, int threshold) {
this.maxLen = threshold;
this.trimStrict = true;
return this;
}
@Override
public StreamAddArgs<K, V> trim(TrimStrategy strategy, int threshold, int limit) {
this.maxLen = threshold;
this.trimStrict = false;
this.limit = limit;
return this;
}
@Override
public StreamTrimStrategyArgs<StreamAddArgs<K, V>> trim() {
this.trimStrict = true;
return this;
}
@Override
public StreamTrimStrategyArgs<StreamAddArgs<K, V>> trimNonStrict() {
this.trimStrict = false;
return this;
}
@Override
public StreamTrimLimitArgs<StreamAddArgs<K, V>> maxLen(int threshold) {
this.maxLen = threshold;
return this;
}
@Override
public StreamTrimLimitArgs<StreamAddArgs<K, V>> minId(StreamMessageId messageId) {
this.minId = messageId;
return this;
}
@Override
public StreamAddArgs<K, V> noLimit() {
this.limit = 0;
return this;
}
@Override
public StreamAddArgs<K, V> limit(int size) {
this.limit = size;
return this;
}
public Map<K, V> getEntries() {
return entries;
}
@ -40,16 +110,19 @@ public class StreamAddParams<K, V> 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;
}
}

@ -33,8 +33,7 @@ public interface StreamTrimArgs {
* @return arguments object
*/
static StreamTrimLimitArgs<StreamTrimArgs> maxLen(int threshold) {
BaseStreamTrimArgs<StreamTrimArgs> 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<StreamTrimArgs> minId(StreamMessageId messageId) {
BaseStreamTrimArgs<StreamTrimArgs> args = new BaseStreamTrimArgs(new StreamTrimParams());
return args.minId(messageId);
return new StreamTrimParams(messageId);
}
}

@ -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();
}

@ -22,32 +22,55 @@ import org.redisson.api.StreamMessageId;
* @author Nikita Koksharov
*
*/
public class StreamTrimParams {
public class StreamTrimParams implements StreamTrimStrategyArgs<StreamTrimArgs>,
StreamTrimArgs,
StreamTrimLimitArgs<StreamTrimArgs> {
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<StreamTrimArgs> maxLen(int threshold) {
this.maxLen = threshold;
return this;
}
@Override
public StreamTrimLimitArgs<StreamTrimArgs> 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;
}
}

Loading…
Cancel
Save