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/12 15:46:31 UTC
svn commit: r1169743 - in /jackrabbit/sandbox/microkernel/src/main:
java/org/apache/jackrabbit/mk/server/
resources/org/apache/jackrabbit/mk/server/
Author: dpfister
Date: Mon Sep 12 13:46:31 2011
New Revision: 1169743
URL: http://svn.apache.org/viewvc?rev=1169743&view=rev
Log:
HTTP interface to microkernel
- add getLength/read/waitForCommit
Added:
jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getLength.html
jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/read.html
- copied, changed from r1169728, jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/write.html
jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/waitForCommit.html
- copied, changed from r1169728, jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getRevisions.html
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java
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=1169743&r1=1169742&r2=1169743&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 Mon Sep 12 13:46:31 2011
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.mk.server;
import java.io.IOException;
import java.io.PrintStream;
import java.io.InputStream;
+import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
@@ -74,10 +75,13 @@ class MicroKernelServlet implements Serv
static {
COMMANDS.put("getHeadRevision", new GetHeadRevision());
COMMANDS.put("getRevisions", new GetRevisions());
+ COMMANDS.put("waitForCommit", new WaitForCommit());
COMMANDS.put("getJournal", new GetJournal());
COMMANDS.put("nodeExists", new NodeExists());
COMMANDS.put("getNodes", new GetNodes());
COMMANDS.put("commit", new Commit());
+ COMMANDS.put("getLength", new GetLength());
+ COMMANDS.put("read", new Read());
COMMANDS.put("write", new Write());
}
@@ -102,6 +106,27 @@ class MicroKernelServlet implements Serv
}
}
+ static class WaitForCommit implements Command {
+
+ public void execute(MicroKernel mk, Request request, Response response)
+ throws IOException, MicroKernelException {
+
+ String headRevision = mk.getHeadRevision();
+
+ String oldHead = request.getParameter("old_revision_id", headRevision);
+ long maxWaitMillis = request.getParameter("max_wait_millis", 0L);
+
+ String currentHead;
+
+ try {
+ currentHead = mk.waitForCommit(oldHead, maxWaitMillis);
+ } catch (InterruptedException e) {
+ throw new MicroKernelException(e);
+ }
+ response.getOutputStream().write(currentHead.getBytes());
+ }
+ }
+
static class GetJournal implements Command {
public void execute(MicroKernel mk, Request request, Response response)
@@ -164,6 +189,38 @@ class MicroKernelServlet implements Serv
}
}
+ static class GetLength implements Command {
+
+ public void execute(MicroKernel mk, Request request, Response response)
+ throws IOException, MicroKernelException {
+
+ String blobId = request.getParameter("blob_id");
+ long length = mk.getLength(blobId);
+ response.getOutputStream().write(Long.toString(length).getBytes());
+ }
+ }
+
+ static class Read implements Command {
+
+ public void execute(MicroKernel mk, Request request, Response response)
+ throws IOException, MicroKernelException {
+
+ String blobId = request.getParameter("blob_id");
+ OutputStream out = response.getOutputStream();
+ byte[] buf = new byte[8192];
+ long pos = 0;
+
+ for (;;) {
+ int count = mk.read(blobId, pos, buf, 0, buf.length);
+ if (count == -1) {
+ break;
+ }
+ out.write(buf, 0, count);
+ pos += count;
+ }
+ }
+ }
+
static class Write implements Command {
public void execute(MicroKernel mk, Request request, Response response)
Added: jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getLength.html
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getLength.html?rev=1169743&view=auto
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getLength.html (added)
+++ jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getLength.html Mon Sep 12 13:46:31 2011
@@ -0,0 +1,27 @@
+<html>
+<head>
+<title>µicroKernel prototype: getLength</title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" type="text/css" href="main.css"/>
+</head>
+
+<body>
+ <script src="header.js"></script>
+ <div class="content">
+ <h1>Blob Operations: getLength</h1>
+ <form method="POST" target="result">
+ <table class="formtable">
+ <tr>
+ <td>Blob ID</td>
+ <td><input class="text" type="text" name="blob_id" id="blob_id" value=""></td>
+ </tr>
+ <tr><td> </td><td>
+ <input type="submit"><br></td></tr></table>
+ </form>
+ <p>
+ <iframe name="result" height="400" width="950" src="about:blank"></iframe>
+ </p>
+ <script src="footer.js"></script>
+ </div>
+</body>
+</html>
Copied: jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/read.html (from r1169728, jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/write.html)
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/read.html?p2=jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/read.html&p1=jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/write.html&r1=1169728&r2=1169743&rev=1169743&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/write.html (original)
+++ jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/read.html Mon Sep 12 13:46:31 2011
@@ -1,6 +1,6 @@
<html>
<head>
-<title>µicroKernel prototype: write</title>
+<title>µicroKernel prototype: read</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>
@@ -8,12 +8,12 @@
<body>
<script src="header.js"></script>
<div class="content">
- <h1>Blob Operations: write</h1>
- <form method="POST" enctype="multipart/form-data" target="result">
+ <h1>Blob Operations: read</h1>
+ <form method="POST" target="result">
<table class="formtable">
<tr>
- <td>File</td>
- <td><input class="file" type="file" name="file" id="file"/></td>
+ <td>Blob ID</td>
+ <td><input class="text" type="text" name="blob_id" id="blob_id" value=""></td>
</tr>
<tr><td> </td><td>
<input type="submit"><br></td></tr></table>
Copied: jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/waitForCommit.html (from r1169728, jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getRevisions.html)
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/waitForCommit.html?p2=jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/waitForCommit.html&p1=jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getRevisions.html&r1=1169728&r2=1169743&rev=1169743&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/getRevisions.html (original)
+++ jackrabbit/sandbox/microkernel/src/main/resources/org/apache/jackrabbit/mk/server/waitForCommit.html Mon Sep 12 13:46:31 2011
@@ -1,6 +1,6 @@
<html>
<head>
-<title>µicroKernel prototype: getRevisions</title>
+<title>µicroKernel prototype: waitForCommit</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>
@@ -8,16 +8,16 @@
<body>
<script src="header.js"></script>
<div class="content">
- <h1>Revision Operations: getRevisions</h1>
+ <h1>Revision Operations: waitForCommit</h1>
<form method="POST" target="result">
<table class="formtable">
<tr>
- <td>Since</td>
- <td><input class="text" type="text" name="since" id="since" value="0"></td>
+ <td>Revision ID</td>
+ <td><input class="text" type="text" name="revision_id" id="revision_id" value=""></td>
</tr>
<tr>
- <td>Max Entries</td>
- <td><input class="text" type="text" name="max_entries" id="max_entries" value="10"></td>
+ <td>Max Wait Millis</td>
+ <td><input class="text" type="text" name="max_wait_millis" id="max_wait_millis" value="10000"></td>
</tr>
<tr><td> </td><td>
<input type="submit"><br></td></tr></table>