You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2008/11/04 01:25:09 UTC
svn commit: r711142 - in /mina/branches/mina-new-chain/core/src:
main/java/org/apache/mina/core/filterchain/
main/java/org/apache/mina/core/polling/
main/java/org/apache/mina/core/service/
main/java/org/apache/mina/core/session/ main/java/org/apache/mi...
Author: elecharny
Date: Mon Nov 3 16:25:08 2008
New Revision: 711142
URL: http://svn.apache.org/viewvc?rev=711142&view=rev
Log:
Fixed a bunch of errors.
o Each filter now has a default name, but can be renamed
o we don't have a chainBuilder anymore, it's replaced by two lists, one for the incoming chain, one for the outgoing chain
o we call the next filter explicitly in the code using a getNextFilter() method
o The initial chain construction is done using the List API, ie we don't have anymore those complex methods (addBefore, addAfter). Just add(filter), add(pos, filter) and of course remove(filter)
o And many other modifications...
Still not finished. Work in progress, I have 451 errors !
Modified:
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoService.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/DummySession.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoEvent.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoSession.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/NoopFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java
mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
mina/branches/mina-new-chain/core/src/test/java/org/apache/mina/core/IoFilterChainTest.java
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/filterchain/IoFilterAdapter.java Mon Nov 3 16:25:08 2008
@@ -37,9 +37,18 @@
private IoFilter nextFilter;
/** The filter's name */
- protected static String name;
+ private String name;
/**
+ * Creates a new instance of this class, and associate a name
+ * to it.
+ * @param name The filter's name
+ */
+ public IoFilterAdapter(String name) {
+ this.name = name;
+ }
+
+ /**
* {@inheritDoc}
*/
public void init() throws Exception {
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Mon Nov 3 16:25:08 2008
@@ -33,6 +33,7 @@
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.service.AbstractIoAcceptor;
import org.apache.mina.core.service.IoAcceptor;
@@ -239,7 +240,13 @@
finishSessionInitialization(session, null, null);
try {
- this.getFilterChainBuilder().buildFilterChain(session.getFilterChain());
+ // Build the filter chains for this session.
+ List<IoFilter> chainIn = ((IoSession)session). getService().getFilterChainIn();
+ ((IoSession)session).setFilterChainIn(chainIn);
+
+ List<IoFilter> chainOut = ((IoSession)session). getService().getFilterChainOut();
+ ((IoSession)session).setFilterChainIn(chainOut);
+
getListeners().fireSessionCreated(session);
} catch (Throwable t) {
ExceptionMonitor.getInstance().exceptionCaught(t);
@@ -415,7 +422,7 @@
newBuf.put(readBuf);
newBuf.flip();
- session.getFilterInChain().messageReceived(session,newBuf);
+ session.getFirstFilterIn().messageReceived(session,newBuf);
}
}
@@ -435,7 +442,7 @@
scheduleFlush(session);
}
} catch (Exception e) {
- session.getFilterOutChain().exceptionCaught(session, e);
+ session.getFirstFilterOut().exceptionCaught(session, e);
}
}
}
@@ -466,7 +473,7 @@
// Clear and fire event
session.setCurrentWriteRequest(null);
buf.reset();
- session.getFilterOutChain().messageSent(session, req);
+ session.getFirstFilterOut().messageSent(session, req);
continue;
}
@@ -487,7 +494,7 @@
session.setCurrentWriteRequest(null);
writtenBytes += localWrittenBytes;
buf.reset();
- session.getFilterOutChain().messageSent(session, req);
+ session.getFirstFilterOut().messageSent(session, req);
}
}
} finally {
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java Mon Nov 3 16:25:08 2008
@@ -34,7 +34,6 @@
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.file.FileRegion;
import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.future.DefaultIoFuture;
import org.apache.mina.core.service.AbstractIoService;
import org.apache.mina.core.service.IoProcessor;
@@ -416,10 +415,13 @@
init(session);
registered = true;
- // Build the filter chain of this session.
- session.getService().getFilterChainBuilder().buildFilterChain(
- session.getFilterChain());
-
+ // Build the filter chains for this session.
+ List<IoFilter> chainIn = ((IoSession)session). getService().getFilterChainIn();
+ ((IoSession)session).setFilterChainIn(chainIn);
+
+ List<IoFilter> chainOut = ((IoSession)session). getService().getFilterChainOut();
+ ((IoSession)session).setFilterChainIn(chainOut);
+
// DefaultIoFilterChain.CONNECT_FUTURE is cleared inside here
// in AbstractIoFilterChain.fireSessionOpened().
((AbstractIoService) session.getService()).getListeners().fireSessionCreated(session);
@@ -429,8 +431,7 @@
// Clear the DefaultIoFilterChain.CONNECT_FUTURE attribute
// and call ConnectFuture.setException().
scheduleRemove(session);
- IoFilter firstFilter = session.getFilterOutChain();
- firstFilter.exceptionCaught(session, e);
+ session.getFirstFilterOut().exceptionCaught(session, e);
wakeup();
} else {
ExceptionMonitor.getInstance().exceptionCaught(e);
@@ -485,8 +486,7 @@
destroy(session);
return true;
} catch (Exception e) {
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
} finally {
clearWriteRequestQueue(session);
((AbstractIoService) session.getService()).getListeners().fireSessionDestroyed(session);
@@ -511,8 +511,7 @@
buf.reset();
failedRequests.add(req);
} else {
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireMessageSent(req);
+ session.getFirstFilterOut().messageSent(session, req);
}
} else {
failedRequests.add(req);
@@ -531,8 +530,8 @@
session.decreaseScheduledBytesAndMessages(r);
r.getFuture().setException(cause);
}
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(cause);
+
+ session.getFirstFilterIn().exceptionCaught(session, cause);
}
}
@@ -585,8 +584,7 @@
}
if (readBytes > 0) {
- IoFilterChain filterChain = session.getFirstFilter();
- filterChain.fireMessageReceived(buf);
+ session.getFirstFilterIn().messageReceived(session, buf);
buf = null;
if (hasFragmentation) {
@@ -604,8 +602,7 @@
if (e instanceof IOException) {
scheduleRemove(session);
}
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
}
}
@@ -637,8 +634,7 @@
}
} catch (Exception e) {
scheduleRemove(session);
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
}
break;
case CLOSED:
@@ -738,8 +734,7 @@
}
} while (writtenBytes < maxWrittenBytes);
} catch (Exception e) {
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
return false;
}
@@ -805,8 +800,7 @@
private void fireMessageSent(T session, WriteRequest req) {
session.setCurrentWriteRequest(null);
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireMessageSent(req);
+ session.getFirstFilterOut().messageSent(session, req);
}
private void updateTrafficMask() {
@@ -843,8 +837,7 @@
try {
setInterestedInRead(session, (mask & SelectionKey.OP_READ) != 0);
} catch (Exception e) {
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
}
try {
setInterestedInWrite(
@@ -852,8 +845,7 @@
!session.getWriteRequestQueue().isEmpty(session) &&
(mask & SelectionKey.OP_WRITE) != 0);
} catch (Exception e) {
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireExceptionCaught(e);
+ session.getFirstFilterIn().exceptionCaught(session, e);
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Mon Nov 3 16:25:08 2008
@@ -31,6 +31,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.mina.core.IoUtil;
+import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.future.DefaultIoFuture;
import org.apache.mina.core.future.IoFuture;
@@ -120,10 +121,11 @@
}
};
- /**
- * Current filter chain builder.
- */
- private IoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
+ /** The incoming filter chain */
+ private List<IoFilter> filterChainIn;
+
+ /** The outgoing filter chain */
+ private List<IoFilter> filterChainOut;
private IoSessionDataStructureFactory sessionDataStructureFactory = new DefaultIoSessionDataStructureFactory();
@@ -212,30 +214,43 @@
/**
* {@inheritDoc}
*/
- public final IoFilterChainBuilder getFilterChainBuilder() {
- return filterChainBuilder;
+ public final List<IoFilter> getFilterInChain() {
+ return filterChainIn;
}
/**
* {@inheritDoc}
*/
- public final void setFilterChainBuilder(IoFilterChainBuilder builder) {
- if (builder == null) {
- builder = new DefaultIoFilterChainBuilder();
- }
- filterChainBuilder = builder;
+ public final List<IoFilter> getFilterOutChain() {
+ return filterChainOut;
}
/**
* {@inheritDoc}
*/
- public final DefaultIoFilterChainBuilder getFilterChain() {
- if (filterChainBuilder instanceof DefaultIoFilterChainBuilder) {
- return (DefaultIoFilterChainBuilder) filterChainBuilder;
- } else {
- throw new IllegalStateException(
- "Current filter chain builder is not a DefaultIoFilterChainBuilder.");
- }
+ public final void setFilterChainIn(List<IoFilter> filters) {
+ filterChainIn = filters;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void setFilterChainOut(List<IoFilter> filters) {
+ filterChainOut = filters;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public final List<IoFilter> getFilterChainIn() {
+ return filterChainIn;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public final List<IoFilter> getFilterChainOut() {
+ return filterChainOut;
}
/**
@@ -494,7 +509,7 @@
if (future != null && future instanceof ConnectFuture) {
// DefaultIoFilterChain will notify the future. (We support ConnectFuture only for now).
- session.setAttribute(DefaultIoFilterChain.SESSION_CREATED_FUTURE,
+ session.setAttribute(session,
future);
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoService.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoService.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoService.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoService.java Mon Nov 3 16:25:08 2008
@@ -20,13 +20,12 @@
package org.apache.mina.core.service;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.mina.core.IoUtil;
-import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
-import org.apache.mina.core.filterchain.IoFilterChain;
-import org.apache.mina.core.filterchain.IoFilterChainBuilder;
+import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.future.WriteFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.session.IoSessionConfig;
@@ -109,33 +108,32 @@
IoSessionConfig getSessionConfig();
/**
- * Returns the {@link IoFilterChainBuilder} which will build the
- * {@link IoFilterChain} of all {@link IoSession}s which is created
- * by this service.
- * The default value is an empty {@link DefaultIoFilterChainBuilder}.
+ * Returns the incoming filter chain stored into the service.
+ * @return the incoming filter chain
*/
- IoFilterChainBuilder getFilterChainBuilder();
+ List<IoFilter> getFilterChainIn();
/**
- * Sets the {@link IoFilterChainBuilder} which will build the
- * {@link IoFilterChain} of all {@link IoSession}s which is created
- * by this service.
- * If you specify <tt>null</tt> this property will be set to
- * an empty {@link DefaultIoFilterChainBuilder}.
+ * Returns the outgoing filter chain stored into the service.
+ * @return the outgoing filter chain
*/
- void setFilterChainBuilder(IoFilterChainBuilder builder);
+ List<IoFilter> getFilterChainOut();
/**
- * A shortcut for <tt>( ( DefaultIoFilterChainBuilder ) </tt>{@link #getFilterChainBuilder()}<tt> )</tt>.
- * Please note that the returned object is not a <b>real</b> {@link IoFilterChain}
- * but a {@link DefaultIoFilterChainBuilder}. Modifying the returned builder
- * won't affect the existing {@link IoSession}s at all, because
- * {@link IoFilterChainBuilder}s affect only newly created {@link IoSession}s.
- *
- * @throws IllegalStateException if the current {@link IoFilterChainBuilder} is
- * not a {@link DefaultIoFilterChainBuilder}
+ * Sets the incoming filter chain. It will be copied for every
+ * new created session.
+ *
+ * @param builder the new incoming filter chain
+ */
+ void setFilterChainIn(List<IoFilter> builder);
+
+ /**
+ * Sets the outgoing filter chain. It will be copied for every
+ * new created session.
+ *
+ * @param builder the new outgoing filter chain
*/
- DefaultIoFilterChainBuilder getFilterChain();
+ void setFilterChainOut(List<IoFilter> builder);
/**
* Returns a value of whether or not this service is active
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java Mon Nov 3 16:25:08 2008
@@ -32,7 +32,6 @@
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.util.ExceptionMonitor;
-import org.apache.mina.core.filterchain.IoFilterChain;
/**
* A helper which provides addition and removal of {@link IoServiceListener}s and firing
@@ -198,9 +197,8 @@
}
// Fire session events.
- IoFilterChain filterChain = session.getFilterChain();
- filterChain.fireSessionCreated();
- filterChain.fireSessionOpened();
+ session.getFirstFilterIn().sessionCreated(session);
+ session.getFirstFilterIn().sessionOpened(session);
int managedSessionCount = managedSessions.size();
if (managedSessionCount > largestManagedSessionCount) {
@@ -228,7 +226,7 @@
}
// Fire session events.
- session.getFilterChain().fireSessionClosed();
+ session.getFirstFilterIn().sessionClosed(session);
// Fire listener events.
try {
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Mon Nov 3 16:25:08 2008
@@ -139,10 +139,10 @@
private boolean deferDecreaseReadBuffer = true;
/** The list of IoFilter for the incoming chain */
- protected final List<IoFilter> incomingChain = new ArrayList<IoFilter>();
+ protected List<IoFilter> incomingChain;
/** The list of IoFilter for the outgoing chain */
- protected final List<IoFilter> outgoingChain = new ArrayList<IoFilter>();
+ protected List<IoFilter> outgoingChain;
/**
@@ -369,23 +369,47 @@
/**
* {@inheritDoc}
*/
- public List<IoFilter> getFilterInChain() {
+ public List<IoFilter> getFilterChainIn() {
return incomingChain;
}
/**
* {@inheritDoc}
*/
- public List<IoFilter> getFilterOutChain() {
+ public List<IoFilter> getFilterChainOut() {
return outgoingChain;
}
/**
+ * Store a copy of the given incoming chain
+ * @param chain The chain to copy
+ */
+ public void setFilterChainIn(List<IoFilter> chain) {
+ incomingChain = new ArrayList<IoFilter>(chain.size());
+
+ for (IoFilter filter:chain) {
+ incomingChain.add(filter);
+ }
+ }
+
+ /**
+ * Store a copy of the given outgoing chain
+ * @param chain The chain to copy
+ */
+ public void setFilterChainOut(List<IoFilter> chain) {
+ outgoingChain = new ArrayList<IoFilter>(chain.size());
+
+ for (IoFilter filter:chain) {
+ outgoingChain.add(filter);
+ }
+ }
+
+ /**
* Get the first filter in the incoming chain
* @return The first filter in the chain
*/
public IoFilter getFirstFilterIn() {
- return getFilterInChain().get(0);
+ return getFilterChainIn().get(0);
}
/**
@@ -393,7 +417,7 @@
* @return The first filter in the chain
*/
public IoFilter getFirstFilterOut() {
- return getFilterOutChain().get(0);
+ return getFilterChainOut().get(0);
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/DummySession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/DummySession.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/DummySession.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/DummySession.java Mon Nov 3 16:25:08 2008
@@ -26,9 +26,7 @@
import java.util.concurrent.Executor;
import org.apache.mina.core.file.FileRegion;
-import org.apache.mina.core.filterchain.DefaultIoFilterChain;
import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.service.AbstractIoAcceptor;
import org.apache.mina.core.service.DefaultTransportMetadata;
@@ -77,12 +75,6 @@
}
};
- /** The first filter in the incoming chain */
- private final IoFilter firstFilterIn;
-
- /** The first filter in the outgoing chain */
- private final IoFilter firstFilterOut;
-
private final IoProcessor<IoSession> processor;
private volatile IoHandler handler = new IoHandlerAdapter();
@@ -147,11 +139,11 @@
file.getFileChannel().position(file.getPosition() + file.getRemainingBytes());
file.update(file.getRemainingBytes());
} catch (IOException e) {
- s.getFilterOutChain().fireExceptionCaught(e);
+ s.getFirstFilterOut().exceptionCaught(session, e);
}
}
- firstFilterIn.fireMessageSent(req);
+ session.getFirstFilterOut().messageSent(session, req);
}
public void remove(IoSession session) {
@@ -196,20 +188,6 @@
this.config = config;
}
- /**
- * {@inheritDoc}
- */
- public IoFilter getFilterInChain() {
- return firstFilterIn;
- }
-
- /**
- * {@inheritDoc}
- */
- public IoFilter getFilterOutChain() {
- return firstFilterOut;
- }
-
public IoHandler getHandler() {
return handler;
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoEvent.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoEvent.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoEvent.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoEvent.java Mon Nov 3 16:25:08 2008
@@ -19,7 +19,6 @@
*/
package org.apache.mina.core.session;
-import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.write.WriteRequest;
/**
@@ -66,39 +65,36 @@
}
public void fire() {
- IoFilter firstFilterIn = getSession().getFilterInChain().get(0);
- IoFilter firstFilterOut = getSession().getFilterOutChain().get(0);
-
switch (getType()) {
case MESSAGE_RECEIVED:
- firstFilterIn.messageReceived(session, getParameter());
+ getSession().getFirstFilterIn().messageReceived(session, getParameter());
break;
case MESSAGE_SENT:
- firstFilterOut.messageSent(session, (WriteRequest) getParameter());
+ getSession().getFirstFilterOut().messageSent(session, (WriteRequest) getParameter());
break;
case WRITE:
- firstFilterOut.filterWrite(session, (WriteRequest) getParameter());
+ getSession().getFirstFilterOut().filterWrite(session, (WriteRequest) getParameter());
break;
case SET_TRAFFIC_MASK:
//getSession().getFilterChain().fireFilterSetTrafficMask((TrafficMask) getParameter());
break;
case CLOSE:
- firstFilterIn.filterClose(session);
+ getSession().getFirstFilterIn().filterClose(session);
break;
case EXCEPTION_CAUGHT:
- firstFilterIn.exceptionCaught(session, (Throwable) getParameter());
+ getSession().getFirstFilterIn().exceptionCaught(session, (Throwable) getParameter());
break;
case SESSION_IDLE:
- firstFilterIn.sessionIdle(session, (IdleStatus) getParameter());
+ getSession().getFirstFilterIn().sessionIdle(session, (IdleStatus) getParameter());
break;
case SESSION_OPENED:
- firstFilterIn.sessionOpened(session);
+ getSession().getFirstFilterIn().sessionOpened(session);
break;
case SESSION_CREATED:
- firstFilterIn.sessionCreated(session);
+ getSession().getFirstFilterIn().sessionCreated(session);
break;
case SESSION_CLOSED:
- firstFilterIn.sessionClosed(session);
+ getSession().getFirstFilterIn().sessionClosed(session);
break;
default:
throw new IllegalArgumentException("Unknown event type: " + getType());
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoSession.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoSession.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/core/session/IoSession.java Mon Nov 3 16:25:08 2008
@@ -97,9 +97,15 @@
* @return the first filter from the Incoming chain
* that only affects this session.
*/
- List<IoFilter> getFilterInChain();
+ List<IoFilter> getFilterChainIn();
/**
+ * Store a copy of the given incoming chain
+ * @param chain The chain to copy
+ */
+ void setFilterChainIn(List<IoFilter> chain);
+
+ /**
* Get the first filter in the incoming chain
* @return The first filter in the chain
*/
@@ -109,7 +115,13 @@
* @return the first filter from the Outgoing chain
* that only affects this session.
*/
- List<IoFilter> getFilterOutChain();
+ List<IoFilter> getFilterChainOut();
+
+ /**
+ * Store a copy of the given outgoing chain
+ * @param chain The chain to copy
+ */
+ void setFilterChainOut(List<IoFilter> chain);
/**
* Get the first filter in the outgoing chain
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Mon Nov 3 16:25:08 2008
@@ -26,7 +26,6 @@
import org.apache.mina.core.file.FileRegion;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.future.DefaultWriteFuture;
import org.apache.mina.core.future.WriteFuture;
import org.apache.mina.core.session.AttributeKey;
@@ -49,9 +48,7 @@
*/
public class ProtocolCodecFilter extends IoFilterAdapter {
// Set the filter's name
- static {
- name = "protocolCodec";
- }
+ private static final String DEFAULT_NAME = "protocolCodec";
private static final Class<?>[] EMPTY_PARAMS = new Class[0];
@@ -74,13 +71,25 @@
* @param factory The associated factory
*/
public ProtocolCodecFilter(ProtocolCodecFactory factory) {
+ this(DEFAULT_NAME, factory);
+ }
+
+ /**
+ *
+ * Creates a new instance of ProtocolCodecFilter, associating a factory
+ * for the creation of the encoder and decoder.
+ *
+ * @param name the filter's name
+ * @param factory The associated factory
+ */
+ public ProtocolCodecFilter(String name, ProtocolCodecFactory factory) {
+ super(name);
if (factory == null) {
throw new NullPointerException("factory");
}
this.factory = factory;
}
-
/**
* Creates a new instance of ProtocolCodecFilter, without any factory.
* The encoder/decoder factory will be created as an inner class, using
@@ -91,6 +100,20 @@
*/
public ProtocolCodecFilter(final ProtocolEncoder encoder,
final ProtocolDecoder decoder) {
+ this(DEFAULT_NAME, encoder, decoder);
+ }
+
+ /**
+ * Creates a new instance of ProtocolCodecFilter, without any factory.
+ * The encoder/decoder factory will be created as an inner class, using
+ * the two parameters (encoder and decoder).
+ *
+ * @param encoder The class responsible for encoding the message
+ * @param decoder The class responsible for decoding the message
+ */
+ public ProtocolCodecFilter(String name, final ProtocolEncoder encoder,
+ final ProtocolDecoder decoder) {
+ super(name);
if (encoder == null) {
throw new NullPointerException("encoder");
}
@@ -122,6 +145,22 @@
public ProtocolCodecFilter(
final Class<? extends ProtocolEncoder> encoderClass,
final Class<? extends ProtocolDecoder> decoderClass) {
+ this(DEFAULT_NAME, encoderClass, decoderClass);
+ }
+
+ /**
+ * Creates a new instance of ProtocolCodecFilter, without any factory.
+ * The encoder/decoder factory will be created as an inner class, using
+ * the two parameters (encoder and decoder), which are class names. Instances
+ * for those classes will be created in this constructor.
+ *
+ * @param encoder The class responsible for encoding the message
+ * @param decoder The class responsible for decoding the message
+ */
+ public ProtocolCodecFilter(String name,
+ final Class<? extends ProtocolEncoder> encoderClass,
+ final Class<? extends ProtocolDecoder> decoderClass) {
+ super(name);
if (encoderClass == null) {
throw new NullPointerException("encoderClass");
}
@@ -161,7 +200,6 @@
}
};
}
-
/**
* Get the encoder instance from a given session.
@@ -217,10 +255,9 @@
*
*/
@Override
- public void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) throws Exception {
+ public void messageReceived(IoSession session, Object message) {
if (!(message instanceof IoBuffer)) {
- nextFilter.messageReceived(session, message);
+ getNextFilter().messageReceived(session, message);
return;
}
@@ -235,11 +272,11 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot decode if the decoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
- ProtocolDecoderOutput decoderOut = getDecoderOut(session, nextFilter);
+ ProtocolDecoderOutput decoderOut = getDecoderOut(session, getNextFilter());
if ( decoderOut == null) {
// The decoderOut must not be null. It's null if
@@ -249,7 +286,7 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot decode if the decoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
@@ -286,7 +323,7 @@
// Fire the exceptionCaught event.
decoderOut.flush();
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
// Retry only if the type of the caught exception is
// recoverable and the buffer position has changed.
@@ -301,30 +338,28 @@
}
@Override
- public void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void messageSent(IoSession session, WriteRequest writeRequest) {
if (writeRequest instanceof EncodedWriteRequest) {
return;
}
if (!(writeRequest instanceof MessageWriteRequest)) {
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
return;
}
MessageWriteRequest wrappedRequest = (MessageWriteRequest) writeRequest;
- nextFilter.messageSent(session, wrappedRequest.getParentRequest());
+ getNextFilter().messageSent(session, wrappedRequest.getParentRequest());
}
@Override
- public void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void filterWrite(IoSession session, WriteRequest writeRequest) {
Object message = writeRequest.getMessage();
// Bypass the encoding if the message is contained in a ByteBuffer,
// as it has already been encoded before
if (message instanceof IoBuffer || message instanceof FileRegion) {
- nextFilter.filterWrite(session, writeRequest);
+ getNextFilter().filterWrite(session, writeRequest);
return;
}
@@ -339,12 +374,12 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot encode if the encoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
ProtocolEncoderOutputImpl encoderOut = getEncoderOut(session,
- nextFilter, writeRequest);
+ getNextFilter(), writeRequest);
if ( encoderOut == null) {
// The encoder must not be null. It's null if
@@ -354,7 +389,7 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot encode if the encoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
@@ -366,7 +401,7 @@
encoderOut.flushWithoutFuture();
// Call the next filter
- nextFilter.filterWrite(session, new MessageWriteRequest(
+ getNextFilter().filterWrite(session, new MessageWriteRequest(
writeRequest));
} catch (Throwable t) {
ProtocolEncoderException pee;
@@ -394,7 +429,7 @@
* @throws Exception if we can't create instances of the decoder or encoder
*/
@Override
- public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
+ public void sessionCreated(IoSession session) {
// Creates the decoder and stores it into the newly created session
ProtocolDecoder decoder = factory.getDecoder(session);
session.setAttribute(DECODER, decoder);
@@ -404,12 +439,11 @@
session.setAttribute(ENCODER, encoder);
// Call the next filter
- nextFilter.sessionCreated(session);
+ getNextFilter().sessionCreated(session);
}
@Override
- public void sessionClosed(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public void sessionClosed(IoSession session) {
// Call finishDecode() first when a connection is closed.
ProtocolDecoder decoder = getDecoder(session);
@@ -421,11 +455,11 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot decode if the decoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
- ProtocolDecoderOutput decoderOut = getDecoderOut(session, nextFilter);
+ ProtocolDecoderOutput decoderOut = getDecoderOut(session, getNextFilter());
if ( decoderOut == null) {
// The decoder must not be null. It's null if
@@ -435,7 +469,7 @@
ProtocolDecoderException pde = new ProtocolDecoderException(
"Cannot decode if the decoder is null. Add the filter in the chain" +
"before the first session is created" );
- nextFilter.exceptionCaught(session, pde);
+ getNextFilter().exceptionCaught(session, pde);
return;
}
@@ -457,16 +491,16 @@
decoderOut.flush();
}
- nextFilter.sessionClosed(session);
+ getNextFilter().sessionClosed(session);
}
private ProtocolEncoderOutputImpl getEncoderOut(IoSession session,
- NextFilter nextFilter, WriteRequest writeRequest) {
+ IoFilter nextFilter, WriteRequest writeRequest) {
return new ProtocolEncoderOutputImpl(session, nextFilter, writeRequest);
}
private ProtocolDecoderOutput getDecoderOut(IoSession session,
- NextFilter nextFilter) {
+ IoFilter nextFilter) {
ProtocolDecoderOutput out = (ProtocolDecoderOutput) session.getAttribute(DECODER_OUT);
if (out == null) {
out = new ProtocolDecoderOutputImpl(session, nextFilter);
@@ -530,10 +564,10 @@
private static class ProtocolDecoderOutputImpl extends
AbstractProtocolDecoderOutput {
private final IoSession session;
- private final NextFilter nextFilter;
+ private final IoFilter nextFilter;
public ProtocolDecoderOutputImpl(
- IoSession session, NextFilter nextFilter) {
+ IoSession session, IoFilter nextFilter) {
this.session = session;
this.nextFilter = nextFilter;
}
@@ -550,12 +584,12 @@
AbstractProtocolEncoderOutput {
private final IoSession session;
- private final NextFilter nextFilter;
+ private final IoFilter nextFilter;
private final WriteRequest writeRequest;
public ProtocolEncoderOutputImpl(IoSession session,
- NextFilter nextFilter, WriteRequest writeRequest) {
+ IoFilter nextFilter, WriteRequest writeRequest) {
this.session = session;
this.nextFilter = nextFilter;
this.writeRequest = writeRequest;
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java Mon Nov 3 16:25:08 2008
@@ -561,88 +561,82 @@
}
@Override
- public final void sessionOpened(NextFilter nextFilter, IoSession session) {
+ public final void sessionOpened(IoSession session) {
if (eventTypes.contains(IoEventType.SESSION_OPENED)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.SESSION_OPENED,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_OPENED,
session, null));
} else {
- nextFilter.sessionOpened(session);
+ getNextFilter().sessionOpened(session);
}
}
@Override
- public final void sessionClosed(NextFilter nextFilter, IoSession session) {
+ public final void sessionClosed(IoSession session) {
if (eventTypes.contains(IoEventType.SESSION_CLOSED)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.SESSION_CLOSED,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_CLOSED,
session, null));
} else {
- nextFilter.sessionClosed(session);
+ getNextFilter().sessionClosed(session);
}
}
@Override
- public final void sessionIdle(NextFilter nextFilter, IoSession session,
- IdleStatus status) {
+ public final void sessionIdle(IoSession session, IdleStatus status) {
if (eventTypes.contains(IoEventType.SESSION_IDLE)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.SESSION_IDLE,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_IDLE,
session, status));
} else {
- nextFilter.sessionIdle(session, status);
+ getNextFilter().sessionIdle(session, status);
}
}
@Override
- public final void exceptionCaught(NextFilter nextFilter, IoSession session,
- Throwable cause) {
+ public final void exceptionCaught(IoSession session, Throwable cause) {
if (eventTypes.contains(IoEventType.EXCEPTION_CAUGHT)) {
- fireEvent(new IoFilterEvent(nextFilter,
+ fireEvent(new IoFilterEvent(getNextFilter(),
IoEventType.EXCEPTION_CAUGHT, session, cause));
} else {
- nextFilter.exceptionCaught(session, cause);
+ getNextFilter().exceptionCaught(session, cause);
}
}
@Override
- public final void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) {
+ public final void messageReceived(IoSession session, Object message) {
if (eventTypes.contains(IoEventType.MESSAGE_RECEIVED)) {
- fireEvent(new IoFilterEvent(nextFilter,
+ fireEvent(new IoFilterEvent(getNextFilter(),
IoEventType.MESSAGE_RECEIVED, session, message));
} else {
- nextFilter.messageReceived(session, message);
+ getNextFilter().messageReceived(session, message);
}
}
@Override
- public final void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) {
+ public final void messageSent(IoSession session, WriteRequest writeRequest) {
if (eventTypes.contains(IoEventType.MESSAGE_SENT)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.MESSAGE_SENT,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.MESSAGE_SENT,
session, writeRequest));
} else {
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
}
}
@Override
- public final void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) {
+ public final void filterWrite(IoSession session, WriteRequest writeRequest) {
if (eventTypes.contains(IoEventType.WRITE)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.WRITE, session,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.WRITE, session,
writeRequest));
} else {
- nextFilter.filterWrite(session, writeRequest);
+ getNextFilter().filterWrite(session, writeRequest);
}
}
@Override
- public final void filterClose(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public final void filterClose(IoSession session) {
if (eventTypes.contains(IoEventType.CLOSE)) {
- fireEvent(new IoFilterEvent(nextFilter, IoEventType.CLOSE, session,
+ fireEvent(new IoFilterEvent(getNextFilter(), IoEventType.CLOSE, session,
null));
} else {
- nextFilter.filterClose(session);
+ getNextFilter().filterClose(session);
}
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java Mon Nov 3 16:25:08 2008
@@ -97,13 +97,12 @@
@Override
public void filterWrite(
- NextFilter nextFilter,
- IoSession session, WriteRequest writeRequest) throws Exception {
+ IoSession session, WriteRequest writeRequest) {
final IoEvent e = new IoEvent(IoEventType.WRITE, session, writeRequest);
if (queueHandler.accept(this, e)) {
- nextFilter.filterWrite(session, writeRequest);
+ getNextFilter().filterWrite(session, writeRequest);
WriteFuture writeFuture = writeRequest.getFuture();
if (writeFuture == null) {
return;
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java Mon Nov 3 16:25:08 2008
@@ -173,51 +173,45 @@
}
@Override
- public void exceptionCaught(NextFilter nextFilter, IoSession session,
- Throwable cause) throws Exception {
+ public void exceptionCaught(IoSession session, Throwable cause) {
log(exceptionCaughtLevel, "EXCEPTION :", cause);
- nextFilter.exceptionCaught(session, cause);
+ getNextFilter().exceptionCaught(session, cause);
}
@Override
- public void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) throws Exception {
+ public void messageReceived(IoSession session, Object message) {
log(messageReceivedLevel, "RECEIVED: {}", message );
- nextFilter.messageReceived(session, message);
+ getNextFilter().messageReceived(session, message);
}
@Override
- public void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void messageSent(IoSession session, WriteRequest writeRequest) {
log(messageSentLevel, "SENT: {}", writeRequest.getMessage() );
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
}
@Override
- public void sessionCreated(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public void sessionCreated(IoSession session) {
log(sessionCreatedLevel, "CREATED");
- nextFilter.sessionCreated(session);
+ getNextFilter().sessionCreated(session);
}
@Override
- public void sessionOpened(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public void sessionOpened(IoSession session) {
log(sessionOpenedLevel, "OPENED");
- nextFilter.sessionOpened(session);
+ getNextFilter().sessionOpened(session);
}
@Override
- public void sessionIdle(NextFilter nextFilter, IoSession session,
- IdleStatus status) throws Exception {
+ public void sessionIdle(IoSession session, IdleStatus status) {
log(sessionIdleLevel, "IDLE");
- nextFilter.sessionIdle(session, status);
+ getNextFilter().sessionIdle(session, status);
}
@Override
- public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
+ public void sessionClosed(IoSession session) {
log(sessionClosedLevel, "CLOSED");
- nextFilter.sessionClosed(session);
+ getNextFilter().sessionClosed(session);
}
/**
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/logging/MdcInjectionFilter.java Mon Nov 3 16:25:08 2008
@@ -123,7 +123,7 @@
}
@Override
- protected void filter(IoFilterEvent event) throws Exception {
+ protected void filter(IoFilterEvent event) {
// since this method can potentially call into itself
// we need to check the call depth before clearing the MDC
int currentCallDepth = callDepth.get();
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java Mon Nov 3 16:25:08 2008
@@ -119,21 +119,20 @@
}
@Override
- public void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) throws Exception {
+ public void messageReceived(IoSession session, Object message) {
ResponseInspector responseInspector = (ResponseInspector) session
.getAttribute(RESPONSE_INSPECTOR);
Object requestId = responseInspector.getRequestId(message);
if (requestId == null) {
// Not a response message. Ignore.
- nextFilter.messageReceived(session, message);
+ getNextFilter().messageReceived(session, message);
return;
}
// Retrieve (or remove) the corresponding request.
ResponseType type = responseInspector.getResponseType(message);
if (type == null) {
- nextFilter.exceptionCaught(session, new IllegalStateException(
+ getNextFilter().exceptionCaught(session, new IllegalStateException(
responseInspector.getClass().getName()
+ "#getResponseType() may not return null."));
}
@@ -182,7 +181,7 @@
// And forward the event.
Response response = new Response(request, message, type);
request.signal(response);
- nextFilter.messageReceived(session, response);
+ getNextFilter().messageReceived(session, response);
}
}
@@ -232,8 +231,7 @@
}
@Override
- public void sessionClosed(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public void sessionClosed(IoSession session) {
// Copy the unfinished task set to avoid unnecessary lock acquisition.
// Copying will be cheap because there won't be that many requests queued.
Set<Request> unrespondedRequests = getUnrespondedRequestStore(session);
@@ -258,7 +256,7 @@
}
// Now tell the main subject.
- nextFilter.sessionClosed(session);
+ getNextFilter().sessionClosed(session);
}
@SuppressWarnings("unchecked")
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/AbstractStreamWriteFilter.java Mon Nov 3 16:25:08 2008
@@ -24,7 +24,6 @@
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.filterchain.IoFilterAdapter;
-import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.session.AttributeKey;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.write.DefaultWriteRequest;
@@ -38,6 +37,9 @@
* @version $Rev$, $Date$
*/
public abstract class AbstractStreamWriteFilter<T> extends IoFilterAdapter {
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "abstractStreamWrite";
+
/**
* The default buffer size this filter uses for writing.
*/
@@ -54,6 +56,21 @@
private int writeBufferSize = DEFAULT_STREAM_BUFFER_SIZE;
+ /**
+ * Default Constructor.
+ */
+ protected AbstractStreamWriteFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Default Constructor.
+ * @param name The filter's name
+ */
+ protected AbstractStreamWriteFilter(String name) {
+ super(name);
+ }
+
@Override
public void onPreAdd(IoFilterChain parent, String name,
NextFilter nextFilter) throws Exception {
@@ -65,8 +82,7 @@
}
@Override
- public void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void filterWrite(IoSession session, WriteRequest writeRequest) {
// If we're already processing a stream we need to queue the WriteRequest.
if (session.getAttribute(CURRENT_STREAM) != null) {
Queue<WriteRequest> queue = getWriteRequestQueue(session);
@@ -88,17 +104,17 @@
if (buffer == null) {
// End of stream reached.
writeRequest.getFuture().setWritten();
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
} else {
session.setAttribute(CURRENT_STREAM, message);
session.setAttribute(CURRENT_WRITE_REQUEST, writeRequest);
- nextFilter.filterWrite(session, new DefaultWriteRequest(
+ getNextFilter().filterWrite(session, new DefaultWriteRequest(
buffer));
}
} else {
- nextFilter.filterWrite(session, writeRequest);
+ getNextFilter().filterWrite(session, writeRequest);
}
}
@@ -115,12 +131,11 @@
}
@Override
- public void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void messageSent(IoSession session, WriteRequest writeRequest) {
T stream = getMessageClass().cast(session.getAttribute(CURRENT_STREAM));
if (stream == null) {
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
} else {
IoBuffer buffer = getNextBuffer(stream);
@@ -135,15 +150,15 @@
if (queue != null) {
WriteRequest wr = queue.poll();
while (wr != null) {
- filterWrite(nextFilter, session, wr);
+ filterWrite(session, wr);
wr = queue.poll();
}
}
currentWriteRequest.getFuture().setWritten();
- nextFilter.messageSent(session, currentWriteRequest);
+ getNextFilter().messageSent(session, currentWriteRequest);
} else {
- nextFilter.filterWrite(session, new DefaultWriteRequest(
+ getNextFilter().filterWrite(session, new DefaultWriteRequest(
buffer));
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/FileRegionWriteFilter.java Mon Nov 3 16:25:08 2008
@@ -58,13 +58,24 @@
*/
public class FileRegionWriteFilter extends
AbstractStreamWriteFilter<FileRegion> {
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "fileRegionWrite";
- // Set the filter's name
- static {
- name = "fileRegionWrite";
+ /**
+ * Default Constructor.
+ */
+ public FileRegionWriteFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Default Constructor.
+ * @param name The filter's name
+ */
+ public FileRegionWriteFilter(String name) {
+ super(name);
}
-
@Override
protected Class<FileRegion> getMessageClass() {
return FileRegion.class;
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/stream/StreamWriteFilter.java Mon Nov 3 16:25:08 2008
@@ -54,10 +54,22 @@
* @org.apache.xbean.XBean
*/
public class StreamWriteFilter extends AbstractStreamWriteFilter<InputStream> {
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "streamWrite";
- // Set the filter's name
- static {
- name = "streamWrite";
+ /**
+ * Default Constructor.
+ */
+ public StreamWriteFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Default Constructor.
+ * @param name The filter's name
+ */
+ public StreamWriteFilter(String name) {
+ super(name);
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/CommonEventFilter.java Mon Nov 3 16:25:08 2008
@@ -34,54 +34,69 @@
* @version $Rev:$, $Date:$
*/
public abstract class CommonEventFilter extends IoFilterAdapter {
-
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "commonEvent";
+
+ /**
+ * Create a new instance with a default filter name
+ */
public CommonEventFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Create a new instance with a given filter name
+ *
+ * @param name the filter's name
+ */
+ public CommonEventFilter(String name) {
+ super(name);
}
- protected abstract void filter(IoFilterEvent event) throws Exception;
+ protected abstract void filter(IoFilterEvent event);
@Override
- public final void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_CREATED, session, null));
+ public final void sessionCreated(IoSession session) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_CREATED, session, null));
}
@Override
- public final void sessionOpened(NextFilter nextFilter, IoSession session) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_OPENED, session, null));
+ public final void sessionOpened(IoSession session) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_OPENED, session, null));
}
@Override
- public final void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_CLOSED, session, null));
+ public final void sessionClosed(IoSession session) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_CLOSED, session, null));
}
@Override
- public final void sessionIdle(NextFilter nextFilter, IoSession session, IdleStatus status) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.SESSION_IDLE, session, status));
+ public final void sessionIdle(IoSession session, IdleStatus status) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.SESSION_IDLE, session, status));
}
@Override
- public final void exceptionCaught(NextFilter nextFilter, IoSession session, Throwable cause) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.EXCEPTION_CAUGHT, session, cause));
+ public final void exceptionCaught(IoSession session, Throwable cause) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.EXCEPTION_CAUGHT, session, cause));
}
@Override
- public final void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.MESSAGE_RECEIVED, session, message));
+ public final void messageReceived(IoSession session, Object message) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.MESSAGE_RECEIVED, session, message));
}
@Override
- public final void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.MESSAGE_SENT, session, writeRequest));
+ public final void messageSent(IoSession session, WriteRequest writeRequest) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.MESSAGE_SENT, session, writeRequest));
}
@Override
- public final void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.WRITE, session, writeRequest));
+ public final void filterWrite(IoSession session, WriteRequest writeRequest) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.WRITE, session, writeRequest));
}
@Override
- public final void filterClose(NextFilter nextFilter, IoSession session) throws Exception {
- filter(new IoFilterEvent(nextFilter, IoEventType.CLOSE, session, null));
+ public final void filterClose(IoSession session) {
+ filter(new IoFilterEvent(getNextFilter(), IoEventType.CLOSE, session, null));
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/NoopFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/NoopFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/NoopFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/NoopFilter.java Mon Nov 3 16:25:08 2008
@@ -32,15 +32,21 @@
* @version $Rev: 671827 $, $Date: 2008-06-26 10:49:48 +0200 (Thu, 26 Jun 2008) $
*/
public class NoopFilter extends IoFilterAdapter {
- // Set the filter's name
- static {
- name = "noop";
- }
+ // Set the default filter's name
+ private static final String DEFAULT_NAME = "noop";
/**
* Default Constructor.
*/
public NoopFilter() {
- super();
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Default Constructor.
+ * @param name The filter's name
+ */
+ public NoopFilter(String name) {
+ super(name);
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/ReferenceCountingFilter.java Mon Nov 3 16:25:08 2008
@@ -21,7 +21,6 @@
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.filterchain.IoFilter;
-import org.apache.mina.core.filterchain.IoFilterChain;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.core.session.TrafficMask;
@@ -36,16 +35,20 @@
* @org.apache.xbean.XBean
*/
public class ReferenceCountingFilter extends IoFilterAdapter {
- // Set the filter's name
- static {
- name = "referenceCounting";
- }
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "referenceCounting";
private final IoFilter filter;
private int count = 0;
+ public ReferenceCountingFilter(String name, IoFilter filter) {
+ super(name);
+ this.filter = filter;
+ }
+
public ReferenceCountingFilter(IoFilter filter) {
+ super(DEFAULT_NAME);
this.filter = filter;
}
@@ -79,29 +82,25 @@
}
}
- public void exceptionCaught(NextFilter nextFilter, IoSession session,
- Throwable cause) throws Exception {
- filter.exceptionCaught(nextFilter, session, cause);
+ public void exceptionCaught( IoSession session, Throwable cause) {
+ filter.exceptionCaught(session, cause);
}
- public void filterClose(NextFilter nextFilter, IoSession session)
- throws Exception {
- filter.filterClose(nextFilter, session);
+ public void filterClose(IoSession session) {
+ filter.filterClose(session);
}
- public void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
- filter.filterWrite(nextFilter, session, writeRequest);
+ public void filterWrite(IoSession session, WriteRequest writeRequest) {
+ filter.filterWrite(session, writeRequest);
}
- public void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) throws Exception {
- filter.messageReceived(nextFilter, session, message);
+ public void messageReceived(IoSession session, Object message) {
+ filter.messageReceived(session, message);
}
- public void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
- filter.messageSent(nextFilter, session, writeRequest);
+ public void messageSent(IoSession session,
+ WriteRequest writeRequest) {
+ filter.messageSent(session, writeRequest);
}
public void onPostAdd(IoFilterChain parent, String name,
@@ -111,31 +110,26 @@
public void onPreRemove(IoFilterChain parent, String name,
NextFilter nextFilter) throws Exception {
- filter.onPreRemove(parent, name, nextFilter);
+ getNextFilter().onPreRemove(parent, name, nextFilter);
}
- public void sessionClosed(NextFilter nextFilter, IoSession session)
- throws Exception {
- filter.sessionClosed(nextFilter, session);
+ public void sessionClosed(IoSession session) {
+ getNextFilter().sessionClosed(session);
}
- public void sessionCreated(NextFilter nextFilter, IoSession session)
- throws Exception {
- filter.sessionCreated(nextFilter, session);
+ public void sessionCreated(IoSession session) {
+ getNextFilter().sessionCreated(session);
}
- public void sessionIdle(NextFilter nextFilter, IoSession session,
- IdleStatus status) throws Exception {
- filter.sessionIdle(nextFilter, session, status);
+ public void sessionIdle(IoSession session, IdleStatus status) {
+ getNextFilter().sessionIdle(session, status);
}
- public void sessionOpened(NextFilter nextFilter, IoSession session)
- throws Exception {
- filter.sessionOpened(nextFilter, session);
+ public void sessionOpened(IoSession session) {
+ getNextFilter().sessionOpened(session);
}
- public void filterSetTrafficMask(NextFilter nextFilter, IoSession session,
- TrafficMask trafficMask) throws Exception {
- filter.filterSetTrafficMask(nextFilter, session, trafficMask);
+ public void filterSetTrafficMask(IoSession session, TrafficMask trafficMask) {
+ //getNextFilter().setTrafficMask(session, trafficMask);
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/SessionAttributeInitializingFilter.java Mon Nov 3 16:25:08 2008
@@ -40,10 +40,8 @@
* @org.apache.xbean.XBean
*/
public class SessionAttributeInitializingFilter extends IoFilterAdapter {
- // Set the filter's name
- static {
- name = "sessionAttributeInitializing";
- }
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "sessionAttributeInitializing";
private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();
@@ -53,6 +51,18 @@
* {@link #setAttribute(String, Object)} and {@link #setAttributes(Map)}.
*/
public SessionAttributeInitializingFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Creates a new instance with a new name. You can set
+ * the additional attributes by calling methods such as
+ * {@link #setAttribute(String, Object)} and {@link #setAttributes(Map)}.
+ *
+ * @param name the filter's name
+ */
+ public SessionAttributeInitializingFilter(String name) {
+ super(name);
}
/**
@@ -62,6 +72,7 @@
*/
public SessionAttributeInitializingFilter(
Map<String, ? extends Object> attributes) {
+ super(DEFAULT_NAME);
setAttributes(attributes);
}
@@ -145,12 +156,11 @@
* map and forward the event to the next filter.
*/
@Override
- public void sessionCreated(NextFilter nextFilter, IoSession session)
- throws Exception {
+ public void sessionCreated(IoSession session) {
for (Map.Entry<String, Object> e : attributes.entrySet()) {
session.setAttribute(e.getKey(), e.getValue());
}
- nextFilter.sessionCreated(session);
+ getNextFilter().sessionCreated(session);
}
}
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/filter/util/WriteRequestFilter.java Mon Nov 3 16:25:08 2008
@@ -35,36 +35,54 @@
*
*/
public abstract class WriteRequestFilter extends IoFilterAdapter {
+ // Set the filter's default name
+ private static final String DEFAULT_NAME = "writeRequest";
+
+ /**
+ * Create a new instance with a default filter name
+ */
+ public WriteRequestFilter() {
+ super(DEFAULT_NAME);
+ }
+
+ /**
+ * Create a new instance with a given filter name
+ *
+ * @param name the filter's name
+ */
+ public WriteRequestFilter(String name) {
+ super(name);
+ }
+
@Override
- public void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
- Object filteredMessage = doFilterWrite(nextFilter, session, writeRequest);
+ public void filterWrite( IoSession session, WriteRequest writeRequest) {
+ Object filteredMessage = doFilterWrite(session, writeRequest);
+
if (filteredMessage != null && filteredMessage != writeRequest.getMessage()) {
- nextFilter.filterWrite(
+ getNextFilter().filterWrite(
session, new FilteredWriteRequest(
filteredMessage, writeRequest));
} else {
- nextFilter.filterWrite(session, writeRequest);
+ getNextFilter().filterWrite(session, writeRequest);
}
}
@Override
- public void messageSent(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
+ public void messageSent(IoSession session, WriteRequest writeRequest) {
if (writeRequest instanceof FilteredWriteRequest) {
FilteredWriteRequest req = (FilteredWriteRequest) writeRequest;
if (req.getParent() == this) {
- nextFilter.messageSent(session, req.getParentRequest());
+ getNextFilter().messageSent(session, req.getParentRequest());
return;
}
}
- nextFilter.messageSent(session, writeRequest);
+ getNextFilter().messageSent(session, writeRequest);
}
protected abstract Object doFilterWrite(
- NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception;
-
+ IoSession session, WriteRequest writeRequest);
+
private class FilteredWriteRequest extends WriteRequestWrapper {
private final Object filteredMessage;
Modified: mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java (original)
+++ mina/branches/mina-new-chain/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketSession.java Mon Nov 3 16:25:08 2008
@@ -23,13 +23,10 @@
import java.net.SocketException;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.file.FileRegion;
-import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.service.DefaultTransportMetadata;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.service.IoProcessor;
Modified: mina/branches/mina-new-chain/core/src/test/java/org/apache/mina/core/IoFilterChainTest.java
URL: http://svn.apache.org/viewvc/mina/branches/mina-new-chain/core/src/test/java/org/apache/mina/core/IoFilterChainTest.java?rev=711142&r1=711141&r2=711142&view=diff
==============================================================================
--- mina/branches/mina-new-chain/core/src/test/java/org/apache/mina/core/IoFilterChainTest.java (original)
+++ mina/branches/mina-new-chain/core/src/test/java/org/apache/mina/core/IoFilterChainTest.java Mon Nov 3 16:25:08 2008
@@ -19,11 +19,10 @@
*/
package org.apache.mina.core;
-import org.apache.mina.core.filterchain.DefaultIoFilterChain;
+import java.util.List;
+
import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.filterchain.IoFilterAdapter;
-import org.apache.mina.core.filterchain.IoFilterChain;
-import org.apache.mina.core.filterchain.IoFilterChain.Entry;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.DummySession;
@@ -47,7 +46,7 @@
*/
public class IoFilterChainTest {
private DummySession session;
- private IoFilterChain chain;
+ private List<IoFilter> chain;
private String result;
private final IoHandler handler = new IoHandlerAdapter() {
@@ -94,7 +93,7 @@
public void setUp() {
session = new DummySession();
session.setHandler(handler);
- chain = session.getFilterChain();
+ chain = session.getFilterChainIn();
result = "";
}
@@ -104,32 +103,28 @@
@Test
public void testAdd() throws Exception {
- chain.addFirst("A", new EventOrderTestFilter('A'));
- chain.addLast("B", new EventOrderTestFilter('A'));
- chain.addFirst("C", new EventOrderTestFilter('A'));
- chain.addLast("D", new EventOrderTestFilter('A'));
- chain.addBefore("B", "E", new EventOrderTestFilter('A'));
- chain.addBefore("C", "F", new EventOrderTestFilter('A'));
- chain.addAfter("B", "G", new EventOrderTestFilter('A'));
- chain.addAfter("D", "H", new EventOrderTestFilter('A'));
+ chain.add(new EventOrderTestFilter('A'));
+ chain.add(new EventOrderTestFilter('B'));
+ chain.add(0, new EventOrderTestFilter('C'));
+ chain.add(new EventOrderTestFilter('D'));
String actual = "";
- for (Entry e : chain.getAll()) {
- actual += e.getName();
+ for (IoFilter filter : chain) {
+ actual += filter.getName();
}
- assertEquals("FCAEBGDH", actual);
+ assertEquals("CABD", actual);
}
@Test
public void testGet() throws Exception {
- IoFilter filterA = new NoopFilter();
- IoFilter filterB = new NoopFilter();
- IoFilter filterC = new NoopFilter();
- IoFilter filterD = new NoopFilter();
+ IoFilter filterA = new NoopFilter("A");
+ IoFilter filterB = new NoopFilter("B");
+ IoFilter filterC = new NoopFilter("C");
+ IoFilter filterD = new NoopFilter("D");
- chain.addFirst("A", filterA);
- chain.addLast("B", filterB);
+ chain.add(filterA);
+ chain.add(filterB);
chain.addBefore("B", "C", filterC);
chain.addAfter("A", "D", filterD);