diff --git a/handler/src/main/java/io/netty/handler/timeout/IdleStateEvent.java b/handler/src/main/java/io/netty/handler/timeout/IdleStateEvent.java index bb476e7a9a..6617daa834 100644 --- a/handler/src/main/java/io/netty/handler/timeout/IdleStateEvent.java +++ b/handler/src/main/java/io/netty/handler/timeout/IdleStateEvent.java @@ -19,6 +19,8 @@ import static java.util.Objects.requireNonNull; import io.netty.channel.Channel; +import io.netty.util.internal.StringUtil; + /** * A user event triggered by {@link IdleStateHandler} when a {@link Channel} is idle. */ @@ -32,6 +34,7 @@ public class IdleStateEvent { private final IdleState state; private final boolean first; + private String strVal; /** * Constructor for sub-classes. @@ -57,4 +60,12 @@ public class IdleStateEvent { public boolean isFirst() { return first; } + + @Override + public String toString() { + if (strVal == null) { + strVal = StringUtil.simpleClassName(this) + "(" + state + (first ? ", first" : "") + ')'; + } + return strVal; + } } diff --git a/handler/src/test/java/io/netty/handler/timeout/IdleStateEventTest.java b/handler/src/test/java/io/netty/handler/timeout/IdleStateEventTest.java new file mode 100644 index 0000000000..5e2d25e0ed --- /dev/null +++ b/handler/src/test/java/io/netty/handler/timeout/IdleStateEventTest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2019 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.timeout; + +import org.junit.Test; + +import static io.netty.handler.timeout.IdleStateEvent.*; +import static org.hamcrest.Matchers.hasToString; +import static org.junit.Assert.*; + +public class IdleStateEventTest { + @Test + public void testHumanReadableToString() { + assertThat(FIRST_READER_IDLE_STATE_EVENT, hasToString("IdleStateEvent(READER_IDLE, first)")); + assertThat(READER_IDLE_STATE_EVENT, hasToString("IdleStateEvent(READER_IDLE)")); + assertThat(FIRST_WRITER_IDLE_STATE_EVENT, hasToString("IdleStateEvent(WRITER_IDLE, first)")); + assertThat(WRITER_IDLE_STATE_EVENT, hasToString("IdleStateEvent(WRITER_IDLE)")); + assertThat(FIRST_ALL_IDLE_STATE_EVENT, hasToString("IdleStateEvent(ALL_IDLE, first)")); + assertThat(ALL_IDLE_STATE_EVENT, hasToString("IdleStateEvent(ALL_IDLE)")); + } +}