You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2014/02/10 14:00:57 UTC

svn commit: r1566604 - in /jackrabbit/trunk/jackrabbit-webapp: pom.xml src/main/java/org/apache/jackrabbit/j2ee/Installer.java src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java src/main/webapp/bootstrap/missing.jsp

Author: jukka
Date: Mon Feb 10 13:00:57 2014
New Revision: 1566604

URL: http://svn.apache.org/r1566604
Log:
JCR-3598: Oak in Jackrabbit deployment packages

Upgrade to Oak 0.15.
Make it possible to use Oak repositories in webapp/standalone.

Modified:
    jackrabbit/trunk/jackrabbit-webapp/pom.xml
    jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java
    jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java
    jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/bootstrap/missing.jsp

Modified: jackrabbit/trunk/jackrabbit-webapp/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webapp/pom.xml?rev=1566604&r1=1566603&r2=1566604&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webapp/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-webapp/pom.xml Mon Feb 10 13:00:57 2014
@@ -35,7 +35,7 @@
   <description>Web application that hosts and serves a Jackrabbit content repository</description>
 
   <properties>
-    <oak.version>0.8</oak.version>
+    <oak.version>0.15</oak.version>
     <tomcat.version>7.0.40</tomcat.version>
   </properties>
 

Modified: jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java?rev=1566604&r1=1566603&r2=1566604&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java (original)
+++ jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/Installer.java Mon Feb 10 13:00:57 2014
@@ -125,16 +125,26 @@ public class Installer {
     public int installRepository(HttpServletRequest req)
             throws ServletException, IOException {
         String repHome = req.getParameter("repository_home");
+        String repType = req.getParameter("repository_type");
         String repXml = req.getParameter("repository_xml");
         String mode = req.getParameter("mode");
+
         if (repHome == null || mode == null) {
             return C_INVALID_INPUT;
         }
-        if (repXml == null || repXml.length() == 0) {
-            repXml = repHome + "/repository.xml";
-        }
         File home = new File(repHome);
-        File config = new File(repXml);
+
+        File config;
+        if ("oak".equals(repType)) {
+            config = null;
+            repXml = null;
+        } else if (repXml == null || repXml.length() == 0) {
+            config = new File(home, "repository.xml");
+            repXml = config.getPath();
+        } else {
+            config = new File(repXml);
+        }
+
         if ("new".equals(mode)) {
             // Test internal folder repository existence and not home because home is already created
             // by org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet
@@ -142,25 +152,28 @@ public class Installer {
                 log.error("Trying to install new repository home '{}' but it already contain a repository", repHome);
                 return C_HOME_EXISTS;
             }
-            if (config.exists()) {
+            if (config != null && config.exists()) {
                 log.error("Trying to install new repository config '{}' but already exists", repXml);
                 return C_CONFIG_EXISTS;
             }
             log.info("Creating new repository home '{}'", repHome);
             home.mkdirs();
-            // install repository xml
-            try {
-                installRepositoryConfig(config);
-            } catch (IOException e) {
-                log.error("Error while installing new repository config '{}': {}", repXml, e.toString());
-                return C_BOOTSTRAP_EXISTS;
+
+            if (config != null) {
+                // install repository xml for Jackrabbit Classic
+                try {
+                    installRepositoryConfig(config);
+                } catch (IOException e) {
+                    log.error("Error while installing new repository config '{}': {}", repXml, e.toString());
+                    return C_BOOTSTRAP_EXISTS;
+                }
             }
         } else {
             if (!home.exists()) {
-                log.error("Trying to use exisintg repository home '{}' but does not exists", repHome);
+                log.error("Trying to use existing repository home '{}' but does not exists", repHome);
                 return C_HOME_MISSING;
             }
-            if (!config.exists()) {
+            if (config != null && !config.exists()) {
                 log.error("Trying to use existing repository config '{}' but does not exists", repXml);
                 return C_CONFIG_MISSING;
             }
@@ -210,7 +223,9 @@ public class Installer {
         Properties props = new Properties();
         props.load(in);
         props.setProperty("repository.home", repHome);
-        props.setProperty("repository.config", repXml);
+        if (repXml != null) {
+            props.setProperty("repository.config", repXml);
+        }
         in.close();
         if (!dest.getParentFile().exists()) {
             dest.getParentFile().mkdirs();

Modified: jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java?rev=1566604&r1=1566603&r2=1566604&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java (original)
+++ jackrabbit/trunk/jackrabbit-webapp/src/main/java/org/apache/jackrabbit/j2ee/RepositoryStartupServlet.java Mon Feb 10 13:00:57 2014
@@ -20,6 +20,10 @@ import org.apache.jackrabbit.api.Jackrab
 import org.apache.jackrabbit.commons.repository.RepositoryFactory;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
+import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.rmi.server.RemoteAdapterFactory;
 import org.apache.jackrabbit.rmi.server.ServerAdapterFactory;
 import org.apache.jackrabbit.servlet.AbstractRepositoryServlet;
@@ -168,6 +172,11 @@ public class RepositoryStartupServlet ex
     static String bootstrapOverride = null;
 
     /**
+     * the TarMK segment store
+     */
+    private SegmentStore store;
+
+    /**
      * the registered repository
      */
     private Repository repository;
@@ -370,8 +379,7 @@ public class RepositoryStartupServlet ex
         config.init(bootstrapProps);
         config.validate();
         if (!config.isValid()
-                || config.getRepositoryHome() == null
-                || config.getRepositoryConfig() == null) {
+                || config.getRepositoryHome() == null) {
             if (bstrp == null) {
                 log.error("Repository startup configuration is not valid.");
             } else {
@@ -402,25 +410,35 @@ public class RepositoryStartupServlet ex
                     "Repository configuration failure: " + config.getRepositoryHome(), e);
         }
         String repConfig = config.getRepositoryConfig();
-        InputStream in = getServletContext().getResourceAsStream(repConfig);
-        if (in == null) {
-            try {
-                in = new FileInputStream(new File(repConfig));
-            } catch (FileNotFoundException e) {
-                // fallback to old config
+        if (repConfig != null) { // Jackrabbit Classic
+            InputStream in = getServletContext().getResourceAsStream(repConfig);
+            if (in == null) {
                 try {
-                    in = new FileInputStream(new File(repHome, repConfig));
-                } catch (FileNotFoundException e1) {
-                    throw new ServletExceptionWithCause(
-                            "Repository configuration not found: " + repConfig, e);
+                    in = new FileInputStream(new File(repConfig));
+                } catch (FileNotFoundException e) {
+                    // fallback to old config
+                    try {
+                        in = new FileInputStream(new File(repHome, repConfig));
+                    } catch (FileNotFoundException e1) {
+                        throw new ServletExceptionWithCause(
+                                "Repository configuration not found: " + repConfig, e);
+                    }
                 }
             }
-        }
 
-        try {
-            repository = createRepository(new InputSource(in), repHome);
-        } catch (RepositoryException e) {
-            throw new ServletExceptionWithCause("Error while creating repository", e);
+            try {
+                repository = createRepository(new InputSource(in), repHome);
+            } catch (RepositoryException e) {
+                throw new ServletExceptionWithCause("Error while creating repository", e);
+            }
+        } else { // Jackrabbit Oak
+            try {
+                String model = System.getProperty("sun.arch.data.model", "32");
+                store = new FileStore(repHome, 256*1024*1024, "64".equals(model));
+                repository = new Jcr(new SegmentNodeStore(store)).createRepository();
+            } catch (IOException e) {
+                throw new ServletExceptionWithCause("Error while creating repository", e);
+            }
         }
     }
 
@@ -431,7 +449,10 @@ public class RepositoryStartupServlet ex
      * <code>nulled</code>.
      */
     private void shutdownRepository() {
-        if (repository instanceof JackrabbitRepository) {
+        if (store != null) {
+            store.close();
+            store = null;
+        } else if (repository instanceof JackrabbitRepository) {
             ((JackrabbitRepository) repository).shutdown();
         }
         repository = null;

Modified: jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/bootstrap/missing.jsp
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/bootstrap/missing.jsp?rev=1566604&r1=1566603&r2=1566604&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/bootstrap/missing.jsp (original)
+++ jackrabbit/trunk/jackrabbit-webapp/src/main/webapp/bootstrap/missing.jsp Mon Feb 10 13:00:57 2014
@@ -40,6 +40,15 @@ request.setAttribute("title", "Content R
       <input size="40" type="text" name="repository_home" value="jackrabbit">
     </label>
   </p>
+  <p>
+    Repository type:
+    <label>
+      <input type="radio" name="repository_type" value="classic" checked> Classic
+    </label>
+    <label>
+      <input type="radio" name="repository_type" value="oak"> Oak
+    </label>
+  </p>
   <p><input type="submit" value="Create Content Repository"></p>
 </form>