Move duplicated code into CodecUtil

Motivation:

We have some duplicated code that can be reused.

Modifications:

Create package private class called CodecUtil that now contains the shared code / helper method.

Result:

Less code-duplication
This commit is contained in:
Norman Maurer 2014-08-25 07:36:03 +02:00
parent fbf8533759
commit b201877734
3 changed files with 35 additions and 11 deletions

View File

@ -70,7 +70,7 @@ public abstract class ByteToMessageCodec<I> extends ChannelDuplexHandler {
* {@link ByteBuf}, which is backed by an byte array.
*/
protected ByteToMessageCodec(boolean preferDirect) {
checkForSharableAnnotation();
CodecUtil.ensureNotSharable(this);
outboundMsgMatcher = TypeParameterMatcher.find(this, ByteToMessageCodec.class, "I");
encoder = new Encoder(preferDirect);
}
@ -84,17 +84,11 @@ public abstract class ByteToMessageCodec<I> extends ChannelDuplexHandler {
* {@link ByteBuf}, which is backed by an byte array.
*/
protected ByteToMessageCodec(Class<? extends I> outboundMessageType, boolean preferDirect) {
checkForSharableAnnotation();
CodecUtil.ensureNotSharable(this);
outboundMsgMatcher = TypeParameterMatcher.get(outboundMessageType);
encoder = new Encoder(preferDirect);
}
private void checkForSharableAnnotation() {
if (isSharable()) {
throw new IllegalStateException("@Sharable annotation is not allowed");
}
}
/**
* Returns {@code true} if and only if the specified message can be encoded by this codec.
*

View File

@ -52,9 +52,7 @@ public abstract class ByteToMessageDecoder extends ChannelInboundHandlerAdapter
private boolean first;
protected ByteToMessageDecoder() {
if (isSharable()) {
throw new IllegalStateException("@Sharable annotation is not allowed");
}
CodecUtil.ensureNotSharable(this);
}
/**

View File

@ -0,0 +1,32 @@
/*
* Copyright 2014 The Netty Project
*
* The Netty Project licenses this file to you 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 io.netty.handler.codec;
import io.netty.channel.ChannelHandlerAdapter;
final class CodecUtil {
/**
* Throws {@link IllegalStateException} if {@link ChannelHandlerAdapter#isSharable()} returns {@code true}
*/
static void ensureNotSharable(ChannelHandlerAdapter handler) {
if (handler.isSharable()) {
throw new IllegalStateException("@Sharable annotation is not allowed");
}
}
private CodecUtil() { }
}