Add 'toString' method into IdleStateEvent (#9695)
### Motivation: IdleStateEvent is very convenient and frequently used type of events. However both in runtime (logs) and in debug you need some manual steps to see their actual content. Default implementation generates worthless trash like this: io.netty.handler.timeout.IdleStateEvent@27f674d There are examples already, where event has convenient and useful toString implementation: * io.netty.handler.proxy.ProxyConnectionEvent * io.netty.handler.ssl.SslCompletionEvent ### Modification: * Implement 'IdleStateEvent.toString' method. * Unit test. ### Result: More useful String representation of IdleStateEvent
This commit is contained in:
parent
8674ccfcd2
commit
a77fe9333d
@ -17,6 +17,7 @@ package io.netty.handler.timeout;
|
|||||||
|
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import io.netty.util.internal.ObjectUtil;
|
import io.netty.util.internal.ObjectUtil;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A user event triggered by {@link IdleStateHandler} when a {@link Channel} is idle.
|
* A user event triggered by {@link IdleStateHandler} when a {@link Channel} is idle.
|
||||||
@ -31,6 +32,7 @@ public class IdleStateEvent {
|
|||||||
|
|
||||||
private final IdleState state;
|
private final IdleState state;
|
||||||
private final boolean first;
|
private final boolean first;
|
||||||
|
private String strVal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for sub-classes.
|
* Constructor for sub-classes.
|
||||||
@ -56,4 +58,12 @@ public class IdleStateEvent {
|
|||||||
public boolean isFirst() {
|
public boolean isFirst() {
|
||||||
return first;
|
return first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
if (strVal == null) {
|
||||||
|
strVal = StringUtil.simpleClassName(this) + "(" + state + (first ? ", first" : "") + ')';
|
||||||
|
}
|
||||||
|
return strVal;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)"));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user