You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2012/06/06 18:06:56 UTC

svn commit: r1346965 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/mk/wrapper/ test/java/org/apache/jackrabbit/mk/wrapper/

Author: stefan
Date: Wed Jun  6 16:06:55 2012
New Revision: 1346965

URL: http://svn.apache.org/viewvc?rev=1346965&view=rev
Log:
OAK-32: Drop MicroKernel.dispose()

fixed regression:
 
 Running org.apache.jackrabbit.mk.wrapper.VirtualRepositoryWrapperTest
 java.lang.IllegalArgumentException: instance was not created by this factory
 	at org.apache.jackrabbit.mk.MicroKernelFactory.disposeInstance(MicroKernelFactory.java:211)
 	at org.apache.jackrabbit.mk.wrapper.VirtualRepositoryWrapper.dispose(VirtualRepositoryWrapper.java:231)
 	at org.apache.jackrabbit.mk.MicroKernelFactory$3.dispose(MicroKernelFactory.java:146)
 	at org.apache.jackrabbit.mk.MicroKernelFactory.disposeInstance(MicroKernelFactory.java:207)
 	at org.apache.jackrabbit.mk.wrapper.VirtualRepositoryWrapperTest.tearDown(VirtualRepositoryWrapperTest.java:71)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java?rev=1346965&r1=1346964&r2=1346965&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/MicroKernelWrapperBase.java Wed Jun  6 16:06:55 2012
@@ -67,125 +67,151 @@ public abstract class MicroKernelWrapper
      * @return the wrapped instance
      */
     public static MicroKernelWrapper wrap(final MicroKernel mk) {
-        if (mk instanceof MicroKernelWrapper) {
+        if (mk instanceof MicroKernelWrapperImpl) {
             return (MicroKernelWrapper) mk;
         }
-        return new MicroKernelWrapper() {
+        return new MicroKernelWrapperImpl(mk);
+    }
 
-            MicroKernel wrapped = mk;
+    /**
+     * Unwrap a wrapped MicroKernel implementation previously created by
+     * {@link #wrap};
+     *
+     * @param wrapper the MicroKernel wrapper to unwrap
+     * @return the unwrapped instance
+     * @throws IllegalArgumentException if the specified instance was not
+     * originally returned by {@link #wrap}.
+     */
+    public static MicroKernel unwrap(final MicroKernelWrapper wrapper) {
+        if (wrapper instanceof MicroKernelWrapperImpl) {
+            return ((MicroKernelWrapperImpl) wrapper).getWrapped();
+        }
+        throw new IllegalArgumentException("wrapper instance was not created by this factory");
+    }
 
-            @Override
-            public String commitStream(String path, JsopReader jsonDiff, String revisionId, String message) {
-                return wrapped.commit(path, jsonDiff.toString(), revisionId, message);
-            }
+    private static class MicroKernelWrapperImpl implements MicroKernelWrapper {
 
-            @Override
-            public JsopReader getJournalStream(String fromRevisionId, String toRevisionId, String path) {
-                return new JsopTokenizer(wrapped.getJournal(fromRevisionId, toRevisionId, path));
-            }
+        final MicroKernel wrapped;
 
-            @Override
-            public JsopReader getNodesStream(String path, String revisionId) {
-                String json = wrapped.getNodes(path, revisionId, 1, 0, -1, null);
-                if (json != null) {
-                    return new JsopTokenizer(json);
-                } else {
-                    return null;
-                }
-            }
+        private MicroKernelWrapperImpl(MicroKernel mk) {
+            wrapped = mk;
+        }
 
-            @Override
-            public JsopReader getNodesStream(String path, String revisionId, int depth, long offset, int count, String filter) {
-                String json = wrapped.getNodes(
-                        path, revisionId, depth, offset, count, filter);
-                if (json != null) {
-                    return new JsopTokenizer(json);
-                } else {
-                    return null;
-                }
-            }
+        private MicroKernel getWrapped() {
+            return wrapped;
+        }
 
-            @Override
-            public JsopReader getRevisionsStream(long since, int maxEntries, String path) {
-                return new JsopTokenizer(wrapped.getRevisionHistory(since, maxEntries, path));
-            }
+        @Override
+        public String commitStream(String path, JsopReader jsonDiff, String revisionId, String message) {
+            return wrapped.commit(path, jsonDiff.toString(), revisionId, message);
+        }
 
-            @Override
-            public JsopReader diffStream(String fromRevisionId, String toRevisionId, String path) {
-                return new JsopTokenizer(wrapped.diff(fromRevisionId, toRevisionId, path));
-            }
+        @Override
+        public JsopReader getJournalStream(String fromRevisionId, String toRevisionId, String path) {
+            return new JsopTokenizer(wrapped.getJournal(fromRevisionId, toRevisionId, path));
+        }
 
-            @Override
-            public String commit(String path, String jsonDiff, String revisionId, String message) {
-                return wrapped.commit(path, jsonDiff, revisionId, message);
+        @Override
+        public JsopReader getNodesStream(String path, String revisionId) {
+            String json = wrapped.getNodes(path, revisionId, 1, 0, -1, null);
+            if (json != null) {
+                return new JsopTokenizer(json);
+            } else {
+                return null;
             }
+        }
 
-            @Override
-            public String branch(String trunkRevisionId) {
-                return wrapped.branch(trunkRevisionId);
+        @Override
+        public JsopReader getNodesStream(String path, String revisionId, int depth, long offset, int count, String filter) {
+            String json = wrapped.getNodes(
+                    path, revisionId, depth, offset, count, filter);
+            if (json != null) {
+                return new JsopTokenizer(json);
+            } else {
+                return null;
             }
+        }
 
-            @Override
-            public String merge(String branchRevisionId, String message) {
-                return wrapped.merge(branchRevisionId, message);
-            }
+        @Override
+        public JsopReader getRevisionsStream(long since, int maxEntries, String path) {
+            return new JsopTokenizer(wrapped.getRevisionHistory(since, maxEntries, path));
+        }
 
-            @Override
-            public String diff(String fromRevisionId, String toRevisionId, String path) {
-                return wrapped.diff(fromRevisionId, toRevisionId, path);
-            }
+        @Override
+        public JsopReader diffStream(String fromRevisionId, String toRevisionId, String path) {
+            return new JsopTokenizer(wrapped.diff(fromRevisionId, toRevisionId, path));
+        }
 
-            @Override
-            public String getHeadRevision() throws MicroKernelException {
-                return wrapped.getHeadRevision();
-            }
+        @Override
+        public String commit(String path, String jsonDiff, String revisionId, String message) {
+            return wrapped.commit(path, jsonDiff, revisionId, message);
+        }
 
-            @Override
-            public String getJournal(String fromRevisionId, String toRevisionId, String path) {
-                return wrapped.getJournal(fromRevisionId, toRevisionId, path);
-            }
+        @Override
+        public String branch(String trunkRevisionId) {
+            return wrapped.branch(trunkRevisionId);
+        }
 
-            @Override
-            public long getLength(String blobId) {
-                return wrapped.getLength(blobId);
-            }
+        @Override
+        public String merge(String branchRevisionId, String message) {
+            return wrapped.merge(branchRevisionId, message);
+        }
 
-            @Override
-            public String getNodes(String path, String revisionId, int depth, long offset, int maxChildNodes, String filter) {
-                return wrapped.getNodes(path, revisionId, depth, offset, maxChildNodes, filter);
-            }
+        @Override
+        public String diff(String fromRevisionId, String toRevisionId, String path) {
+            return wrapped.diff(fromRevisionId, toRevisionId, path);
+        }
 
-            @Override
-            public String getRevisionHistory(long since, int maxEntries, String path) {
-                return wrapped.getRevisionHistory(since, maxEntries, path);
-            }
+        @Override
+        public String getHeadRevision() throws MicroKernelException {
+            return wrapped.getHeadRevision();
+        }
 
-            @Override
-            public boolean nodeExists(String path, String revisionId) {
-                return wrapped.nodeExists(path, revisionId);
-            }
+        @Override
+        public String getJournal(String fromRevisionId, String toRevisionId, String path) {
+            return wrapped.getJournal(fromRevisionId, toRevisionId, path);
+        }
 
-            @Override
-            public long getChildNodeCount(String path, String revisionId) {
-                return wrapped.getChildNodeCount(path, revisionId);
-            }
+        @Override
+        public long getLength(String blobId) {
+            return wrapped.getLength(blobId);
+        }
 
-            @Override
-            public int read(String blobId, long pos, byte[] buff, int off, int length) {
-                return wrapped.read(blobId, pos, buff, off, length);
-            }
+        @Override
+        public String getNodes(String path, String revisionId, int depth, long offset, int maxChildNodes, String filter) {
+            return wrapped.getNodes(path, revisionId, depth, offset, maxChildNodes, filter);
+        }
 
-            @Override
-            public String waitForCommit(String oldHeadRevisionId, long maxWaitMillis) throws InterruptedException {
-                return wrapped.waitForCommit(oldHeadRevisionId, maxWaitMillis);
-            }
+        @Override
+        public String getRevisionHistory(long since, int maxEntries, String path) {
+            return wrapped.getRevisionHistory(since, maxEntries, path);
+        }
 
-            @Override
-            public String write(InputStream in) {
-                return wrapped.write(in);
-            }
+        @Override
+        public boolean nodeExists(String path, String revisionId) {
+            return wrapped.nodeExists(path, revisionId);
+        }
+
+        @Override
+        public long getChildNodeCount(String path, String revisionId) {
+            return wrapped.getChildNodeCount(path, revisionId);
+        }
+
+        @Override
+        public int read(String blobId, long pos, byte[] buff, int off, int length) {
+            return wrapped.read(blobId, pos, buff, off, length);
+        }
+
+        @Override
+        public String waitForCommit(String oldHeadRevisionId, long maxWaitMillis) throws InterruptedException {
+            return wrapped.waitForCommit(oldHeadRevisionId, maxWaitMillis);
+        }
+
+        @Override
+        public String write(InputStream in) {
+            return wrapped.write(in);
+        }
 
-        };
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java?rev=1346965&r1=1346964&r2=1346965&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java Wed Jun  6 16:06:55 2012
@@ -227,8 +227,8 @@ public class VirtualRepositoryWrapper ex
     }
 
     public void dispose() {
-        for (MicroKernel m : mounts.values()) {
-            MicroKernelFactory.disposeInstance(m);
+        for (MicroKernelWrapper wrapper : mounts.values()) {
+            MicroKernelFactory.disposeInstance(MicroKernelWrapperBase.unwrap(wrapper));
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java?rev=1346965&r1=1346964&r2=1346965&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapperTest.java Wed Jun  6 16:06:55 2012
@@ -70,12 +70,8 @@ public class VirtualRepositoryWrapperTes
             if (mkVirtual != null) {
                 MicroKernelFactory.disposeInstance(mkVirtual);
             }
-            if (mkRep1 != null) {
-                MicroKernelFactory.disposeInstance(mkRep1);
-            }
-            if (mkRep2 != null) {
-                MicroKernelFactory.disposeInstance(mkRep2);
-            }
+            MicroKernelFactory.disposeInstance(mkRep1);
+            MicroKernelFactory.disposeInstance(mkRep2);
             super.tearDown();
         } catch (Throwable e) {
             e.printStackTrace();