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