Author: davide
Date: Mon Jun 26 10:51:10 2017
New Revision: 1799869

URL: http://svn.apache.org/viewvc?rev=1799869&view=rev
Log:
OAK-6252 - re-introduce ServerCommand

* adjustment on max jar size
* pushing the size to 46MB as of needed dependencies.
* re-introducing the ServerCommand and HttpServer from previous
  versions
* moving fixtures and dependencies from oak-benchmarks to
  oak-run-commons for sharing with oak-run
* re-added jcr-server and jetty-servlet dependencies
* re-added oak-http and oak-remote dependencies

Added:
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
    
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
      - copied, changed from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HttpServer.java
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ServerCommand.java
Removed:
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
    
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
Modified:
    jackrabbit/oak/trunk/oak-benchmarks/pom.xml
    jackrabbit/oak/trunk/oak-run-commons/pom.xml
    jackrabbit/oak/trunk/oak-run/pom.xml
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java

Modified: jackrabbit/oak/trunk/oak-benchmarks/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/pom.xml?rev=1799869&r1=1799868&r2=1799869&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/pom.xml Mon Jun 26 10:51:10 2017
@@ -110,11 +110,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>oak-jcr</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-auth-external</artifactId>
             <version>${project.version}</version>
         </dependency>
@@ -125,16 +120,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>oak-segment-tar</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>oak-blob-cloud</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-core</artifactId>
             <version>${project.version}</version>
         </dependency>
@@ -148,17 +133,6 @@
             <artifactId>oak-authorization-cug</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>oak-store-composite</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>oak-blob-cloud-azure</artifactId>
-            <version>${project.version}</version>
-            <optional>true</optional>
-        </dependency>
 
         <dependency>
             <groupId>javax.jcr</groupId>
@@ -168,17 +142,6 @@
 
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
-            <artifactId>jackrabbit-core</artifactId>
-            <version>${jackrabbit.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.lucene</groupId>
-                    <artifactId>lucene-core</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.jackrabbit</groupId>
             <artifactId>jackrabbit-aws-ext</artifactId>
             <version>${jackrabbit.version}</version>
             <optional>true</optional>
@@ -220,11 +183,6 @@
             <version>1.8</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.configadmin</artifactId>
-            <version>1.8.8</version>
-        </dependency>
-        <dependency>
             <groupId>org.mongodb</groupId>
             <artifactId>mongo-java-driver</artifactId>
         </dependency>

Modified: jackrabbit/oak/trunk/oak-run-commons/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/pom.xml?rev=1799869&r1=1799868&r2=1799869&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run-commons/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run-commons/pom.xml Mon Jun 26 10:51:10 2017
@@ -37,6 +37,33 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-blob-cloud</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-blob-cloud-azure</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-store-composite</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-segment-tar</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-jcr</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>com.google.code.findbugs</groupId>
             <artifactId>jsr305</artifactId>
         </dependency>
@@ -52,5 +79,21 @@
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.configadmin</artifactId>
+            <version>1.8.8</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-core</artifactId>
+            <version>${jackrabbit.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.lucene</groupId>
+                    <artifactId>lucene-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
 </project>

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/BlobStoreFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/DataStoreUtils.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Copied: 
jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
 (from r1799861, 
jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java)
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java?p2=jackrabbit/oak/trunk/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java&p1=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java&r1=1799861&r2=1799869&rev=1799869&view=diff
==============================================================================
    (empty)

Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1799869&r1=1799868&r2=1799869&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Mon Jun 26 10:51:10 2017
@@ -35,9 +35,12 @@
     <groovy.version>2.4.7</groovy.version>
     <!--
       Size History:
+      + 47 MB release profile build slightly bigger jar (OAK-6252)
+      + 46 MB re-introduced the ServerCommand and required dependencies 
(OAK-6252)
+      + 41 MB build failing on the release profile (OAK-6250)
       + 38 MB. Initial value. Current 35MB plus a 10%
     -->
-    <max.jar.size>41000000</max.jar.size>
+    <max.jar.size>47000000</max.jar.size>
   </properties>
 
   <build>
@@ -233,6 +236,21 @@
       <version>${project.version}</version>
       <optional>true</optional>
     </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-http</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-remote</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>jackrabbit-jcr-server</artifactId>
+      <version>${jackrabbit.version}</version>
+    </dependency>
 
     <dependency>
       <groupId>net.sf.jopt-simple</groupId>
@@ -310,6 +328,11 @@
       <version>1.0.4</version>
     </dependency>
     <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-servlet</artifactId>
+        <version>${jetty.version}</version>
+    </dependency>
+    <dependency>
       <groupId>io.dropwizard.metrics</groupId>
       <artifactId>metrics-core</artifactId>
       <version>3.1.0</version>

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java?rev=1799869&r1=1799868&r2=1799869&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
 Mon Jun 26 10:51:10 2017
@@ -54,5 +54,6 @@ public final class AvailableModes {
             .put("upgrade", new UpgradeCommand())
             .put("unlockupgrade", new UnlockUpgradeCommand())
             .put(IndexCommand.NAME, new IndexCommand())
+            .put("server", new ServerCommand())
             .build());
 }

Added: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HttpServer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HttpServer.java?rev=1799869&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HttpServer.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HttpServer.java
 Mon Jun 26 10:51:10 2017
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.oak.run;
+
+import java.util.Collections;
+import java.util.Map;
+
+import javax.jcr.Repository;
+
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.http.OakServlet;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.remote.content.ContentRemoteRepository;
+import org.apache.jackrabbit.oak.remote.http.RemoteServlet;
+import org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet;
+import org.apache.jackrabbit.webdav.jcr.JCRWebdavServerServlet;
+import org.apache.jackrabbit.webdav.server.AbstractWebdavServlet;
+import org.apache.jackrabbit.webdav.simple.SimpleWebdavServlet;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+
+class HttpServer {
+
+    private final ServletContextHandler context;
+
+    private final Server server;
+
+    public HttpServer(int port) throws Exception {
+        this(port, Collections.singletonMap(new Oak(), ""));
+    }
+
+    public HttpServer(int port, Map<Oak, String> oakMap) throws Exception {
+        context = new ServletContextHandler();
+        context.setContextPath("/");
+
+        for (Map.Entry<Oak, String> entry : oakMap.entrySet()) {
+            addServlets(entry.getKey(), entry.getValue());
+        }
+
+        server = new Server(port);
+        server.setHandler(context);
+        server.start();
+    }
+
+    public void join() throws Exception {
+        server.join();
+    }
+
+    public void stop() throws Exception {
+        server.stop();
+    }
+
+    private void addServlets(Oak oak, String path) {
+        Jcr jcr = new Jcr(oak);
+
+        // 1 - OakServer
+        ContentRepository repository = jcr.createContentRepository();
+        ServletHolder holder = new ServletHolder(new OakServlet(repository));
+        context.addServlet(holder, path + "/*");
+
+        ServletHolder remoteServlet = new ServletHolder(new RemoteServlet(new 
ContentRemoteRepository(repository)));
+        context.addServlet(remoteServlet, path + "/api/*");
+
+        // 2 - Webdav Server on JCR repository
+        final Repository jcrRepository = jcr.createRepository();
+        @SuppressWarnings("serial")
+        ServletHolder webdav = new ServletHolder(new SimpleWebdavServlet() {
+            @Override
+            public Repository getRepository() {
+                return jcrRepository;
+            }
+        });
+        
webdav.setInitParameter(SimpleWebdavServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, 
path + "/webdav");
+        
webdav.setInitParameter(AbstractWebdavServlet.INIT_PARAM_AUTHENTICATE_HEADER, 
"Basic realm=\"Oak\"");
+        context.addServlet(webdav, path + "/webdav/*");
+
+        // 3 - JCR Remoting Server
+        @SuppressWarnings("serial")
+        ServletHolder jcrremote = new ServletHolder(new JcrRemotingServlet() {
+            @Override
+            protected Repository getRepository() {
+                return jcrRepository;
+            }
+        });
+        
jcrremote.setInitParameter(JCRWebdavServerServlet.INIT_PARAM_RESOURCE_PATH_PREFIX,
 path + "/jcrremote");
+        
jcrremote.setInitParameter(AbstractWebdavServlet.INIT_PARAM_AUTHENTICATE_HEADER,
 "Basic realm=\"Oak\"");
+        context.addServlet(jcrremote, path + "/jcrremote/*");
+    }
+
+}

Added: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ServerCommand.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ServerCommand.java?rev=1799869&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ServerCommand.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ServerCommand.java
 Mon Jun 26 10:51:10 2017
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jackrabbit.oak.run;
+
+import static java.util.Arrays.asList;
+
+import java.io.File;
+import java.net.URI;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import joptsimple.OptionParser;
+import joptsimple.OptionSet;
+import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.fixture.OakFixture;
+import org.apache.jackrabbit.oak.run.commons.Command;
+
+class ServerCommand implements Command {
+
+    private static final String DEFAULT_URI = "http://localhost:8080/";;
+
+    private static final int MB = 1024 * 1024;
+
+    private static void startOakServer(OakFixture oakFixture, String uri, 
List<Integer> cIds) throws Exception {
+        Map<Oak, String> m;
+        if (cIds.isEmpty()) {
+            System.out.println("Starting " + oakFixture.toString() + " 
repository -> " + uri);
+            m = Collections.singletonMap(oakFixture.getOak(0), "");
+        } else {
+            System.out.println("Starting a clustered repository " + 
oakFixture.toString() + " -> " + uri);
+            m = new HashMap<Oak, String>(cIds.size());
+
+            for (int i = 0; i < cIds.size(); i++) {
+                m.put(oakFixture.getOak(i), "/node" + i);
+            }
+        }
+        new HttpServer(URI.create(uri).getPort(), m);
+    }
+
+    @Override
+    public void execute(String... args) throws Exception {
+        OptionParser parser = new OptionParser();
+
+        OptionSpec<Integer> cache = parser.accepts("cache", "cache size 
(MB)").withRequiredArg().ofType(Integer.class).defaultsTo(100);
+
+        // tar/h2 specific option
+        OptionSpec<File> base = parser.accepts("base", "Base 
directory").withRequiredArg().ofType(File.class);
+        OptionSpec<Boolean> mmap = parser.accepts("mmap", "TarMK memory 
mapping").withOptionalArg().ofType(Boolean.class).defaultsTo("64".equals(System.getProperty("sun.arch.data.model")));
+
+        // mongo specific options:
+        OptionSpec<String> host = parser.accepts("host", "MongoDB 
host").withRequiredArg().defaultsTo("127.0.0.1");
+        OptionSpec<Integer> port = parser.accepts("port", "MongoDB 
port").withRequiredArg().ofType(Integer.class).defaultsTo(27017);
+        OptionSpec<String> dbName = parser.accepts("db", "MongoDB 
database").withRequiredArg();
+        OptionSpec<Integer> clusterIds = parser.accepts("clusterIds", "Cluster 
Ids").withOptionalArg().ofType(Integer.class).withValuesSeparatedBy(',');
+
+        // RDB specific options
+        OptionSpec<String> rdbjdbcuri = parser.accepts("rdbjdbcuri", "RDB JDBC 
URI").withOptionalArg().defaultsTo("");
+        OptionSpec<String> rdbjdbcuser = parser.accepts("rdbjdbcuser", "RDB 
JDBC user").withOptionalArg().defaultsTo("");
+        OptionSpec<String> rdbjdbcpasswd = parser.accepts("rdbjdbcpasswd", 
"RDB JDBC password").withOptionalArg().defaultsTo("");
+        OptionSpec<String> rdbjdbctableprefix = 
parser.accepts("rdbjdbctableprefix", "RDB JDBC table prefix")
+                .withOptionalArg().defaultsTo("");
+
+        OptionSpec<String> nonOption = parser.nonOptions();
+        OptionSpec<?> help = parser.acceptsAll(asList("h", "?", "help"), "show 
help").forHelp();
+        OptionSet options = parser.parse(args);
+
+        if (options.has(help)) {
+            parser.printHelpOn(System.out);
+            System.exit(0);
+        }
+
+        OakFixture oakFixture;
+
+        List<String> arglist = nonOption.values(options);
+        String uri = (arglist.isEmpty()) ? DEFAULT_URI : arglist.get(0);
+        String fix = (arglist.size() <= 1) ? OakFixture.OAK_MEMORY : 
arglist.get(1);
+
+        int cacheSize = cache.value(options);
+        List<Integer> cIds = Collections.emptyList();
+        if (fix.startsWith(OakFixture.OAK_MEMORY)) {
+            if (OakFixture.OAK_MEMORY_NS.equals(fix)) {
+                oakFixture = OakFixture.getMemoryNS(cacheSize * MB);
+            } else {
+                oakFixture = OakFixture.getMemory(cacheSize * MB);
+            }
+        } else if (fix.startsWith(OakFixture.OAK_MONGO)) {
+            cIds = clusterIds.values(options);
+            String db = dbName.value(options);
+            if (db == null) {
+                throw new IllegalArgumentException("Required argument db 
missing");
+            }
+            if (OakFixture.OAK_MONGO_NS.equals(fix)) {
+                oakFixture = OakFixture.getMongoNS(
+                        host.value(options), port.value(options),
+                        db, false,
+                        cacheSize * MB);
+            } else {
+                oakFixture = OakFixture.getMongo(
+                        host.value(options), port.value(options),
+                        db, false, cacheSize * MB);
+            }
+        } else if (fix.equals(OakFixture.OAK_SEGMENT_TAR)) {
+            File baseFile = base.value(options);
+            if (baseFile == null) {
+                throw new IllegalArgumentException("Required argument base 
missing.");
+            }
+            oakFixture = OakFixture.getSegmentTar(OakFixture.OAK_SEGMENT_TAR, 
baseFile, 256, cacheSize, mmap.value(options), false);
+        } else if (fix.equals(OakFixture.OAK_RDB)) {
+            oakFixture = OakFixture.getRDB(OakFixture.OAK_RDB, 
rdbjdbcuri.value(options), rdbjdbcuser.value(options),
+                    rdbjdbcpasswd.value(options), 
rdbjdbctableprefix.value(options), false, cacheSize);
+        } else {
+            throw new IllegalArgumentException("Unsupported repository setup " 
+ fix);
+        }
+
+        startOakServer(oakFixture, uri, cIds);
+    }
+
+}
\ No newline at end of file


Reply via email to