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:29:35 UTC

svn commit: r1309719 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.java

Author: jukka
Date: Thu Apr  5 09:29:34 2012
New Revision: 1309719

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

Simplify MKF by pre-parsing parts of the repository URL

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/MicroKernelFactory.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=1309719&r1=1309718&r2=1309719&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:29:34 2012
@@ -54,66 +54,68 @@ public class MicroKernelFactory {
      * @return a new instance
      */
     public static synchronized MicroKernel getInstance(String url) {
-        if (url.startsWith("mem:") || url.startsWith("simple:")) {
+        int colon = url.indexOf(':');
+        if (colon == -1) {
+            throw new IllegalArgumentException("Unknown repository URL: " + url);
+        }
+
+        String head = url.substring(0, colon);
+        String tail = url.substring(colon + 1);
+        if (head.equals("mem") || head.equals("simple")) {
             boolean clean = false;
-            if (url.endsWith(";clean")) {
-                url = url.substring(0, url.length() - ";clean".length());
+            if (tail.endsWith(";clean")) {
+                tail = tail.substring(0, tail.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());
-            }
+            tail = tail.replaceAll("\\{homeDir\\}", System.getProperty("homeDir", "."));
 
             if (clean) {
-                String dir = url.substring(url.lastIndexOf(':') + 1);
+                String dir = tail.substring(tail.lastIndexOf(':') + 1);
                 try {
                     FileUtils.deleteRecursive(dir, false);
                 } catch (Exception e) {
                     throw ExceptionFactory.convert(e);
                 }
-                INSTANCES.remove(name);
+                INSTANCES.remove(tail);
             }
 
-            SimpleKernelImpl instance = INSTANCES.get(name);
+            SimpleKernelImpl instance = INSTANCES.get(tail);
             if (instance == null) {
-                instance = new SimpleKernelImpl(name);
-                INSTANCES.put(name, instance);
+                instance = new SimpleKernelImpl(tail);
+                INSTANCES.put(tail, instance);
             }
             return instance;
-        } else if (url.startsWith("log:")) {
-            return new LogWrapper(getInstance(url.substring("log:".length())));
-        } else if (url.startsWith("sec:")) {
+        } else if (head.equals("log")) {
+            return new LogWrapper(getInstance(tail));
+        } else if (head.equals("sec")) {
             return SecurityWrapper.get(url);
-        } else if (url.startsWith("virtual:")) {
+        } else if (head.equals("virtual")) {
             return VirtualRepositoryWrapper.get(url);
-        } else if (url.startsWith("index:")) {
-            return new IndexWrapper(getInstance(url.substring("index:".length())));
-        } else if (url.startsWith("fs:")) {
+        } else if (head.equals("index")) {
+            return new IndexWrapper(getInstance(tail));
+        } else if (head.equals("fs:")) {
             boolean clean = false;
-            if (url.endsWith(";clean")) {
-                url = url.substring(0, url.length() - ";clean".length());
+            if (tail.endsWith(";clean")) {
+                tail = tail.substring(0, tail.length() - ";clean".length());
                 clean = true;
             }
-            String dir = url.substring("fs:".length());
-            dir = dir.replaceAll("\\{homeDir\\}", System.getProperty("homeDir", "."));
+
+            tail = tail.replaceAll("\\{homeDir\\}", System.getProperty("homeDir", "."));
+
             if (clean) {
                 try {
-                    FileUtils.deleteRecursive(dir + "/" + ".mk", false);
+                    FileUtils.deleteRecursive(tail + "/" + ".mk", false);
                 } catch (IOException e) {
                     throw ExceptionFactory.convert(e);
                 }
             }
-            return new MicroKernelImpl(dir);
-        } else if (url.startsWith("http:")) {
+
+            return new MicroKernelImpl(tail);
+        } else if (head.equals("http")) {
             return new Client(url);
-        } else if (url.startsWith("http-bridge:")) {
-            MicroKernel mk = getInstance(url.substring("http-bridge:".length()));
+        } else if (head.equals("http-bridge")) {
+            MicroKernel mk = getInstance(tail);
 
             final Server server = new Server(mk);
             try {