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 ju...@apache.org on 2012/04/05 11:09:48 UTC
svn commit: r1309709 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk:
MicroKernelFactory.java simple/SimpleKernelImpl.java
Author: jukka
Date: Thu Apr 5 09:09:47 2012
New Revision: 1309709
URL: http://svn.apache.org/viewvc?rev=1309709&view=rev
Log:
OAK-32: Drop MicroKernel.dispose()
Refactor SimpleKernelImpl.get() into MicroKernelFactory to reduce the footprint of factory code
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java?rev=1309709&r1=1309708&r2=1309709&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java Thu Apr 5 09:09:47 2012
@@ -17,6 +17,8 @@
package org.apache.jackrabbit.mk;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.client.Client;
@@ -34,6 +36,9 @@ import org.apache.jackrabbit.mk.wrapper.
*/
public class MicroKernelFactory {
+ private static final Map<String, SimpleKernelImpl> INSTANCES =
+ new HashMap<String, SimpleKernelImpl>();
+
/**
* Get an instance. Supported URLs:
* <ul>
@@ -47,11 +52,39 @@ public class MicroKernelFactory {
* @param url the repository URL
* @return a new instance
*/
- public static MicroKernel getInstance(String url) {
- if (url.startsWith("mem:")) {
- return SimpleKernelImpl.get(url);
- } else if (url.startsWith("simple:")) {
- return SimpleKernelImpl.get(url);
+ public static synchronized MicroKernel getInstance(String url) {
+ if (url.startsWith("mem:") || url.startsWith("simple:")) {
+ boolean clean = false;
+ if (url.endsWith(";clean")) {
+ url = url.substring(0, url.length() - ";clean".length());
+ clean = true;
+ }
+
+ url = url.replaceAll("\\{homeDir\\}", System.getProperty("homeDir", "."));
+
+ String name;
+ if (url.startsWith("simple:")) {
+ name = url.substring("simple:".length());
+ } else {
+ name = url.substring("mem:".length());
+ }
+
+ if (clean) {
+ String dir = url.substring(url.lastIndexOf(':') + 1);
+ try {
+ FileUtils.deleteRecursive(dir, false);
+ } catch (Exception e) {
+ throw ExceptionFactory.convert(e);
+ }
+ INSTANCES.remove(name);
+ }
+
+ SimpleKernelImpl instance = INSTANCES.get(name);
+ if (instance == null) {
+ instance = new SimpleKernelImpl(name);
+ INSTANCES.put(name, instance);
+ }
+ return instance;
} else if (url.startsWith("log:")) {
return LogWrapper.get(url);
} else if (url.startsWith("sec:")) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java?rev=1309709&r1=1309708&r2=1309709&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java Thu Apr 5 09:09:47 2012
@@ -20,7 +20,6 @@ import org.apache.jackrabbit.mk.api.Micr
import org.apache.jackrabbit.mk.blobs.AbstractBlobStore;
import org.apache.jackrabbit.mk.blobs.FileBlobStore;
import org.apache.jackrabbit.mk.blobs.MemoryBlobStore;
-import org.apache.jackrabbit.mk.fs.FileUtils;
import org.apache.jackrabbit.mk.json.JsopReader;
import org.apache.jackrabbit.mk.json.JsopStream;
import org.apache.jackrabbit.mk.json.JsopTokenizer;
@@ -37,7 +36,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
/*
@@ -62,8 +60,6 @@ Node structure:
*/
public class SimpleKernelImpl extends MicroKernelWrapperBase implements MicroKernel {
- private static final HashMap<String, SimpleKernelImpl> INSTANCES = new HashMap<String, SimpleKernelImpl>();
-
private static final int REV_SKIP_OFFSET = 20;
private final String name;
@@ -122,47 +118,6 @@ public class SimpleKernelImpl extends Mi
}
}
- /**
- * Get or open the object. The following prefixes are supported:
- * <ul><li>fs: store the binaries in the file system
- * </li><li>server: also start the server
- * </li></ul>
- *
- * @param url the url
- * @return the object
- */
- public static synchronized SimpleKernelImpl get(String url) {
- boolean clean = false;
- if (url.endsWith(";clean")) {
- url = url.substring(0, url.length() - ";clean".length());
- clean = true;
- }
- url = url.replaceAll("\\{homeDir\\}", System.getProperty("homeDir", "."));
- if (clean) {
- String dir = url.substring(url.lastIndexOf(':') + 1);
- try {
- FileUtils.deleteRecursive(dir, false);
- } catch (Exception e) {
- throw ExceptionFactory.convert(e);
- }
- }
- String name;
- if (url.startsWith("simple:")) {
- name = url.substring("simple:".length());
- } else {
- name = url.substring("mem:".length());
- }
- if (clean) {
- INSTANCES.remove(name);
- }
- SimpleKernelImpl instance = INSTANCES.get(name);
- if (instance == null) {
- instance = new SimpleKernelImpl(name);
- INSTANCES.put(name, instance);
- }
- return instance;
- }
-
private void applyConfig(NodeImpl head) {
// /head/config doesn't always exist
if (head.exists("config")) {
@@ -593,7 +548,6 @@ public class SimpleKernelImpl extends Mi
gate.commit("end");
nodeMap.close();
ds.close();
- INSTANCES.remove(name);
if (server != null) {
server.stop();
server = null;