Refactoring

pull/243/head
Nikita 10 years ago
parent 88241cbcea
commit 6dcbf7c780

@ -16,6 +16,7 @@
package org.redisson.client.handler;
import org.redisson.client.protocol.Encoder;
import org.redisson.client.protocol.StringParamsEncoder;
import org.redisson.client.protocol.RedisCommand.ValueType;
import io.netty.buffer.ByteBuf;
@ -25,6 +26,8 @@ import io.netty.util.CharsetUtil;
public class RedisEncoder extends MessageToByteEncoder<RedisData<Object, Object>> {
private final Encoder paramsEncoder = new StringParamsEncoder();
final char ARGS_PREFIX = '*';
final char BYTES_PREFIX = '$';
final byte[] CRLF = "\r\n".getBytes();
@ -45,7 +48,7 @@ public class RedisEncoder extends MessageToByteEncoder<RedisData<Object, Object>
}
int i = 1;
for (Object param : msg.getParams()) {
Encoder encoder = msg.getCommand().getParamsEncoder();
Encoder encoder = paramsEncoder;
if (msg.getCommand().getInParamType().size() == 1) {
if (msg.getCommand().getInParamIndex() == i && msg.getCommand().getInParamType().get(0) == ValueType.OBJECT) {
encoder = msg.getCodec().getValueEncoder();

@ -1,74 +0,0 @@
/**
* Copyright 2014 Nikita Koksharov, Nickolay Borbit
*
* 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.client.protocol;
import java.io.UnsupportedEncodingException;
import io.netty.buffer.ByteBuf;
import io.netty.util.CharsetUtil;
public class IntegerCodec implements Codec {
public static final IntegerCodec INSTANCE = new IntegerCodec();
@Override
public Decoder<Object> getValueDecoder() {
return new Decoder<Object>() {
@Override
public Object decode(ByteBuf buf) {
if (buf == null) {
return null;
}
return Integer.valueOf(buf.toString(CharsetUtil.UTF_8));
}
};
}
@Override
public Encoder getValueEncoder() {
return new Encoder() {
@Override
public byte[] encode(int paramIndex, Object in) {
try {
return in.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
}
};
}
@Override
public Decoder<Object> getMapValueDecoder() {
return getValueDecoder();
}
@Override
public Encoder getMapValueEncoder() {
return getValueEncoder();
}
@Override
public Decoder<Object> getMapKeyDecoder() {
return getValueDecoder();
}
@Override
public Encoder getMapKeyEncoder() {
return getValueEncoder();
}
}

@ -31,7 +31,6 @@ public class RedisCommand<R> {
private final String name;
private final String subName;
private Encoder paramsEncoder = new StringParamsEncoder();
private MultiDecoder<R> replayMultiDecoder;
private Decoder<R> replayDecoder;
private Convertor<R> convertor = new EmptyConvertor<R>();
@ -172,10 +171,6 @@ public class RedisCommand<R> {
return convertor;
}
public Encoder getParamsEncoder() {
return paramsEncoder;
}
public List<ValueType> getInParamType() {
return inParamType;
}

@ -1,82 +0,0 @@
/**
* Copyright 2014 Nikita Koksharov, Nickolay Borbit
*
* 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.client.protocol;
import java.io.UnsupportedEncodingException;
import io.netty.buffer.ByteBuf;
import io.netty.util.CharsetUtil;
public class StringIntegerCodec implements Codec {
public static final StringIntegerCodec INSTANCE = new StringIntegerCodec();
@Override
public Decoder<Object> getValueDecoder() {
return new Decoder<Object>() {
@Override
public Object decode(ByteBuf buf) {
if (buf == null) {
return null;
}
return buf.toString(CharsetUtil.UTF_8);
}
};
}
@Override
public Encoder getValueEncoder() {
return new Encoder() {
@Override
public byte[] encode(int paramIndex, Object in) {
try {
return in.toString().getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
}
};
}
@Override
public Decoder<Object> getMapValueDecoder() {
return new Decoder<Object>() {
@Override
public Object decode(ByteBuf buf) {
if (buf == null) {
return null;
}
return Integer.valueOf(buf.toString(CharsetUtil.UTF_8));
}
};
}
@Override
public Encoder getMapValueEncoder() {
return getValueEncoder();
}
@Override
public Decoder<Object> getMapKeyDecoder() {
return getValueDecoder();
}
@Override
public Encoder getMapKeyEncoder() {
return getValueEncoder();
}
}
Loading…
Cancel
Save