You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2013/01/28 20:46:56 UTC

[4/5] git commit: make example HTTP server works

make example HTTP server works


Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/6aa15441
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/6aa15441
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/6aa15441

Branch: refs/heads/trunk
Commit: 6aa154411c09497e4856999435d99dbbd2450f22
Parents: 469cb85
Author: jvermillard <jv...@apache.org>
Authored: Mon Jan 28 20:28:48 2013 +0100
Committer: jvermillard <jv...@apache.org>
Committed: Mon Jan 28 20:28:48 2013 +0100

----------------------------------------------------------------------
 .../org/apache/mina/examples/http/HttpTest.java    |   18 ++++++++------
 .../org/apache/mina/examples/http/HttpsTest.java   |   19 ++++++++------
 .../org/apache/mina/http/HttpServerDecoder.java    |    3 ++
 3 files changed, 24 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java b/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
index df6c020..504fbfe 100644
--- a/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
+++ b/examples/src/main/java/org/apache/mina/examples/http/HttpTest.java
@@ -29,11 +29,13 @@ import java.util.Map;
 import org.apache.mina.api.AbstractIoFilter;
 import org.apache.mina.api.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
+import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filterchain.ReadFilterChainController;
 import org.apache.mina.http.DateUtil;
 import org.apache.mina.http.HttpServerDecoder;
 import org.apache.mina.http.HttpServerEncoder;
 import org.apache.mina.http.api.DefaultHttpResponse;
+import org.apache.mina.http.api.HttpContentChunk;
 import org.apache.mina.http.api.HttpEndOfContent;
 import org.apache.mina.http.api.HttpMethod;
 import org.apache.mina.http.api.HttpPdu;
@@ -46,18 +48,18 @@ public class HttpTest {
 
     public static void main(String[] args) throws Exception {
 
-        NioTcpServer acceptor = new NioTcpServer();
-        acceptor.setFilters(/* new LoggingFilter("INCOMING"), */new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
-                HttpServerEncoder.class, HttpServerDecoder.class), /* new LoggingFilter("DECODED"), */
-                new DummyHttpSever());
+        NioTcpServer httpServer = new NioTcpServer();
+        httpServer.setReuseAddress(true);
+        httpServer.setFilters(new LoggingFilter("INCOMING"), new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
+                HttpServerEncoder.class, HttpServerDecoder.class), new LoggingFilter("DECODED"), new DummyHttpSever());
 
-        acceptor.getSessionConfig().setTcpNoDelay(true);
+        httpServer.getSessionConfig().setTcpNoDelay(true);
 
-        acceptor.bind(new InetSocketAddress(8080));
+        httpServer.bind(new InetSocketAddress(8080));
 
         // run for 20 seconds
         Thread.sleep(20000);
-        acceptor.unbind();
+        httpServer.unbind();
 
     }
 
@@ -99,7 +101,7 @@ public class HttpTest {
             // compute content len
             headers.put("Content-Length", String.valueOf(content.remaining()));
             session.write(new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SUCCESS_OK, headers));
-            session.write(content);
+            session.write(new HttpContentChunk(content));
             session.write(new HttpEndOfContent());
             session.close(false);
 

http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java b/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
index b9ff268..8404367 100644
--- a/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
+++ b/examples/src/main/java/org/apache/mina/examples/http/HttpsTest.java
@@ -28,13 +28,16 @@ import java.util.Map;
 
 import org.apache.mina.api.AbstractIoFilter;
 import org.apache.mina.api.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filterchain.ReadFilterChainController;
 import org.apache.mina.http.DateUtil;
-import org.apache.mina.http.HttpServerCodec;
+import org.apache.mina.http.HttpServerDecoder;
+import org.apache.mina.http.HttpServerEncoder;
 import org.apache.mina.http.api.DefaultHttpResponse;
 import org.apache.mina.http.api.HttpEndOfContent;
 import org.apache.mina.http.api.HttpMethod;
+import org.apache.mina.http.api.HttpPdu;
 import org.apache.mina.http.api.HttpRequest;
 import org.apache.mina.http.api.HttpStatus;
 import org.apache.mina.http.api.HttpVersion;
@@ -44,21 +47,21 @@ public class HttpsTest {
 
     public static void main(String[] args) throws Exception {
 
-        NioTcpServer acceptor = new NioTcpServer();
+        NioTcpServer httpServer = new NioTcpServer();
 
-        acceptor.setFilters(new LoggingFilter("INCOMING"), new HttpServerCodec(), new LoggingFilter("DECODED"),
-                new DummyHttpSever());
+        httpServer.setFilters(new LoggingFilter("INCOMING"), new ProtocolCodecFilter<HttpPdu, ByteBuffer>(
+                HttpServerEncoder.class, HttpServerDecoder.class), new LoggingFilter("DECODED"), new DummyHttpSever());
 
-        acceptor.getSessionConfig().setTcpNoDelay(true);
+        httpServer.getSessionConfig().setTcpNoDelay(true);
 
         // Make it use https, injecting a default SSLContext instance
-        acceptor.getSessionConfig().setSslContext(BogusSslContextFactory.getInstance(true));
+        httpServer.getSessionConfig().setSslContext(BogusSslContextFactory.getInstance(true));
 
-        acceptor.bind(new InetSocketAddress(8080));
+        httpServer.bind(new InetSocketAddress(8080));
 
         // run for 20 seconds
         Thread.sleep(20000);
-        acceptor.unbind();
+        httpServer.unbind();
 
     }
 

http://git-wip-us.apache.org/repos/asf/mina/blob/6aa15441/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
----------------------------------------------------------------------
diff --git a/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java b/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
index 0c4cf0f..2d53e02 100644
--- a/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
+++ b/http/src/main/java/org/apache/mina/http/HttpServerDecoder.java
@@ -79,6 +79,9 @@ public class HttpServerDecoder implements ProtocolDecoder<ByteBuffer, HttpPdu> {
     @Override
     public HttpPdu[] decode(ByteBuffer msg) throws ProtocolDecoderException {
         LOG.debug("decode : {}", msg);
+        if (msg.remaining() <= 0) {
+            return null;
+        }
         switch (state) {
         case HEAD:
             LOG.debug("decoding HEAD");