You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2011/09/30 15:34:08 UTC
svn commit: r1177652 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server:
FileServlet.java HttpProcessor.java MicroKernelServlet.java Response.java
Server.java
Author: dpfister
Date: Fri Sep 30 13:34:07 2011
New Revision: 1177652
URL: http://svn.apache.org/viewvc?rev=1177652&view=rev
Log:
HTTP interface to microkernel
- simplify "servlets"
- use logical && instead of &
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/FileServlet.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/HttpProcessor.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Response.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Server.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/FileServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/FileServlet.java?rev=1177652&r1=1177651&r2=1177652&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/FileServlet.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/FileServlet.java Fri Sep 30 13:34:07 2011
@@ -26,6 +26,12 @@ import org.apache.jackrabbit.mk.util.IOU
* File servlet that will deliver static resources.
*/
class FileServlet implements Servlet {
+
+ /** The one and only instance of this servlet. */
+ public static FileServlet INSTANCE = new FileServlet();
+
+ /** Just one instance, no need to make constructor public */
+ private FileServlet() {}
public void service(Request request, Response response) throws IOException {
String file = request.getFile();
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/HttpProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/HttpProcessor.java?rev=1177652&r1=1177651&r2=1177652&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/HttpProcessor.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/HttpProcessor.java Fri Sep 30 13:34:07 2011
@@ -105,8 +105,8 @@ class HttpProcessor {
throw e;
}
try {
- boolean keepAlive = request.isKeepAlive();
- keepAlive &= (requestNum + 1 < MAX_KEEP_ALIVE_REQUESTS);
+ boolean keepAlive = request.isKeepAlive() &&
+ (requestNum + 1 < MAX_KEEP_ALIVE_REQUESTS);
response = new Response(socketOut, keepAlive);
servlet.service(request, response);
return keepAlive;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java?rev=1177652&r1=1177651&r2=1177652&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java Fri Sep 30 13:34:07 2011
@@ -22,7 +22,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.api.MicroKernelException;
@@ -33,37 +32,34 @@ import org.apache.jackrabbit.mk.util.IOU
/**
* Servlet handling requests directed at a <code>MicroKernel</code> instance.
*/
-class MicroKernelServlet implements Servlet {
+class MicroKernelServlet {
- private final AtomicReference<MicroKernel> mkref;
+ /** The one and only instance of this servlet. */
+ public static MicroKernelServlet INSTANCE = new MicroKernelServlet();
- public MicroKernelServlet(AtomicReference<MicroKernel> mkref) {
- this.mkref = mkref;
- }
+ /** Just one instance, no need to make constructor public */
+ private MicroKernelServlet() {}
- public void service(Request request, Response response) throws IOException {
+ public void service(MicroKernel mk, Request request, Response response) throws IOException {
String file = request.getFile();
int dotIndex = file.indexOf('.');
if (dotIndex == -1) {
dotIndex = file.length();
}
Command command = COMMANDS.get(file.substring(1, dotIndex));
- if (command != null) {
- MicroKernel mk = mkref.get();
- if (mk != null) {
- try {
- command.execute(mk, request, response);
- } catch (MicroKernelException e) {
- response.setStatusCode(500);
- response.setContentType("text/plain");
- e.printStackTrace(new PrintStream(response.getOutputStream()));
- } catch (Throwable e) {
- response.setStatusCode(500);
- response.setContentType("text/plain");
- e.printStackTrace(new PrintStream(response.getOutputStream()));
- }
- return;
+ if (command != null && mk != null) {
+ try {
+ command.execute(mk, request, response);
+ } catch (MicroKernelException e) {
+ response.setStatusCode(500);
+ response.setContentType("text/plain");
+ e.printStackTrace(new PrintStream(response.getOutputStream()));
+ } catch (Throwable e) {
+ response.setStatusCode(500);
+ response.setContentType("text/plain");
+ e.printStackTrace(new PrintStream(response.getOutputStream()));
}
+ return;
}
response.setStatusCode(404);
}
@@ -89,7 +85,7 @@ class MicroKernelServlet implements Serv
COMMANDS.put("write", new Write());
}
- static class GetHeadRevision implements Command {
+ private static class GetHeadRevision implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -99,7 +95,7 @@ class MicroKernelServlet implements Serv
}
}
- static class GetRevisions implements Command {
+ private static class GetRevisions implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -116,7 +112,7 @@ class MicroKernelServlet implements Serv
}
}
- static class WaitForCommit implements Command {
+ private static class WaitForCommit implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -139,7 +135,7 @@ class MicroKernelServlet implements Serv
}
}
- static class GetJournal implements Command {
+ private static class GetJournal implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -158,7 +154,7 @@ class MicroKernelServlet implements Serv
}
}
- static class NodeExists implements Command {
+ private static class NodeExists implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -173,7 +169,7 @@ class MicroKernelServlet implements Serv
}
}
- static class GetNodes implements Command {
+ private static class GetNodes implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -195,7 +191,7 @@ class MicroKernelServlet implements Serv
}
}
- static class Commit implements Command {
+ private static class Commit implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -214,7 +210,7 @@ class MicroKernelServlet implements Serv
}
}
- static class GetLength implements Command {
+ private static class GetLength implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -227,7 +223,7 @@ class MicroKernelServlet implements Serv
}
}
- static class Read implements Command {
+ private static class Read implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
@@ -252,7 +248,7 @@ class MicroKernelServlet implements Serv
}
}
- static class Write implements Command {
+ private static class Write implements Command {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Response.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Response.java?rev=1177652&r1=1177651&r2=1177652&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Response.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Response.java Fri Sep 30 13:34:07 2011
@@ -211,7 +211,7 @@ class Response implements Closeable {
private class BodyOutputStream extends OutputStream {
/**
- * Buffer size chosen intentionally to need exceed maximum chunk
+ * Buffer size chosen intentionally to not exceed maximum chunk
* size we'd like to transmit.
*/
private final byte[] buf = new byte[0xFFFF];
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Server.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Server.java?rev=1177652&r1=1177651&r2=1177652&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Server.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/Server.java Fri Sep 30 13:34:07 2011
@@ -36,8 +36,6 @@ public class Server {
private AtomicReference<MicroKernel> mkref;
- private MicroKernelServlet mkServlet;
-
private AtomicBoolean started = new AtomicBoolean();
private AtomicBoolean stopped = new AtomicBoolean();
@@ -55,8 +53,6 @@ public class Server {
*/
public Server(MicroKernel mk) {
this.mkref = new AtomicReference<MicroKernel>(mk);
-
- mkServlet = new MicroKernelServlet(mkref);
}
/**
@@ -141,15 +137,13 @@ public class Server {
*/
class ServletImpl implements Servlet {
- private final Servlet fileServlet = new FileServlet();
-
public void service(Request request, Response response)
throws IOException {
if (request.getMethod().equals("POST")) {
- mkServlet.service(request, response);
+ MicroKernelServlet.INSTANCE.service(mkref.get(), request, response);
} else {
- fileServlet.service(request, response);
+ FileServlet.INSTANCE.service(request, response);
}
}
}