Hi Jeff,
Do we need to remove the final modifier if we are going to provide
setters? And assuming you are using DummySession as a mock object,
I'd suggest making AbstractIoSession.setScheduled...(...) protected
and make them public in DummySession. WDYT?
Cheers,
Trustin
On Dec 28, 2007 8:19 AM, Jeff Genender <[EMAIL PROTECTED]> wrote:
> Trustin (and others)...so how about these changes and additions to the
> AbstractIoSession? This will allow the scheduledBytes/messages to be
> overriden, and also allow someone to set them.
>
> Index: core/src/main/java/org/apache/mina/common/AbstractIoSession.java
> ===================================================================
> --- core/src/main/java/org/apache/mina/common/AbstractIoSession.java
> (revision 607135)
> +++ core/src/main/java/org/apache/mina/common/AbstractIoSession.java
> (working copy)
> @@ -488,14 +488,22 @@
> lastThroughputCalculationTime = currentTime;
> }
>
> - public final long getScheduledWriteBytes() {
> + public long getScheduledWriteBytes() {
> return scheduledWriteBytes.get();
> }
>
> - public final int getScheduledWriteMessages() {
> + public int getScheduledWriteMessages() {
> return scheduledWriteMessages.get();
> }
>
> + public void setScheduledWriteBytes(long byteCount){
> + scheduledWriteBytes.set(byteCount);
> + }
> +
> + public void setScheduledWriteMessages(int messages) {
> + scheduledWriteMessages.set(messages);
> + }
> +
> protected final void increaseReadBytes(long increment, long
> currentTime) {
> if (increment <= 0) {
> return;
>
>
> Thanks,
>
> Jeff
>
>
> Trustin Lee wrote:
> > Hi Jeff and Emmanuel,
> >
> > You can add some hook for IoSession.write() by inserting an IoFilter,
> > so I am not sure about removing the final modifier from write().
> >
> > Overriding getScheduledMessages and getScheduledBytes makes sense
> > though because they will always be 0 because messageSent event will be
> > always fired immediately.
> >
> > WDYT?
> >
> > Trustin
> >
> > On Dec 27, 2007 10:21 AM, Emmanuel Lecharny <[EMAIL PROTECTED]> wrote:
> >> Jeff Genender wrote:
> >>> What do *you* think? ;-)
> >>>
> >> Beside the assert, which was a side effect of my quick glance at the
> >> method you want to override, I think that dooming the final is sane.
> >>
> >> If someone needs to protect this method, then the best solution would be
> >> to define a super class with final methods calling the AbstractIoSession
> >> non final methods.
> >>
> >> Another solution (puke....) would be to remove the
> >> public/protected/private qualifier, and to add a MockIoSession in the
> >> same package. Not very elegant, but does the job too...
> >>
> >> There are always tradeoff when you want to thoroughly unit-test some
> >> code. When it comes to an API, it seems impossible to avoid those
> >> tradeoff, IMHO.
> >>
> >> Any other opinion ? Trustin ? Julien ?
> >>
> >>> Jeff
> >>>
> >>>
> >>> Emmanuel Lecharny wrote:
> >>>
> >>>> Jeff Genender wrote:
> >>>>
> >>>>> Hey guys,
> >>>>>
> >>>>> I was hoping to see if we could discuss some of the "final" qualifiers
> >>>>> on some of the methods in the AbstractIOSession. The reason I ask is it
> >>>>> would be cool to be able to override some of the methods such as:
> >>>>>
> >>>>> public WriteFuture write(Object message)
> >>>>> public final int getScheduledWriteMessages()
> >>>>>
> >>>>> To be able to write MockObjects for unit tests of code. Any thoughts on
> >>>>> making these protected instead of final?
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> Jeff
> >>>>>
> >>>>>
> >>>>>
> >>>> Hi,
> >>>>
> >>>> makes sense to me... Or we may have a AbstractMockIoSession implementing
> >>>> the IoSession interface, for unit tests ?
> >>>>
> >>>> While looking at the abstract class, I found some methods with this kind
> >>>> of code :
> >>>>
> >>>> public final WriteFuture write(Object message, SocketAddress
> >>>> remoteAddress) {
> >>>> if (message == null) {
> >>>> throw new NullPointerException("message");
> >>>> }
> >>>> ...
> >>>>
> >>>> Wouldn't be a perfect case for an assert ? Like :
> >>>>
> >>>> public final WriteFuture write(Object message, SocketAddress
> >>>> remoteAddress) {
> >>>> assert message != null : "Null messages are not allowed";
> >>>> ...
> >>>>
> >>>> wdyt ?
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >> --
> >> --
> >> cordialement, regards,
> >> Emmanuel Lécharny
> >> www.iktek.com
> >> directory.apache.org
> >>
> >>
> >>
> >
> >
> >
>
--
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6