some doco and cleanup
git-svn-id: https://svn.apache.org/repos/asf/mina/asyncweb/trunk@615672 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/common/src/main/java/org/apache/asyncweb/common/HttpCodecFactory.java b/common/src/main/java/org/apache/asyncweb/common/HttpCodecFactory.java
index 6b021ac..211d502 100644
--- a/common/src/main/java/org/apache/asyncweb/common/HttpCodecFactory.java
+++ b/common/src/main/java/org/apache/asyncweb/common/HttpCodecFactory.java
@@ -19,35 +19,58 @@
*/
package org.apache.asyncweb.common;
+
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
+
/**
- * TODO HttpProtocolCodecFactory.
+ * A codec factory which creates new encoders and decoders for HTTP requests
+ * and responses, depending on the type of the IoService.
*
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev$, $Date$
*/
-public class HttpCodecFactory implements ProtocolCodecFactory {
-
- public HttpCodecFactory() {
- }
-
- public ProtocolEncoder getEncoder(IoSession session) throws Exception {
- if (session.getService() instanceof IoAcceptor) {
+public class HttpCodecFactory implements ProtocolCodecFactory
+{
+ /**
+ * Gets an HttpResponseEncoder if the IoService is an acceptor for a
+ * server, or an HttpRequestEncoder if the IoService is a connector for a
+ * client.
+ *
+ * @see ProtocolCodecFactory#getEncoder(IoSession)
+ */
+ public ProtocolEncoder getEncoder( IoSession session ) throws Exception
+ {
+ if ( session.getService() instanceof IoAcceptor )
+ {
return new HttpResponseEncoder();
- } else {
+ }
+ else
+ {
return new HttpRequestEncoder();
}
}
- public ProtocolDecoder getDecoder(IoSession session) throws Exception {
- if (session.getService() instanceof IoAcceptor) {
+
+ /**
+ * Gets an HttpRequestDecoder if the IoService is an acceptor for a
+ * server, or an HttpResponseDecoder if the IoService is a connector for a
+ * client.
+ *
+ * @see ProtocolCodecFactory#getDecoder(IoSession)
+ */
+ public ProtocolDecoder getDecoder( IoSession session ) throws Exception
+ {
+ if ( session.getService() instanceof IoAcceptor )
+ {
return new HttpRequestDecoder();
- } else {
+ }
+ else
+ {
return new HttpResponseDecoder();
}
}
diff --git a/common/src/main/java/org/apache/asyncweb/common/HttpRequestDecoder.java b/common/src/main/java/org/apache/asyncweb/common/HttpRequestDecoder.java
index 1207002..c49f212 100644
--- a/common/src/main/java/org/apache/asyncweb/common/HttpRequestDecoder.java
+++ b/common/src/main/java/org/apache/asyncweb/common/HttpRequestDecoder.java
@@ -19,24 +19,33 @@
*/
package org.apache.asyncweb.common;
+
import java.util.List;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
import org.apache.mina.filter.codec.statemachine.DecodingState;
import org.apache.mina.filter.codec.statemachine.DecodingStateProtocolDecoder;
+
/**
+ * An HttpRequest decoder.
+ *
* @author The Apache MINA Project (dev@mina.apache.org)
* @version $Rev$, $Date$
*/
-public class HttpRequestDecoder extends DecodingStateProtocolDecoder {
- public HttpRequestDecoder() {
- super(new HttpRequestDecodingState() {
+public class HttpRequestDecoder extends DecodingStateProtocolDecoder
+{
+ public HttpRequestDecoder()
+ {
+ super( new HttpRequestDecodingState()
+ {
@Override
protected DecodingState finishDecode(List<Object> childProducts,
- ProtocolDecoderOutput out) throws Exception {
- for (Object m: childProducts) {
- out.write(m);
+ ProtocolDecoderOutput out) throws Exception
+ {
+ for ( Object m: childProducts )
+ {
+ out.write( m );
}
return null;
}
diff --git a/server/src/main/java/org/apache/asyncweb/server/transport/mina/DefaultHttpIoHandler.java b/server/src/main/java/org/apache/asyncweb/server/transport/mina/DefaultHttpIoHandler.java
index bd5fee1..9ef40f1 100644
--- a/server/src/main/java/org/apache/asyncweb/server/transport/mina/DefaultHttpIoHandler.java
+++ b/server/src/main/java/org/apache/asyncweb/server/transport/mina/DefaultHttpIoHandler.java
@@ -19,43 +19,57 @@
*/
package org.apache.asyncweb.server.transport.mina;
+
import org.apache.mina.common.IoSession;
import org.apache.mina.handler.multiton.SingleSessionIoHandler;
import org.apache.mina.handler.multiton.SingleSessionIoHandlerDelegate;
import org.apache.mina.handler.multiton.SingleSessionIoHandlerFactory;
import org.apache.asyncweb.server.ServiceContainer;
+
/**
- * @author trustin
+ * The default HttpIoHandler used when one is not provided.
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev$, $Date$
*/
-public class DefaultHttpIoHandler extends SingleSessionIoHandlerDelegate
- implements HttpIoHandler {
-
- public DefaultHttpIoHandler() {
- super(new Factory());
+public class DefaultHttpIoHandler extends SingleSessionIoHandlerDelegate implements HttpIoHandler
+{
+ public DefaultHttpIoHandler()
+ {
+ super( new Factory() );
}
- public ServiceContainer getContainer() {
- return ((Factory) getFactory()).getContainer();
+
+ public ServiceContainer getContainer()
+ {
+ return ( ( Factory ) getFactory() ).getContainer();
}
- public void setContainer(ServiceContainer container) {
- ((Factory) getFactory()).setContainer(container);
+
+ public void setContainer( ServiceContainer container )
+ {
+ ( ( Factory ) getFactory() ).setContainer( container );
}
- private static class Factory implements SingleSessionIoHandlerFactory {
+
+ private static class Factory implements SingleSessionIoHandlerFactory
+ {
private ServiceContainer container;
- public ServiceContainer getContainer() {
+ public ServiceContainer getContainer()
+ {
return container;
}
- public void setContainer(ServiceContainer container) {
+ public void setContainer( ServiceContainer container )
+ {
this.container = container;
}
- public SingleSessionIoHandler getHandler(IoSession session) {
- return new SingleHttpSessionIoHandler(container, session);
+ public SingleSessionIoHandler getHandler( IoSession session )
+ {
+ return new SingleHttpSessionIoHandler( container, session );
}
}
}
diff --git a/server/src/main/java/org/apache/asyncweb/server/transport/mina/HttpIoHandler.java b/server/src/main/java/org/apache/asyncweb/server/transport/mina/HttpIoHandler.java
index d4c65fd..2ac81fe 100644
--- a/server/src/main/java/org/apache/asyncweb/server/transport/mina/HttpIoHandler.java
+++ b/server/src/main/java/org/apache/asyncweb/server/transport/mina/HttpIoHandler.java
@@ -19,16 +19,24 @@
*/
package org.apache.asyncweb.server.transport.mina;
+
import org.apache.mina.common.IoHandler;
import org.apache.asyncweb.server.ServiceContainer;
-public interface HttpIoHandler extends IoHandler {
+/**
+ * IO handler extension for HTTP.
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface HttpIoHandler extends IoHandler
+{
/**
* Associates this handler with the container it should dispatch requests
- * to
+ * to.
*
- * @param container The associated container
+ * @param container the associated container
*/
- void setContainer( ServiceContainer container);
+ void setContainer( ServiceContainer container );
}
diff --git a/server/src/main/java/org/apache/asyncweb/server/transport/mina/MinaTransport.java b/server/src/main/java/org/apache/asyncweb/server/transport/mina/MinaTransport.java
index e4e3d02..09c3a29 100644
--- a/server/src/main/java/org/apache/asyncweb/server/transport/mina/MinaTransport.java
+++ b/server/src/main/java/org/apache/asyncweb/server/transport/mina/MinaTransport.java
@@ -19,6 +19,7 @@
*/
package org.apache.asyncweb.server.transport.mina;
+
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
@@ -35,12 +36,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* A <code>Transport</code> implementation which receives requests and sends
* responses using non-blocking selector based IO.
*
- * @author irvingd
- *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev$, $Date$
*/
public class MinaTransport implements Transport
{
@@ -61,7 +63,7 @@
private int port = DEFAULT_PORT;
- private String address = null;
+ private String address;
private int ioThreads = DEFAULT_IO_THREADS;
@@ -69,19 +71,22 @@
private HttpIoHandler ioHandler;
- private boolean isLoggingTraffic = false;
+ private boolean isLoggingTraffic;
private ServiceContainer container;
+
/**
* Sets the port this transport will listen on
*
* @param port The port
*/
- public void setPort(int port) {
+ public void setPort( int port )
+ {
this.port = port;
}
+
/**
* Sets the address this transport will listen on
*
@@ -89,17 +94,22 @@
* Specify <tt>null</tt> or <tt>"*"</tt> to listen to all
* NICs (Network Interface Cards).
*/
- public void setAddress(String address) {
- if ("*".equals(address)) {
+ public void setAddress( String address )
+ {
+ if ( "*".equals( address ) )
+ {
address = null;
}
this.address = address;
}
- public int getIoThreads() {
+
+ public int getIoThreads()
+ {
return ioThreads;
}
+
/**
* Sets the number of worker threads employed by this transport.
* This should typically be a small number (2 is a good choice) -
@@ -108,95 +118,120 @@
*
* @param ioThreads The number of worker threads to employ
*/
- public void setIoThreads(int ioThreads) {
+ public void setIoThreads( int ioThreads )
+ {
this.ioThreads = ioThreads;
}
- public int getEventThreads() {
+
+ public int getEventThreads()
+ {
return eventThreads;
}
- public void setEventThreads(int eventThreads) {
+
+ public void setEventThreads (int eventThreads )
+ {
this.eventThreads = eventThreads;
}
+
/**
* Sets whether traffic received through this transport is
* logged (off by default)
*
* @param isLoggingTraffic <code>true</code> iff traffic should be logged
*/
- public void setIsLoggingTraffic(boolean isLoggingTraffic) {
+ public void setIsLoggingTraffic( boolean isLoggingTraffic )
+ {
this.isLoggingTraffic = isLoggingTraffic;
}
+
/**
* Sets the <code>ServiceContainer</code> to which we issue requests
*
* @param container Our associated <code>ServiceContainer</code>
*/
- public void setServiceContainer( ServiceContainer container) {
+ public void setServiceContainer( ServiceContainer container)
+ {
this.container = container;
}
+
/**
* Sets the <code>HttpIOHandler</code> to be employed by this transport
*
* @param httpIOHandler The handler to be employed by this transport
*/
- public void setIoHandler(HttpIoHandler httpIOHandler) {
+ public void setIoHandler( HttpIoHandler httpIOHandler )
+ {
this.ioHandler = httpIOHandler;
}
+
/**
* Starts this transport
*
* @throws TransportException If the transport can not be started
*/
- public void start() throws TransportException {
+ public void start() throws TransportException
+ {
initIOHandler();
- acceptor = new NioSocketAcceptor(ioThreads);
- eventExecutor = new OrderedThreadPoolExecutor(this.eventThreads);
+ acceptor = new NioSocketAcceptor( ioThreads );
+ eventExecutor = new OrderedThreadPoolExecutor( this.eventThreads );
boolean success = false;
try {
- acceptor.getFilterChain().addLast("threadPool",
- new ExecutorFilter(eventExecutor));
- acceptor.setReuseAddress(true);
- acceptor.getSessionConfig().setReuseAddress(true);
- if (isLoggingTraffic) {
- LOG.info("Configuring traffic logging filter");
+ acceptor.getFilterChain().addLast( "threadPool", new ExecutorFilter( eventExecutor ) );
+ acceptor.setReuseAddress( true );
+ acceptor.getSessionConfig().setReuseAddress( true );
+
+ if ( isLoggingTraffic )
+ {
+ LOG.info( "Configuring traffic logging filter" );
IoFilter filter = new LoggingFilter();
- acceptor.getFilterChain().addFirst("LoggingFilter", filter);
+ acceptor.getFilterChain().addFirst( "LoggingFilter", filter );
}
- acceptor.setBacklog(100);
- acceptor.setHandler(ioHandler);
+ // TODO make this configurable instead of hardcoding like this
+ acceptor.setBacklog( 100 );
+ acceptor.setHandler( ioHandler );
- if (address != null) {
- acceptor.bind(new InetSocketAddress(address, port));
- } else {
- acceptor.bind(new InetSocketAddress(port));
+ if ( address != null )
+ {
+ acceptor.bind( new InetSocketAddress( address, port ) );
+ }
+ else
+ {
+ acceptor.bind( new InetSocketAddress( port ) );
}
success = true;
- LOG.info("NIO HTTP Transport bound on port " + port);
- } catch (IOException e) {
- throw new TransportException("NIOTransport Failed to bind to port "
- + port, e);
- } finally {
- if (!success) {
+ LOG.info( "NIO HTTP Transport bound on port " + port );
+ }
+ catch ( IOException e )
+ {
+ throw new TransportException( "NIOTransport Failed to bind to port " + port, e );
+ }
+ finally
+ {
+ if ( !success )
+ {
acceptor.dispose();
acceptor = null;
}
}
}
+
/**
* Stops this transport
*/
- public void stop() throws TransportException {
- if (acceptor == null) {
+ public void stop() throws TransportException
+ {
+ if ( acceptor == null )
+ {
return;
}
@@ -206,14 +241,17 @@
eventExecutor = null;
}
+
/**
* @return A string representation of this transport
*/
@Override
- public String toString() {
+ public String toString()
+ {
return "NIOTransport [port=" + port + "]";
}
+
/**
* Initializes our handler - creating a new (default) handler if none has
* been specified
@@ -221,15 +259,19 @@
* @throws IllegalStateException If we have not yet been associated with a
* container
*/
- private void initIOHandler() {
- if (ioHandler == null) {
- LOG.info("No http IO Handler associated - using defaults");
+ private void initIOHandler()
+ {
+ if ( ioHandler == null )
+ {
+ LOG.info( "No http IO Handler associated - using defaults" );
ioHandler = new DefaultHttpIoHandler();
}
- if (container == null) {
- throw new IllegalStateException(
- "Transport not associated with a container");
+
+ if ( container == null )
+ {
+ throw new IllegalStateException( "Transport not associated with a container" );
}
- ioHandler.setContainer(container);
+
+ ioHandler.setContainer( container );
}
}
diff --git a/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java b/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java
index 9da129d..9227296 100644
--- a/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java
+++ b/server/src/main/java/org/apache/asyncweb/server/transport/mina/SingleHttpSessionIoHandler.java
@@ -19,6 +19,7 @@
*/
package org.apache.asyncweb.server.transport.mina;
+
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -50,86 +51,91 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SingleHttpSessionIoHandler implements SingleSessionIoHandler {
- private static final Logger LOG = LoggerFactory
- .getLogger(SingleHttpSessionIoHandler.class);
+public class SingleHttpSessionIoHandler implements SingleSessionIoHandler
+{
+ private static final Logger LOG = LoggerFactory.getLogger( SingleHttpSessionIoHandler.class );
- /**
- * The number of parsers we pre-allocate
- */
- // private static final int DEFAULT_PARSERS = 5;
- /**
- * The default idle time
- */
+ /** the default idle time */
private static final int DEFAULT_IDLE_TIME = 30000;
- /**
- * Out default pipeline
- */
+ /** out default pipeline */
private static final int DEFAULT_PIPELINE = 100;
+ /** the HttpService container **/
private final ServiceContainer container;
+ /** the session bound to this single session handler */
protected final IoSession session;
+ /** the request pipeline */
private final RequestPipeline pipeline;
+ /** the current context being processed */
private HttpServiceContext currentContext;
+ /** idle time for request reads */
private int readIdleTime = DEFAULT_IDLE_TIME;
- public SingleHttpSessionIoHandler( ServiceContainer container, IoSession session) {
+
+ public SingleHttpSessionIoHandler( ServiceContainer container, IoSession session )
+ {
this.container = container;
this.session = session;
- this.pipeline = new StandardRequestPipeline(DEFAULT_PIPELINE);
+ this.pipeline = new StandardRequestPipeline( DEFAULT_PIPELINE );
- session.getConfig().setIdleTime(IdleStatus.READER_IDLE, readIdleTime);
-
- session.getFilterChain().addLast("codec",
- new ProtocolCodecFilter(new HttpCodecFactory()));
-
- session.getFilterChain().addLast("converter", new ContextConverter());
-
- session.getFilterChain().addLast("pipeline",
- new RequestPipelineAdapter(pipeline));
+ session.getConfig().setIdleTime( IdleStatus.READER_IDLE, readIdleTime );
+ session.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new HttpCodecFactory() ) );
+ session.getFilterChain().addLast( "converter", new ContextConverter() );
+ session.getFilterChain().addLast( "pipeline", new RequestPipelineAdapter( pipeline ) );
int i = 0;
- for (HttpServiceFilter serviceFilter : container.getServiceFilters()) {
- session.getFilterChain().addLast("serviceFilter." + i++,
- new ServiceFilterAdapter(serviceFilter));
+ for ( HttpServiceFilter serviceFilter : container.getServiceFilters() )
+ {
+ session.getFilterChain().addLast( "serviceFilter." + i++, new ServiceFilterAdapter( serviceFilter ) );
}
}
- public void sessionCreated() {
+
+ public void sessionCreated()
+ {
+ LOG.info( "Session created" );
}
- public void sessionOpened() {
- LOG.info("Connection opened");
+
+ public void sessionOpened()
+ {
+ LOG.info( "Connection opened" );
}
- public void sessionClosed() {
- LOG.info("Connection closed");
+
+ public void sessionClosed()
+ {
+ LOG.info( "Connection closed" );
}
+
/**
* Invoked when this connection idles out.
* If we are in the process of parsing a request, the current request
* is rejected with a {@link HttpResponseStatus#REQUEST_TIMEOUT} response status.
- *
*/
- public void sessionIdle(IdleStatus idleType) {
- if (session.getIdleCount(idleType) == 1) {
+ public void sessionIdle( IdleStatus idleType )
+ {
+ if ( session.getIdleCount( idleType ) == 1 )
+ {
// // FIXME currentRequest is always null now; we need to cooperate with a decoder.
// if (currentContext != null) {
// LOG.info("Read idled out while parsing request. Scheduling timeout response");
// handleReadFailure(currentContext, HttpResponseStatus.REQUEST_TIMEOUT, "Timeout while reading request");
// } else {
- LOG
- .info("Idled with no current request. Scheduling closure when pipeline empties");
- pipeline.runWhenEmpty(new Runnable() {
- public void run() {
- LOG.info("Pipeline empty after idle. Closing session");
+ LOG.info( "Idled with no current request. Scheduling closure when pipeline empties" );
+
+ pipeline.runWhenEmpty( new Runnable()
+ {
+ public void run()
+ {
+ LOG.info( "Pipeline empty after idle. Closing session" );
session.close();
}
});
@@ -137,40 +143,57 @@
}
}
- public void exceptionCaught(Throwable cause) {
+
+ public void exceptionCaught( Throwable cause )
+ {
MutableHttpResponse response = null;
- if (cause instanceof ProtocolDecoderException) {
+
+ if ( cause instanceof ProtocolDecoderException )
+ {
HttpResponseStatus status;
- if (cause instanceof HttpRequestDecoderException) {
- status = ((HttpRequestDecoderException) cause).getResponseStatus();
- } else {
+
+ if ( cause instanceof HttpRequestDecoderException )
+ {
+ status = ( ( HttpRequestDecoderException ) cause ).getResponseStatus();
+ }
+ else
+ {
status = HttpResponseStatus.BAD_REQUEST;
}
- LOG.warn("Bad request:", cause);
+ LOG.warn( "Bad request:", cause );
response = new DefaultHttpResponse();
- response.setProtocolVersion(HttpVersion.HTTP_1_1);
- response.setStatus(status);
- } else if (cause instanceof IOException) {
- LOG.warn("IOException on HTTP connection", cause);
- session.close();
- } else {
- response = new DefaultHttpResponse();
- response.setProtocolVersion(HttpVersion.HTTP_1_1);
- response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
- LOG.warn("Unexpected exception from a service.", cause);
+ response.setProtocolVersion( HttpVersion.HTTP_1_1 );
+ response.setStatus( status );
}
- if (response != null) {
+ else if ( cause instanceof IOException )
+ {
+ LOG.warn( "IOException on HTTP connection", cause );
+ session.close();
+ }
+ else
+ {
+ response = new DefaultHttpResponse();
+ response.setProtocolVersion( HttpVersion.HTTP_1_1 );
+ response.setStatus( HttpResponseStatus.INTERNAL_SERVER_ERROR );
+ LOG.error( "Unexpected exception from a service.", cause );
+ }
+
+ if ( response != null )
+ {
HttpServiceContext context = this.currentContext;
- if (context == null) {
- context = createContext(new DefaultHttpRequest());
+ if ( context == null )
+ {
+ context = createContext( new DefaultHttpRequest() );
}
- context.commitResponse(response);
+ context.commitResponse( response );
}
}
- public void messageReceived(Object message) {
+
+ public void messageReceived( Object message )
+ {
// FIXME messageReceived invoked only when whole message is built.
// When headers were built
@@ -179,26 +202,31 @@
// When body has been built
}
+
/**
* Invoked when we fail to parse an incoming request.
* We configure our parser to discard any further data received from the client,
* and schedule a response with the appropriate failure code for the
* current request
*
- * @param status The status
- * @param message Failure message
+ * @param context the service context
+ * @param status the status
+ * @param message failure message
*/
- private void handleReadFailure(HttpServiceContext context,
- HttpResponseStatus status, String message) {
- if (LOG.isInfoEnabled()) {
- LOG.info("Failed to handle client request. Reason: " + status);
+ private void handleReadFailure( HttpServiceContext context, HttpResponseStatus status, String message )
+ {
+ if ( LOG.isInfoEnabled() )
+ {
+ LOG.info( "Failed to handle client request. Reason: " + status );
}
+
MutableHttpResponse response = new DefaultHttpResponse();
- response.setStatusReasonPhrase(message);
- response.setStatus(status);
- context.commitResponse(response);
+ response.setStatusReasonPhrase( message );
+ response.setStatus( status );
+ context.commitResponse( response );
}
+
/**
* Invoked when data wrote has been fully written.
* If we have scheduled closure after sending a final response, we will
@@ -208,83 +236,96 @@
* @param message The marker provided when writing data. If this is
* our closure marker, we schedule closure of the connection
*/
- public void messageSent(Object message) {
+ public void messageSent( Object message )
+ {
}
+
/**
* Sets the read idle time for all connections
*
* @param readIdleTime The read idle time (seconds)
*/
- public void setReadIdleTime(int readIdleTime) {
+ public void setReadIdleTime( int readIdleTime )
+ {
this.readIdleTime = readIdleTime;
}
- protected HttpServiceContext createContext(HttpRequest request) {
- return new DefaultHttpServiceContext(request);
+
+ protected HttpServiceContext createContext( HttpRequest request )
+ {
+ return new DefaultHttpServiceContext( request );
}
- private class ContextConverter extends IoFilterAdapter {
+ private class ContextConverter extends IoFilterAdapter
+ {
@Override
- public void filterWrite(NextFilter nextFilter, IoSession session,
- WriteRequest writeRequest) throws Exception {
- nextFilter.filterWrite(session, new DefaultWriteRequest(
- ((HttpServiceContext) writeRequest.getMessage())
+ public void filterWrite( NextFilter nextFilter, IoSession session, WriteRequest writeRequest ) throws Exception
+ {
+ nextFilter.filterWrite( session, new DefaultWriteRequest(
+ ( ( HttpServiceContext ) writeRequest.getMessage() )
.getCommittedResponse(), writeRequest.getFuture()));
}
@Override
- public void messageReceived(NextFilter nextFilter, IoSession session,
- Object message) throws Exception {
+ public void messageReceived( NextFilter nextFilter, IoSession session, Object message ) throws Exception
+ {
HttpRequest request = ( HttpRequest ) message;
- HttpServiceContext context = createContext(request);
+ HttpServiceContext context = createContext( request );
currentContext = context;
- nextFilter.messageReceived(session, context);
+ nextFilter.messageReceived( session, context );
}
}
- private class ServiceFilterAdapter extends IoFilterAdapter {
+
+ private class ServiceFilterAdapter extends IoFilterAdapter
+ {
private final HttpServiceFilter filter;
- public ServiceFilterAdapter(HttpServiceFilter filter) {
+ public ServiceFilterAdapter( HttpServiceFilter filter )
+ {
this.filter = filter;
}
@Override
- public void messageReceived(final NextFilter nextFilter,
- final IoSession session, final Object message) throws Exception {
- HttpServiceFilter.NextFilter nextFilterAdapter = new HttpServiceFilter.NextFilter() {
- public void invoke() {
+ public void messageReceived( final NextFilter nextFilter,
+ final IoSession session, final Object message ) throws Exception
+ {
+ HttpServiceFilter.NextFilter nextFilterAdapter = new HttpServiceFilter.NextFilter()
+ {
+ public void invoke()
+ {
nextFilter.messageReceived(session, message);
}
};
- filter.handleRequest(nextFilterAdapter,
- (HttpServiceContext) message);
+ filter.handleRequest( nextFilterAdapter, ( HttpServiceContext ) message );
}
@Override
- public void filterWrite(final NextFilter nextFilter,
- final IoSession session, final WriteRequest writeRequest)
- throws Exception {
- HttpServiceFilter.NextFilter nextFilterAdapter = new HttpServiceFilter.NextFilter() {
- public void invoke() {
- nextFilter.filterWrite(session, writeRequest);
+ public void filterWrite( final NextFilter nextFilter, final IoSession session, final WriteRequest writeRequest )
+ throws Exception
+ {
+ HttpServiceFilter.NextFilter nextFilterAdapter = new HttpServiceFilter.NextFilter()
+ {
+ public void invoke()
+ {
+ nextFilter.filterWrite( session, writeRequest );
}
};
- HttpServiceContext context = (HttpServiceContext) writeRequest
- .getMessage();
-
- filter.handleResponse(nextFilterAdapter, context);
+ HttpServiceContext context = ( HttpServiceContext ) writeRequest.getMessage();
+ filter.handleResponse( nextFilterAdapter, context );
}
}
- private class RequestPipelineAdapter extends IoFilterAdapter {
+ private class RequestPipelineAdapter extends IoFilterAdapter
+ {
private final RequestPipeline pipeline;
- public RequestPipelineAdapter(final RequestPipeline pipeline) {
+ public RequestPipelineAdapter( final RequestPipeline pipeline )
+ {
this.pipeline = pipeline;
}
@@ -330,32 +371,39 @@
}
}
- private class DefaultHttpServiceContext extends AbstractHttpServiceContext {
+
+ private class DefaultHttpServiceContext extends AbstractHttpServiceContext
+ {
private WriteFuture writeFuture;
- private DefaultHttpServiceContext(HttpRequest request) {
- super((InetSocketAddress) session.getRemoteAddress(), request,
- container);
+ private DefaultHttpServiceContext( HttpRequest request )
+ {
+ super( ( InetSocketAddress ) session.getRemoteAddress(), request, container );
}
- private WriteFuture getWriteFuture() {
+ private WriteFuture getWriteFuture()
+ {
return writeFuture;
}
- private void setWriteFuture(WriteFuture writeFuture) {
- if (!isResponseCommitted()) {
+ private void setWriteFuture( WriteFuture writeFuture )
+ {
+ if ( ! isResponseCommitted() )
+ {
throw new IllegalStateException();
}
this.writeFuture = writeFuture;
}
@Override
- protected void doWrite(boolean requiresClosure) {
+ protected void doWrite( boolean requiresClosure )
+ {
currentContext = null;
- WriteFuture future = session.write(this);
- if (requiresClosure) {
- LOG.debug("Added CLOSE future listener.");
- future.addListener(IoFutureListener.CLOSE);
+ WriteFuture future = session.write( this );
+ if ( requiresClosure )
+ {
+ LOG.debug( "Added CLOSE future listener." );
+ future.addListener( IoFutureListener.CLOSE );
}
}
}