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/12/02 15:37:04 UTC
svn commit: r1209513 - in /jackrabbit/sandbox/microkernel/src:
main/java/org/apache/jackrabbit/mk/
main/java/org/apache/jackrabbit/mk/client/
main/java/org/apache/jackrabbit/mk/server/
test/java/org/apache/jackrabbit/mk/ test/java/org/apache/jackrabbit...
Author: dpfister
Date: Fri Dec 2 14:37:04 2011
New Revision: 1209513
URL: http://svn.apache.org/viewvc?rev=1209513&view=rev
Log:
add remoting layer to stack of test urls
- avoid unnecessary synthetic accessor methods
- make remote client thread-safe
- finish unread bytes in client response stream
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/HttpExecutor.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Request.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
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java Fri Dec 2 14:37:04 2011
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.mk.api.Micr
import org.apache.jackrabbit.mk.client.Client;
import org.apache.jackrabbit.mk.fs.FileUtils;
import org.apache.jackrabbit.mk.mem.MemoryKernelImpl;
+import org.apache.jackrabbit.mk.server.Server;
import org.apache.jackrabbit.mk.util.ExceptionFactory;
import org.apache.jackrabbit.mk.wrapper.IndexWrapper;
import org.apache.jackrabbit.mk.wrapper.LogWrapper;
@@ -81,6 +82,21 @@ public class MicroKernelFactory {
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e.getMessage());
}
+ } else if (url.startsWith("remote:")) {
+ try {
+ MicroKernel mk = getInstance(url.substring("remote:".length()));
+ final Server server = new Server(mk);
+ server.setPort(0);
+ server.start();
+ return new Client(server.getAddress()) {
+ public void dispose() {
+ super.dispose();
+ server.stop();
+ }
+ };
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e.getMessage());
+ }
} else {
throw new IllegalArgumentException(url);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java Fri Dec 2 14:37:04 2011
@@ -50,7 +50,7 @@ public class Client implements MicroKern
//-------------------------------------------------- implements MicroKernel
- public void dispose() {
+ public synchronized void dispose() {
if (disposed) {
return;
}
@@ -61,7 +61,7 @@ public class Client implements MicroKern
}
}
- public String getHeadRevision() throws MicroKernelException {
+ public synchronized String getHeadRevision() throws MicroKernelException {
Request request = null;
try {
@@ -74,7 +74,7 @@ public class Client implements MicroKern
}
}
- public String getRevisions(long since, int maxEntries)
+ public synchronized String getRevisions(long since, int maxEntries)
throws MicroKernelException {
Request request = null;
@@ -91,7 +91,7 @@ public class Client implements MicroKern
}
}
- public String waitForCommit(String oldHeadRevision, long maxWaitMillis)
+ public synchronized String waitForCommit(String oldHeadRevision, long maxWaitMillis)
throws MicroKernelException, InterruptedException {
Request request = null;
@@ -108,7 +108,7 @@ public class Client implements MicroKern
}
}
- public String getJournal(String fromRevisionId, String toRevisionId)
+ public synchronized String getJournal(String fromRevisionId, String toRevisionId)
throws MicroKernelException {
Request request = null;
@@ -125,7 +125,7 @@ public class Client implements MicroKern
}
}
- public String diff(String fromRevisionId, String toRevisionId,
+ public synchronized String diff(String fromRevisionId, String toRevisionId,
String path)
throws MicroKernelException {
Request request = null;
@@ -143,7 +143,7 @@ public class Client implements MicroKern
}
}
- public boolean nodeExists(String path, String revisionId)
+ public synchronized boolean nodeExists(String path, String revisionId)
throws MicroKernelException {
Request request = null;
@@ -160,13 +160,13 @@ public class Client implements MicroKern
}
}
- public String getNodes(String path, String revisionId)
+ public synchronized String getNodes(String path, String revisionId)
throws MicroKernelException {
return getNodes(path, revisionId, 1, 0, -1);
}
- public String getNodes(String path, String revisionId, int depth,
+ public synchronized String getNodes(String path, String revisionId, int depth,
long offset, int count) throws MicroKernelException {
Request request = null;
@@ -186,7 +186,7 @@ public class Client implements MicroKern
}
}
- public String commit(String path, String jsonDiff, String revisionId, String message)
+ public synchronized String commit(String path, String jsonDiff, String revisionId, String message)
throws MicroKernelException {
Request request = null;
@@ -205,7 +205,7 @@ public class Client implements MicroKern
}
}
- public long getLength(String blobId) throws MicroKernelException {
+ public synchronized long getLength(String blobId) throws MicroKernelException {
Request request = null;
try {
@@ -219,7 +219,7 @@ public class Client implements MicroKern
}
}
- public int read(String blobId, long pos, byte[] buff, int off, int length)
+ public synchronized int read(String blobId, long pos, byte[] buff, int off, int length)
throws MicroKernelException {
Request request = null;
@@ -237,7 +237,7 @@ public class Client implements MicroKern
}
}
- public String write(InputStream in) throws MicroKernelException {
+ public synchronized String write(InputStream in) throws MicroKernelException {
Request request = null;
try {
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/HttpExecutor.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/HttpExecutor.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/HttpExecutor.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/HttpExecutor.java Fri Dec 2 14:37:04 2011
@@ -170,7 +170,11 @@ class HttpExecutor implements Closeable
case 200:
return reqIn;
case 500:
- throw new IOException(readLine(reqIn));
+ try {
+ throw new IOException(readLine(reqIn));
+ } finally {
+ IOUtils.closeQuietly(reqIn);
+ }
default:
String msg = String.format("HTTP request failed with status code: %d", statusCode);
throw new IOException(msg);
@@ -180,7 +184,7 @@ class HttpExecutor implements Closeable
public boolean isAlive() {
return !connectionClosed && !socket.isClosed();
}
-
+
public void close() {
IOUtils.closeQuietly(socketOut);
IOUtils.closeQuietly(socketIn);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Request.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Request.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Request.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Request.java Fri Dec 2 14:37:04 2011
@@ -181,6 +181,8 @@ class Request implements Closeable {
}
public void close() {
+ IOUtils.closeQuietly(resultIn);
+
executor = null;
}
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=1209513&r1=1209512&r2=1209513&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 Dec 2 14:37:04 2011
@@ -236,7 +236,7 @@ class MicroKernelServlet {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
- String blobId = request.getParameter("blob_id");
+ String blobId = request.getParameter("blob_id", "");
long length = mk.getLength(blobId);
response.setContentType("text/plain");
@@ -249,7 +249,7 @@ class MicroKernelServlet {
public void execute(MicroKernel mk, Request request, Response response)
throws IOException, MicroKernelException {
- String blobId = request.getParameter("blob_id");
+ String blobId = request.getParameter("blob_id", "");
long pos = request.getParameter("pos", 0L);
int length = request.getParameter("length", -1);
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=1209513&r1=1209512&r2=1209513&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 Dec 2 14:37:04 2011
@@ -163,7 +163,7 @@ class Response implements Closeable {
* @param len length
* @throws IOException if an I/O error occurs
*/
- private void writeBody(byte[] b, int off, int len) throws IOException {
+ void writeBody(byte[] b, int off, int len) throws IOException {
if (out == null) {
return;
}
@@ -208,7 +208,7 @@ class Response implements Closeable {
/**
* Internal <code>OutputStream</code> passed to servlet handlers.
*/
- private class BodyOutputStream extends OutputStream {
+ class BodyOutputStream extends OutputStream {
/**
* Buffer size chosen intentionally to not exceed maximum chunk
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=1209513&r1=1209512&r2=1209513&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 Dec 2 14:37:04 2011
@@ -83,22 +83,26 @@ public class Server {
new Thread(new Runnable() {
public void run() {
- try {
- while (!stopped.get()) {
- final Socket socket = ss.accept();
- es.execute(new Runnable() {
- public void run() {
- handle(socket);
- }
- });
- }
- } catch (IOException e) {
- /* ignore */
- }
+ accept();
}
}, "Acceptor").start();
}
+ void accept() {
+ try {
+ while (!stopped.get()) {
+ final Socket socket = ss.accept();
+ es.execute(new Runnable() {
+ public void run() {
+ handle(socket);
+ }
+ });
+ }
+ } catch (IOException e) {
+ /* ignore */
+ }
+ }
+
private ServerSocket createServerSocket() throws IOException {
return new ServerSocket(port);
}
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java Fri Dec 2 14:37:04 2011
@@ -37,13 +37,18 @@ public class MultiMkTestBase {
return Arrays.asList(new Object[][]{
{"fs:{homeDir}/target"},
{"mem:"},
- {"mem:fs:target/temp"}
+ {"mem:fs:target/temp"},
+ {"remote:fs:{homeDir}/target"}
});
}
@Before
public void setUp() throws Exception {
mk = MicroKernelFactory.getInstance(url + ";clean");
+ if (url.startsWith("remote:")) {
+ /* remove prefix so tests know when to run */
+ url = url.substring("remote:".length());
+ }
}
@After
Modified: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java?rev=1209513&r1=1209512&r2=1209513&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java (original)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/blobs/DataStoreTest.java Fri Dec 2 14:37:04 2011
@@ -107,7 +107,7 @@ public class DataStoreTest extends Multi
}
buff.write(x);
} else if (op == 1) {
- byte[] x = new byte[minLen + r.nextInt(100)];
+ byte[] x = new byte[minLen + r.nextInt(5000)];
int l = in.read(x);
if (l < 0) {
break;
@@ -115,7 +115,7 @@ public class DataStoreTest extends Multi
buff.write(x, 0, l);
} else {
int offset = r.nextInt(10);
- int len = minLen + r.nextInt(20);
+ int len = minLen + r.nextInt(1000);
byte[] x = new byte[offset + len];
int l = in.read(x, offset, len);
if (l < 0) {