Index: oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java (revision 1343706) @@ -253,9 +253,8 @@ return mk.getRevisionsStream(since, maxEntries, path); } - @Override public void dispose() { - mk.dispose(); + // do nothing } } Index: oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java (revision 1343706) @@ -576,7 +576,6 @@ return ds.writeBlob(in); } - @Override public synchronized void dispose() { if (!disposed) { disposed = true; Index: oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java (revision 1343706) @@ -50,16 +50,8 @@ } } - @Override public void dispose() { - try { - logMethod("dispose"); - mk.dispose(); - logResult(); - } catch (Exception e) { - logException(e); - throw convert(e); - } + // do nothing } @Override Index: oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java (revision 1343706) @@ -136,11 +136,6 @@ } @Override - public void dispose() { - wrapped.dispose(); - } - - @Override public String getHeadRevision() throws MicroKernelException { return wrapped.getHeadRevision(); } Index: oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java (revision 1343706) @@ -96,7 +96,6 @@ return mk.commitStream(rootPath, jsonDiff, revisionId, message); } - @Override public void dispose() { // do nothing } Index: oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java (revision 1343706) @@ -226,12 +226,10 @@ return builder; } - @Override public void dispose() { for (MicroKernel m : mounts.values()) { - m.dispose(); + MicroKernelFactory.disposeInstance(m); } - mk.dispose(); } @Override Index: oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java (revision 1343705) +++ oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java (revision 1343706) @@ -130,27 +130,43 @@ @Override public void dispose() { super.dispose(); - mk.dispose(); + MicroKernelFactory.disposeInstance(mk); } }; } catch (MicroKernelException e) { - mk.dispose(); + MicroKernelFactory.disposeInstance(mk); throw e; } } else if (head.equals("virtual")) { - MicroKernel mk = getInstance(tail); + final MicroKernel mk = getInstance(tail); try { - return new VirtualRepositoryWrapper(mk); + return new VirtualRepositoryWrapper(mk) { + @Override + public void dispose() { + super.dispose(); + MicroKernelFactory.disposeInstance(mk); + } + }; } catch (MicroKernelException e) { - mk.dispose(); + MicroKernelFactory.disposeInstance(mk); throw e; } } else if (head.equals("index")) { - return new IndexWrapper(getInstance(tail)); + final MicroKernel mk = getInstance(tail); + try { + return new IndexWrapper(mk) { + public void dispose() { + MicroKernelFactory.disposeInstance(mk); + } + }; + } catch (MicroKernelException e) { + MicroKernelFactory.disposeInstance(mk); + throw e; + } } else if (head.equals("http")) { return new Client(url); } else if (head.equals("http-bridge")) { - MicroKernel mk = getInstance(tail); + final MicroKernel mk = getInstance(tail); final Server server = new Server(mk); try { @@ -164,6 +180,7 @@ public synchronized void dispose() { super.dispose(); server.stop(); + MicroKernelFactory.disposeInstance(mk); } }; } else { @@ -172,10 +189,32 @@ } /** + * Disposes an instance that was created by this factory. + * @param mk MicroKernel instance + */ + public static void disposeInstance(MicroKernel mk) { + if (mk instanceof MicroKernelImpl) { + ((MicroKernelImpl) mk).dispose(); + } else if (mk instanceof SimpleKernelImpl) { + ((SimpleKernelImpl) mk).dispose(); + } else if (mk instanceof LogWrapper) { + ((LogWrapper) mk).dispose(); + } else if (mk instanceof SecurityWrapper) { + ((SecurityWrapper) mk).dispose(); + } else if (mk instanceof VirtualRepositoryWrapper) { + ((VirtualRepositoryWrapper) mk).dispose(); + } else if (mk instanceof IndexWrapper) { + ((IndexWrapper) mk).dispose(); + } else { + throw new IllegalArgumentException("instance was not created by this factory"); + } + } + + /** - * Delete a directory or file and all subdirectories and files inside it. - * - * @param file the file denoting the directory to delete - */ + * Delete a directory or file and all subdirectories and files inside it. + * + * @param file the file denoting the directory to delete + */ private static void deleteRecursive(File file) { File[] files = file.listFiles(); for (int i = 0; files != null && i < files.length; i++) { @@ -183,5 +222,4 @@ } file.delete(); } - } Index: oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java (revision 1343705) +++ oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java (revision 1343706) @@ -68,13 +68,13 @@ mkRep1.commit("/", "- \":mount\"", mkRep1.getHeadRevision(), ""); mkRep2.commit("/", "- \":mount\"", mkRep2.getHeadRevision(), ""); if (mkVirtual != null) { - mkVirtual.dispose(); + MicroKernelFactory.disposeInstance(mkVirtual); } if (mkRep1 != null) { - mkRep1.dispose(); + MicroKernelFactory.disposeInstance(mkRep1); } if (mkRep2 != null) { - mkRep2.dispose(); + MicroKernelFactory.disposeInstance(mkRep2); } super.tearDown(); } catch (Throwable e) { Index: oak-core/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java (revision 1343705) +++ oak-core/src/test/java/org/apache/jackrabbit/mk/MultiMkTestBase.java (revision 1343706) @@ -79,7 +79,7 @@ if (prof != null) { System.out.println(prof.getTop(5)); } - mk.dispose(); + MicroKernelFactory.disposeInstance(mk); } protected void reconnect() { @@ -87,7 +87,7 @@ if (url.equals("simple:")) { return; } - mk.dispose(); + MicroKernelFactory.disposeInstance(mk); } mk = MicroKernelFactory.getInstance(url); } Index: oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/ClientServerFixture.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/ClientServerFixture.java (revision 1343705) +++ oak-it/mk/src/test/java/org/apache/jackrabbit/mk/test/ClientServerFixture.java (revision 1343706) @@ -27,10 +27,13 @@ public class ClientServerFixture implements MicroKernelFixture { + private MicroKernelImpl mk; + private Server server; + @Override public void setUpCluster(MicroKernel[] cluster) { - MicroKernel mk = new MicroKernelImpl(); - final Server server = new Server(mk); + mk = new MicroKernelImpl(); + server = new Server(mk); try { server.start(); } catch (IOException e) { @@ -38,13 +41,7 @@ } InetSocketAddress address = server.getAddress(); - cluster[0] = new Client(address) { - @Override - public synchronized void dispose() { - super.dispose(); - server.stop(); - } - }; + cluster[0] = new Client(address); for (int i = 1; i < cluster.length; i++) { cluster[i] = new Client(address); } @@ -56,9 +53,7 @@ @Override public void tearDownCluster(MicroKernel[] cluster) { - for (int i = 0; i < cluster.length; i++) { - ((Client) cluster[i]).dispose(); + server.stop(); + mk.dispose(); - } + } - } - } Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (revision 1343705) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (revision 1343706) @@ -47,13 +47,6 @@ */ public interface MicroKernel { - /** - * Dispose this instance. - * - * TODO remove lifecycle method from MicroKernel API (OAK-32) - */ - void dispose(); - //---------------------------------------------------------< REVISION ops > /** Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/client/Client.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/client/Client.java (revision 1343705) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/client/Client.java (revision 1343706) @@ -19,7 +19,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.InetSocketAddress; -import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; import java.util.concurrent.atomic.AtomicBoolean; @@ -36,8 +35,8 @@ */ public class Client implements MicroKernel { - private static final String MK_EXCEPTION_PREFIX = MicroKernelException.class.getName() + ":"; - + private static final String MK_EXCEPTION_PREFIX = MicroKernelException.class.getName() + ":"; + private final InetSocketAddress addr; private final SocketFactory socketFactory; @@ -89,14 +88,13 @@ this.addr = addr; this.socketFactory = socketFactory; } - + - //-------------------------------------------------- implements MicroKernel - - @Override public void dispose() { - // do nothing + // do nothing } + //-------------------------------------------------- implements MicroKernel + @Override public String getHeadRevision() throws MicroKernelException { Request request = null; @@ -223,7 +221,7 @@ @Override public String getNodes(String path, String revisionId, int depth, - long offset, int maxChildNodes, String filter) throws MicroKernelException { + long offset, int count, String filter) throws MicroKernelException { Request request = null; @@ -233,7 +231,7 @@ request.addParameter("revision_id", revisionId); request.addParameter("depth", depth); request.addParameter("offset", offset); - request.addParameter("maxChildNodes", maxChildNodes); + request.addParameter("count", count); request.addParameter("filter", filter); // OAK-48: MicroKernel.getNodes() should return null for not existing nodes instead of throwing an exception String result = request.getString(); Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/server/Server.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/server/Server.java (revision 1343705) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/server/Server.java (revision 1343706) @@ -225,10 +225,6 @@ if (!stopped.compareAndSet(false, true)) { return; } - MicroKernel mk = mkref.getAndSet(null); - if (mk != null) { - mk.dispose(); - } if (es != null) { es.shutdown(); } Index: oak-mk/src/test/java/org/apache/jackrabbit/mk/store/DefaultRevisionStoreTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/test/java/org/apache/jackrabbit/mk/store/DefaultRevisionStoreTest.java (revision 1343705) +++ oak-mk/src/test/java/org/apache/jackrabbit/mk/store/DefaultRevisionStoreTest.java (revision 1343706) @@ -42,7 +42,7 @@ public class DefaultRevisionStoreTest { /* avoid synthetic accessor */ DefaultRevisionStore rs; - private MicroKernel mk; + private MicroKernelImpl mk; @Before public void setup() throws Exception { Index: oak-run/src/main/java/org/apache/jackrabbit/oak/run/MicroKernelServer.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-run/src/main/java/org/apache/jackrabbit/oak/run/MicroKernelServer.java (revision 1343705) +++ oak-run/src/main/java/org/apache/jackrabbit/oak/run/MicroKernelServer.java (revision 1343706) @@ -31,7 +31,7 @@ return; } - MicroKernel mk = MicroKernelFactory.getInstance(args[0]); + final MicroKernel mk = MicroKernelFactory.getInstance(args[0]); final Server server = new Server(mk); if (args.length >= 2) { @@ -48,6 +48,7 @@ @Override public void run() { server.stop(); + MicroKernelFactory.disposeInstance(mk); } }, "ShutdownHook")); } Index: oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java (revision 1343705) +++ oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepositoryServlet.java (revision 1343706) @@ -28,7 +28,7 @@ private final String path; - private MicroKernel kernel; + private MicroKernelImpl kernel; private Repository repository; \ No newline at end of file