Merge branch 'stable-2.13'

* stable-2.13:
  Deprecate plugin

Change-Id: I4e6056122eef064f3bcadc93bf353657a675cd98
diff --git a/.buckconfig b/.buckconfig
deleted file mode 100644
index 275ec6a..0000000
--- a/.buckconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-[alias]
-  sync-index = //:sync-index
-  plugin = //:sync-index
-  src = //:sync-index-sources
-
-[java]
-  jar_spool_mode = direct_to_jar
-  src_roots = java, resources
-  source_level = 8
-  target_level = 8
-[project]
-  ignore = .git, eclipse-out/
-  parallel_parsing = true
-
-[cache]
-  mode = dir
-  dir = buck-out/cache
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 9556f7c..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-/.buckd/
-/.buckversion
-/.classpath
-/.project
-/.settings/
-/.watchmanconfig
-/.primary_build_tool
-/buck-out/
-/bucklets
-/eclipse-out/
-/bazel-bin
-/bazel-genfiles
-/bazel-out
-/bazel-reviewers
-/bazel-testlogs
-/bazel-sync-index
diff --git a/BUCK b/BUCK
deleted file mode 100644
index 52aaea7..0000000
--- a/BUCK
+++ /dev/null
@@ -1,79 +0,0 @@
-include_defs('//bucklets/gerrit_plugin.bucklet')
-include_defs('//bucklets/java_sources.bucklet')
-include_defs('//bucklets/maven_jar.bucklet')
-
-SOURCES = glob(['src/main/java/**/*.java'])
-RESOURCES = glob(['src/main/resources/**/*'])
-
-TEST_DEPS = GERRIT_PLUGIN_API + GERRIT_TESTS + [
-  ':sync-index__plugin',
-  ':wiremock',
-  ':mockito',
-]
-
-gerrit_plugin(
-  name = 'sync-index',
-  srcs = SOURCES,
-  resources = RESOURCES,
-  manifest_entries = [
-    'Gerrit-PluginName: sync-index',
-    'Gerrit-ApiType: plugin',
-    'Gerrit-Module: com.ericsson.gerrit.plugins.syncindex.Module',
-    'Gerrit-HttpModule: com.ericsson.gerrit.plugins.syncindex.HttpModule',
-    'Implementation-Title: sync-index plugin',
-    'Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/sync-index',
-    'Implementation-Vendor: Ericsson',
-  ],
-)
-
-java_sources(
-  name = 'sync-index-sources',
-  srcs = SOURCES + RESOURCES,
-)
-
-java_library(
-  name = 'classpath',
-  deps = TEST_DEPS,
-)
-
-java_test(
-  name = 'sync-index_tests',
-  srcs = glob(['src/test/java/**/*.java']),
-  labels = ['sync-index'],
-  deps = TEST_DEPS,
-)
-
-maven_jar(
-  name = 'wiremock',
-  id = 'com.github.tomakehurst:wiremock-standalone:2.1.12',
-  sha1 = 'fee73e0913ff3801cf83e660a14d6e4aac9a9cbd',
-  license = 'Apache2.0',
-  attach_source = False,
-)
-
-maven_jar(
-  name = 'mockito',
-  id = 'org.mockito:mockito-core:2.5.0',
-  sha1 = 'be28d46a52c7f2563580adeca350145e9ce916f8',
-  license = 'MIT',
-  deps = [
-    ':byte-buddy',
-    ':objenesis',
-  ],
-)
-
-maven_jar(
-  name = 'byte-buddy',
-  id = 'net.bytebuddy:byte-buddy:1.5.12',
-  sha1 = 'b1ba1d15f102b36ed43b826488114678d6d413da',
-  license = 'DO_NOT_DISTRIBUTE',
-  attach_source = False,
-)
-
-maven_jar(
-  name = 'objenesis',
-  id = 'org.objenesis:objenesis:2.4',
-  sha1 = '2916b6c96b50c5b3ec4452ed99401db745aabb27',
-  license = 'DO_NOT_DISTRIBUTE',
-  attach_source = False,
-)
diff --git a/BUILD b/BUILD
deleted file mode 100644
index ed6ffe4..0000000
--- a/BUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-load("//tools/bzl:junit.bzl", "junit_tests")
-load(
-    "//tools/bzl:plugin.bzl",
-    "gerrit_plugin",
-    "PLUGIN_DEPS",
-    "PLUGIN_TEST_DEPS",
-)
-
-gerrit_plugin(
-    name = "sync-index",
-    srcs = glob(["src/main/java/**/*.java"]),
-    resources = glob(["src/main/resources/**/*"]),
-    manifest_entries = [
-        'Gerrit-PluginName: sync-index',
-        'Gerrit-Module: com.ericsson.gerrit.plugins.syncindex.Module',
-        'Gerrit-HttpModule: com.ericsson.gerrit.plugins.syncindex.HttpModule',
-        'Implementation-Title: sync-index plugin',
-        'Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/sync-index',
-        'Implementation-Vendor: Ericsson',
-    ],
-)
-
-junit_tests(
-    name = "sync_index_tests",
-    srcs = glob(["src/test/java/**/*.java"]),
-    tags = ["sync-index", "local"],
-    deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-        "@wiremock//jar",
-        "@mockito//jar",
-        "@byte-buddy//jar",
-        "@objenesis//jar",
-        ":sync-index__plugin",
-    ],
-)
diff --git a/README-THIS-REPO-IS-DEPRECATED.txt b/README-THIS-REPO-IS-DEPRECATED.txt
new file mode 100644
index 0000000..497ef2a
--- /dev/null
+++ b/README-THIS-REPO-IS-DEPRECATED.txt
@@ -0,0 +1,3 @@
+This plugin is deprecated. The functionality has been merged into
+
+https://gerrit-review.googlesource.com/#/admin/projects/plugins/high-availability
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index ca16ea3..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,51 +0,0 @@
-workspace(name = "sync_index")
-load("//:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
-    commit = "cb66cc0c8e11fcdc848c4606f1f1ef3354649155",
-    #local_path = "/home/davido/projects/bazlets",
-)
-
-#Snapshot Plugin API
-load(
-    "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
-    "gerrit_api_maven_local",
-)
-
-# Load snapshot Plugin API
-gerrit_api_maven_local()
-
-# Release Plugin API
-#load(
-#   "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
-#   "gerrit_api",
-#)
-
-# Load release Plugin API
-#gerrit_api()
-
-load("@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl", "maven_jar")
-
-maven_jar(
-    name = "wiremock",
-    artifact = "com.github.tomakehurst:wiremock-standalone:2.4.1",
-    sha1 = "228d3047147fffa0f12771f5dc2b3cd3b38c454b",
-)
-
-maven_jar(
-    name = 'mockito',
-    artifact = 'org.mockito:mockito-core:2.5.0',
-    sha1 = 'be28d46a52c7f2563580adeca350145e9ce916f8',
-)
-
-maven_jar(
-    name = 'byte-buddy',
-    artifact = 'net.bytebuddy:byte-buddy:1.5.12',
-    sha1 = 'b1ba1d15f102b36ed43b826488114678d6d413da',
-)
-
-maven_jar(
-    name = 'objenesis',
-    artifact = 'org.objenesis:objenesis:2.4',
-    sha1 = '2916b6c96b50c5b3ec4452ed99401db745aabb27',
-)
diff --git a/WORKSPACE.in_gerrit_tree b/WORKSPACE.in_gerrit_tree
deleted file mode 100644
index 511225c..0000000
--- a/WORKSPACE.in_gerrit_tree
+++ /dev/null
@@ -1,6 +0,0 @@
-
-maven_jar(
-    name = "wiremock",
-    artifact = "com.github.tomakehurst:wiremock-standalone:2.4.1",
-    sha1 = "228d3047147fffa0f12771f5dc2b3cd3b38c454b",
-)
diff --git a/bazlets.bzl b/bazlets.bzl
deleted file mode 100644
index e14e488..0000000
--- a/bazlets.bzl
+++ /dev/null
@@ -1,17 +0,0 @@
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
-    commit,
-    local_path = None
-  ):
-  if not local_path:
-      native.git_repository(
-          name = NAME,
-          remote = "https://gerrit.googlesource.com/bazlets",
-          commit = commit,
-      )
-  else:
-      native.local_repository(
-          name = NAME,
-          path = local_path,
-      )
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
deleted file mode 100644
index 8d5f0e9..0000000
--- a/lib/gerrit/BUCK
+++ /dev/null
@@ -1,20 +0,0 @@
-include_defs('//bucklets/maven_jar.bucklet')
-
-VER = '2.14-SNAPSHOT'
-REPO = MAVEN_LOCAL
-
-maven_jar(
-  name = 'acceptance-framework',
-  id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
-  license = 'Apache2.0',
-  attach_source = False,
-  repository = REPO,
-)
-
-maven_jar(
-  name = 'plugin-api',
-  id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  license = 'Apache2.0',
-  attach_source = False,
-  repository = REPO,
-)
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Configuration.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/Configuration.java
deleted file mode 100644
index a93ba84..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Configuration.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Strings;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.server.config.PluginConfig;
-import com.google.gerrit.server.config.PluginConfigFactory;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-class Configuration {
-  private static final int DEFAULT_TIMEOUT_MS = 5000;
-  private static final int DEFAULT_MAX_TRIES = 5;
-  private static final int DEFAULT_RETRY_INTERVAL = 1000;
-  private static final int DEFAULT_THREAD_POOL_SIZE = 1;
-
-  private final String url;
-  private final String user;
-  private final String password;
-  private final int connectionTimeout;
-  private final int socketTimeout;
-  private final int maxTries;
-  private final int retryInterval;
-  private final int threadPoolSize;
-
-  @Inject
-  Configuration(PluginConfigFactory config,
-      @PluginName String pluginName) {
-    PluginConfig cfg = config.getFromGerritConfig(pluginName, true);
-    url = Strings.nullToEmpty(cfg.getString("url"));
-    user = Strings.nullToEmpty(cfg.getString("user"));
-    password = Strings.nullToEmpty(cfg.getString("password"));
-    connectionTimeout = cfg.getInt("connectionTimeout", DEFAULT_TIMEOUT_MS);
-    socketTimeout = cfg.getInt("socketTimeout", DEFAULT_TIMEOUT_MS);
-    maxTries = cfg.getInt("maxTries", DEFAULT_MAX_TRIES);
-    retryInterval = cfg.getInt("retryInterval", DEFAULT_RETRY_INTERVAL);
-    threadPoolSize = cfg.getInt("threadPoolSize", DEFAULT_THREAD_POOL_SIZE);
-  }
-
-  int getConnectionTimeout() {
-    return connectionTimeout;
-  }
-
-  int getMaxTries() {
-    return maxTries;
-  }
-
-  int getRetryInterval() {
-    return retryInterval;
-  }
-
-  int getSocketTimeout() {
-    return socketTimeout;
-  }
-
-  String getUrl() {
-    return CharMatcher.is('/').trimTrailingFrom(url);
-  }
-
-  String getUser() {
-    return user;
-  }
-
-  String getPassword() {
-    return password;
-  }
-
-  public int getThreadPoolSize() {
-    return threadPoolSize;
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Context.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/Context.java
deleted file mode 100644
index 67abc1e..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Context.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-/**
- * Allows to tag a forwarded event to avoid infinitely looping events.
- */
-class Context {
-  private static final ThreadLocal<Boolean> FORWARDED_EVENT =
-      new ThreadLocal<Boolean>() {
-        @Override
-        protected Boolean initialValue() {
-          return false;
-        }
-      };
-
-  private Context() {
-  }
-
-  static Boolean isForwardedEvent() {
-    return FORWARDED_EVENT.get();
-  }
-
-  static void setForwardedEvent(Boolean b) {
-    FORWARDED_EVENT.set(b);
-  }
-
-  static void unsetForwardedEvent() {
-    FORWARDED_EVENT.remove();
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProvider.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProvider.java
deleted file mode 100644
index 07cad78..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProvider.java
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.HttpRequestRetryHandler;
-import org.apache.http.client.ServiceUnavailableRetryStrategy;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.HttpClientConnectionManager;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.protocol.HttpContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.URI;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-/**
- * Provides an HTTP client with SSL capabilities.
- */
-class HttpClientProvider implements Provider<CloseableHttpClient> {
-  private static final Logger log = LoggerFactory
-      .getLogger(HttpClientProvider.class);
-  private static final int CONNECTIONS_PER_ROUTE = 100;
-  // Up to 2 target instances with the max number of connections per host:
-  private static final int MAX_CONNECTIONS = 2 * CONNECTIONS_PER_ROUTE;
-
-  private static final int ERROR_CODES = 500;
-  private static final int MAX_CONNECTION_INACTIVITY = 10000;
-
-  private final Configuration cfg;
-  private final SSLConnectionSocketFactory sslSocketFactory;
-
-  @Inject
-  HttpClientProvider(Configuration cfg) {
-    this.cfg = cfg;
-    this.sslSocketFactory = buildSslSocketFactory();
-  }
-
-  @Override
-  public CloseableHttpClient get() {
-    return HttpClients.custom().setSSLSocketFactory(sslSocketFactory)
-        .setConnectionManager(customConnectionManager())
-        .setDefaultCredentialsProvider(buildCredentials())
-        .setDefaultRequestConfig(customRequestConfig())
-        .setRetryHandler(customRetryHandler())
-        .setServiceUnavailableRetryStrategy(customServiceUnavailRetryStrategy())
-        .build();
-  }
-
-  private RequestConfig customRequestConfig() {
-    return RequestConfig.custom().setConnectTimeout(cfg.getConnectionTimeout())
-        .setSocketTimeout(cfg.getSocketTimeout())
-        .setConnectionRequestTimeout(cfg.getConnectionTimeout())
-        .build();
-  }
-
-  private HttpRequestRetryHandler customRetryHandler() {
-    return new HttpRequestRetryHandler() {
-      @Override
-      public boolean retryRequest(IOException exception, int executionCount,
-          HttpContext httpContext) {
-        if (executionCount > cfg.getMaxTries()
-            || exception instanceof SSLException) {
-          return false;
-        }
-        logRetry(exception.getMessage());
-        try {
-          Thread.sleep(cfg.getRetryInterval());
-        } catch (InterruptedException e) {
-          Thread.currentThread().interrupt();
-          return false;
-        }
-        return true;
-      }
-    };
-  }
-
-  private ServiceUnavailableRetryStrategy customServiceUnavailRetryStrategy() {
-    return new ServiceUnavailableRetryStrategy() {
-      @Override
-      public boolean retryRequest(HttpResponse response, int executionCount,
-          HttpContext context) {
-        if (executionCount > cfg.getMaxTries()) {
-          return false;
-        }
-        if (response.getStatusLine().getStatusCode() >= ERROR_CODES) {
-          logRetry(response.getStatusLine().getReasonPhrase());
-          return true;
-        }
-        return false;
-      }
-
-      @Override
-      public long getRetryInterval() {
-        return cfg.getRetryInterval();
-      }
-    };
-  }
-
-  private void logRetry(String cause) {
-    log.debug("Retrying request to '" + cfg.getUrl() + "' Cause: " + cause);
-  }
-
-  private HttpClientConnectionManager customConnectionManager() {
-    Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
-        .<ConnectionSocketFactory> create().register("https", sslSocketFactory)
-        .register("http", PlainConnectionSocketFactory.INSTANCE).build();
-    PoolingHttpClientConnectionManager connManager =
-        new PoolingHttpClientConnectionManager(socketFactoryRegistry);
-    connManager.setDefaultMaxPerRoute(CONNECTIONS_PER_ROUTE);
-    connManager.setMaxTotal(MAX_CONNECTIONS);
-    connManager.setValidateAfterInactivity(MAX_CONNECTION_INACTIVITY);
-    return connManager;
-  }
-
-  private SSLConnectionSocketFactory buildSslSocketFactory() {
-    return new SSLConnectionSocketFactory(buildSslContext(),
-        NoopHostnameVerifier.INSTANCE);
-  }
-
-  private SSLContext buildSslContext() {
-    try {
-      TrustManager[] trustAllCerts =
-          new TrustManager[] {new DummyX509TrustManager()};
-      SSLContext context = SSLContext.getInstance("TLS");
-      context.init(null, trustAllCerts, null);
-      return context;
-    } catch (KeyManagementException | NoSuchAlgorithmException e) {
-      log.warn("Error building SSLContext object", e);
-      return null;
-    }
-  }
-
-  private BasicCredentialsProvider buildCredentials() {
-    URI uri = URI.create(cfg.getUrl());
-    BasicCredentialsProvider creds = new BasicCredentialsProvider();
-    creds.setCredentials(new AuthScope(uri.getHost(), uri.getPort()),
-        new UsernamePasswordCredentials(cfg.getUser(), cfg.getPassword()));
-    return creds;
-  }
-
-  private static class DummyX509TrustManager implements X509TrustManager {
-    @Override
-    public X509Certificate[] getAcceptedIssuers() {
-      return new X509Certificate[0];
-    }
-
-    @Override
-    public void checkClientTrusted(X509Certificate[] certs, String authType) {
-      // no check
-    }
-
-    @Override
-    public void checkServerTrusted(X509Certificate[] certs, String authType) {
-      // no check
-    }
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpModule.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpModule.java
deleted file mode 100644
index 334c195..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpModule.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.gerrit.httpd.plugins.HttpPluginModule;
-
-class HttpModule extends HttpPluginModule {
-  @Override
-  protected void configureServlets() {
-    serveRegex("/index/\\d+$").with(SyncIndexRestApiServlet.class);
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpSession.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpSession.java
deleted file mode 100644
index 159acad..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/HttpSession.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.inject.Inject;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.impl.client.CloseableHttpClient;
-
-import java.io.IOException;
-
-class HttpSession {
-  private final CloseableHttpClient httpClient;
-  private final String url;
-
-  @Inject
-  HttpSession(CloseableHttpClient httpClient,
-      @SyncUrl String url) {
-    this.httpClient = httpClient;
-    this.url = url;
-  }
-
-  IndexResult post(String endpoint) throws IOException {
-    return httpClient.execute(new HttpPost(url + endpoint),
-        new IndexResponseHandler());
-  }
-
-  IndexResult delete(String endpoint) throws IOException {
-    return httpClient.execute(new HttpDelete(url + endpoint),
-        new IndexResponseHandler());
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java
deleted file mode 100644
index 1027565..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandler.java
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.common.base.Objects;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
-import com.google.inject.Inject;
-
-import java.util.Collections;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executor;
-
-class IndexEventHandler implements ChangeIndexedListener {
-  private final Executor executor;
-  private final RestSession restClient;
-  private final String pluginName;
-  private final Set<SyncIndexTask> queuedTasks = Collections
-      .newSetFromMap(new ConcurrentHashMap<SyncIndexTask, Boolean>());
-
-  @Inject
-  IndexEventHandler(@SyncIndexExecutor Executor executor,
-      @PluginName String pluginName,
-      RestSession restClient) {
-    this.restClient = restClient;
-    this.executor = executor;
-    this.pluginName = pluginName;
-  }
-
-  @Override
-  public void onChangeIndexed(int id) {
-    executeIndexTask(id, false);
-  }
-
-  @Override
-  public void onChangeDeleted(int id) {
-    executeIndexTask(id, true);
-  }
-
-  private void executeIndexTask(int id, boolean deleted) {
-    if (!Context.isForwardedEvent()) {
-      SyncIndexTask syncIndexTask = new SyncIndexTask(id, deleted);
-      if (queuedTasks.add(syncIndexTask)) {
-        executor.execute(syncIndexTask);
-      }
-    }
-  }
-
-  class SyncIndexTask implements Runnable {
-    private int changeId;
-    private boolean deleted;
-
-    SyncIndexTask(int changeId, boolean deleted) {
-      this.changeId = changeId;
-      this.deleted = deleted;
-    }
-
-    @Override
-    public void run() {
-      queuedTasks.remove(this);
-      if (deleted) {
-        restClient.deleteFromIndex(changeId);
-      } else {
-        restClient.index(changeId);
-      }
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hashCode(changeId, deleted);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-      if (!(obj instanceof SyncIndexTask)) {
-        return false;
-      }
-      SyncIndexTask other = (SyncIndexTask) obj;
-      return changeId == other.changeId && deleted == other.deleted;
-    }
-
-    @Override
-    public String toString() {
-      return String.format("[%s] Index change %s in target instance",
-          pluginName, changeId);
-    }
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandler.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandler.java
deleted file mode 100644
index 2d549ae..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandler.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-class IndexResponseHandler implements ResponseHandler<IndexResult> {
-
-  static class IndexResult {
-    private boolean successful;
-    private String message;
-
-    IndexResult(boolean successful, String message) {
-      this.successful = successful;
-      this.message = message;
-    }
-
-    boolean isSuccessful() {
-      return successful;
-    }
-
-    String getMessage() {
-      return message;
-    }
-  }
-
-  private static final Logger log = LoggerFactory
-      .getLogger(IndexResponseHandler.class);
-
-  @Override
-  public IndexResult handleResponse(HttpResponse response) {
-    return new IndexResult(isSuccessful(response), parseResponse(response));
-  }
-
-  private boolean isSuccessful(HttpResponse response) {
-    return response.getStatusLine().getStatusCode() == SC_NO_CONTENT;
-  }
-
-  private String parseResponse(HttpResponse response) {
-    HttpEntity entity = response.getEntity();
-    String asString = "";
-    if (entity != null) {
-      try {
-        asString = EntityUtils.toString(entity);
-      } catch (IOException e) {
-        log.error("Error parsing entity", e);
-      }
-    }
-    return asString;
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java
deleted file mode 100644
index 314d119..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/Module.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.gerrit.extensions.events.ChangeIndexedListener;
-import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-
-import org.apache.http.impl.client.CloseableHttpClient;
-
-import java.util.concurrent.Executor;
-
-class Module extends LifecycleModule {
-
-  @Override
-  protected void configure() {
-    bind(CloseableHttpClient.class).toProvider(HttpClientProvider.class)
-        .in(Scopes.SINGLETON);
-    bind(Configuration.class).in(Scopes.SINGLETON);
-    bind(HttpSession.class);
-    bind(RestSession.class);
-    bind(Executor.class)
-        .annotatedWith(SyncIndexExecutor.class)
-        .toProvider(SyncIndexExecutorProvider.class);
-    listener().to(SyncIndexExecutorProvider.class);
-    DynamicSet.bind(binder(), ChangeIndexedListener.class).to(
-        IndexEventHandler.class);
-  }
-
-  @Provides
-  @SyncUrl
-  String syncUrl(Configuration config) {
-    return config.getUrl();
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/RestSession.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/RestSession.java
deleted file mode 100644
index 9cdd4ea..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/RestSession.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.common.base.Joiner;
-import com.google.gerrit.extensions.annotations.PluginName;
-import com.google.inject.Inject;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-class RestSession {
-  private static final Logger log = LoggerFactory.getLogger(RestSession.class);
-
-  private final HttpSession httpSession;
-  private final String pluginName;
-
-  @Inject
-  RestSession(HttpSession httpClient, @PluginName String pluginName) {
-    this.httpSession = httpClient;
-    this.pluginName = pluginName;
-  }
-
-  boolean index(int changeId) {
-    try {
-      IndexResult result = httpSession.post(buildEndpoint(changeId));
-      if (result.isSuccessful()) {
-        return true;
-      }
-      log.error("Unable to index change {}. Cause: {}", changeId,
-          result.getMessage());
-    } catch (IOException e) {
-      log.error("Error trying to index change " + changeId, e);
-    }
-    return false;
-  }
-
-  boolean deleteFromIndex(int changeId) {
-    try {
-      IndexResult result = httpSession.delete(buildEndpoint(changeId));
-      if (result.isSuccessful()) {
-        return true;
-      }
-      log.error("Unable to delete from index change {}. Cause: {}", changeId,
-          result.getMessage());
-    } catch (IOException e) {
-      log.error("Error trying to delete from index change " + changeId, e);
-    }
-    return false;
-  }
-
-  private String buildEndpoint(int changeId) {
-    return Joiner.on("/").join("/plugins", pluginName, "index", changeId);
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutor.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutor.java
deleted file mode 100644
index 75932e9..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutor.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import com.google.inject.BindingAnnotation;
-
-import java.lang.annotation.Retention;
-
-@Retention(RUNTIME)
-@BindingAnnotation
-@interface SyncIndexExecutor {
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProvider.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProvider.java
deleted file mode 100644
index 7a53fbe..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProvider.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import com.google.gerrit.extensions.events.LifecycleListener;
-import com.google.gerrit.server.git.WorkQueue;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-
-import java.util.concurrent.Executor;
-
-@Singleton
-class SyncIndexExecutorProvider implements Provider<Executor>,
-    LifecycleListener {
-  private WorkQueue.Executor executor;
-
-  @Inject
-  SyncIndexExecutorProvider(WorkQueue workQueue, Configuration config) {
-    executor =
-        workQueue.createQueue(config.getThreadPoolSize(), "Sync remote index");
-  }
-
-  @Override
-  public void start() {
-    //do nothing
-  }
-
-  @Override
-  public void stop() {
-    executor.shutdown();
-    executor = null;
-  }
-
-  @Override
-  public Executor get() {
-    return executor;
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java
deleted file mode 100644
index b066628..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static javax.servlet.http.HttpServletResponse.SC_CONFLICT;
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.index.change.ChangeIndexer;
-import com.google.gwtorm.server.OrmException;
-import com.google.gwtorm.server.SchemaFactory;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Singleton
-class SyncIndexRestApiServlet extends HttpServlet {
-  private static final long serialVersionUID = -1L;
-  private static final Logger logger =
-      LoggerFactory.getLogger(SyncIndexRestApiServlet.class);
-  private static final Map<Change.Id, AtomicInteger> changeIdLocks =
-      new HashMap<>();
-
-  private final ChangeIndexer indexer;
-  private final SchemaFactory<ReviewDb> schemaFactory;
-
-  @Inject
-  SyncIndexRestApiServlet(ChangeIndexer indexer,
-      SchemaFactory<ReviewDb> schemaFactory) {
-    this.indexer = indexer;
-    this.schemaFactory = schemaFactory;
-  }
-
-  @Override
-  protected void doPost(HttpServletRequest req, HttpServletResponse rsp)
-      throws IOException, ServletException {
-    process(req, rsp, "index");
-  }
-
-  @Override
-  protected void doDelete(HttpServletRequest req, HttpServletResponse rsp)
-      throws IOException, ServletException {
-    process(req, rsp, "delete");
-  }
-
-  private void process(HttpServletRequest req, HttpServletResponse rsp,
-      String operation) {
-    rsp.setContentType("text/plain");
-    rsp.setCharacterEncoding("UTF-8");
-    String path = req.getPathInfo();
-    String changeId = path.substring(path.lastIndexOf('/') + 1);
-    Change.Id id = Change.Id.parse(changeId);
-    try {
-      Context.setForwardedEvent(true);
-      index(id, operation);
-      rsp.setStatus(SC_NO_CONTENT);
-    } catch (IOException e) {
-      sendError(rsp,SC_CONFLICT, e.getMessage());
-      logger.error("Unable to update index", e);
-    } catch (OrmException e) {
-      String msg = "Error trying to find a change \n";
-      sendError(rsp,SC_NOT_FOUND, msg);
-      logger.debug(msg, e);
-    } finally {
-      Context.unsetForwardedEvent();
-    }
-  }
-
-  private static void sendError(HttpServletResponse rsp, int statusCode,
-      String message) {
-    try {
-      rsp.sendError(statusCode, message);
-    } catch (IOException e) {
-      logger.error("Failed to send error messsage: " + e.getMessage(), e);
-    }
-  }
-
-  private void index(Change.Id id, String operation)
-      throws IOException, OrmException {
-    AtomicInteger changeIdLock = getAndIncrementChangeIdLock(id);
-    synchronized (changeIdLock) {
-      if ("index".equals(operation)) {
-        try (ReviewDb db = schemaFactory.open()) {
-          Change change = db.changes().get(id);
-          if (change == null) {
-            indexer.delete(id);
-            return;
-          }
-          indexer.index(db, change);
-        }
-        logger.debug("Change {} successfully indexed", id);
-      }
-      if ("delete".equals(operation)) {
-        indexer.delete(id);
-        logger.debug("Change {} successfully deleted from index", id);
-      }
-    }
-    if (changeIdLock.decrementAndGet() == 0) {
-      removeChangeIdLock(id);
-    }
-  }
-
-  private AtomicInteger getAndIncrementChangeIdLock(Change.Id id) {
-    synchronized (changeIdLocks) {
-      AtomicInteger changeIdLock = changeIdLocks.get(id);
-      if (changeIdLock == null) {
-        changeIdLock = new AtomicInteger(1);
-        changeIdLocks.put(id, changeIdLock);
-      } else {
-        changeIdLock.incrementAndGet();
-      }
-      return changeIdLock;
-    }
-  }
-
-  private void removeChangeIdLock(Change.Id id) {
-    synchronized (changeIdLocks) {
-      changeIdLocks.remove(id);
-    }
-  }
-}
diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncUrl.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncUrl.java
deleted file mode 100644
index 8b3ac1a..0000000
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncUrl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import com.google.inject.BindingAnnotation;
-
-import java.lang.annotation.Retention;
-
-@Retention(RUNTIME)
-@BindingAnnotation
-@interface SyncUrl {
-}
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
deleted file mode 100644
index f104962..0000000
--- a/src/main/resources/Documentation/about.md
+++ /dev/null
@@ -1,11 +0,0 @@
-The @PLUGIN@ plugin allows to synchronize secondary indexes between two Gerrit
-instances sharing the same git repositories and database.
-
-The plugin is installed in both instances and every time the secondary index
-is modified in one of the instances, i.e., a change is added, updated or removed
-from the index, the other instance index is updated accordingly. This way, both
-indexes are kept synchronized.
-
-For this secondary index synchronization to work, http must be enabled in both
-instances and the plugin must be configured with valid credentials. For further
-information, refer to [config](config.md) documentation.
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
deleted file mode 100644
index 7e65e73..0000000
--- a/src/main/resources/Documentation/build.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# Build
-
-This plugin can be built with Bazel or Buck and two build modes are supported:
- * Standalone
- * In Gerrit tree.
-
-Standalone build mode is recommended, as this mode doesn't require local Gerrit
-tree to exist. Moreover, there are some limitations and additional manual steps
-required when building in Gerrit tree mode (see corresponding sections).
-
-## Build standalone
-
-### Bazel
-
-To build the plugin, issue the following command:
-
-```
-  bazel build @PLUGIN@
-```
-
-The output is created in
-
-```
-  bazel-genfiles/@PLUGIN@.jar
-```
-
-To package the plugin sources run:
-
-```
-  bazel build libsync-index__plugin-src.jar
-```
-
-The output is created in:
-
-```
-  bazel-bin/libsync-index__plugin-src.jar
-```
-
-To execute the tests run:
-
-```
-  bazel test sync_index_tests
-```
-
-This project can be imported into the Eclipse IDE:
-
-```
-  ./tools/eclipse.py
-```
-
-### Buck
-
-Clone bucklets library:
-
-```
-  git clone https://gerrit.googlesource.com/bucklets
-```
-
-and link it to @PLUGIN@ directory:
-
-```
-  cd @PLUGIN@ && ln -s ../bucklets .
-```
-
-Add link to the .buckversion file:
-
-```
-  cd @PLUGIN@ && ln -s bucklets/buckversion .buckversion
-```
-
-Add link to the .watchmanconfig file:
-
-```
-  cd @PLUGIN@ && ln -s bucklets/watchmanconfig .watchmanconfig
-```
-
-To build the plugin, issue the following command:
-
-```
-  buck build plugin
-```
-
-The output is created in:
-
-```
-  buck-out/gen/@PLUGIN@.jar
-```
-
-This project can be imported into the Eclipse IDE:
-
-```
-  ./bucklets/tools/eclipse.py
-```
-* Note: wiremock jar should be added manually to classpath. In Eclipse:
-`Project -> Java Build Path -> Add External JARS -> <location of
-wiremock-standalone.jar in local file system>`
-
-To execute the tests run:
-
-```
-  buck test
-```
-
-To build plugin sources run:
-
-```
-  buck build src
-```
-
-The output is created in:
-
-```
-  buck-out/gen/@PLUGIN@-sources.jar
-```
-
-## Build in Gerrit tree
-
-### Bazel
-
-Clone or link this plugin to the plugins directory of Gerrit's source tree, and
-issue the command:
-
-```
-  bazel build plugins/@PLUGIN@
-```
-
-The output is created in
-
-```
-  bazel-genfiles/plugins/@PLUGIN@/@PLUGIN@.jar
-```
-
-This project can be imported into the Eclipse IDE. First, list the plugin in the
-custom plugin list, in `gerrit/tools/bzl/plugins.bzl`:
-
-```
-CUSTOM_PLUGINS = [
-  ...
-  '@PLUGIN@',
-]
-```
-
-and issue the command:
-
-```
-  ./tools/eclipse/project_bzl.py
-```
-
-* Note: wiremock jar should be added manually to classpath. In Eclipse:
-`Project -> Java Build Path -> Add External JARS -> <location of
-wiremock-standalone.jar in local file system>`
-
-To execute the tests, Gerrit WORKSPACE should be patched:
-
-```
-  cat plugins/sync-index/WORKSPACE.in_gerrit_tree >> WORKSPACE
-```
-
-then run:
-
-```
-  bazel test plugins/@PLUGIN@:sync_index_tests
-```
-
-### Buck
-
-Clone or link this plugin to the plugins directory of Gerrit's source tree, and
-issue the command:
-
-```
-  buck build plugins/@PLUGIN@
-```
-
-The output is created in:
-
-```
-  buck-out/gen/plugins/@PLUGIN@/@PLUGIN@.jar
-```
-
-This project can be imported into the Eclipse IDE:
-
-```
-  ./tools/eclipse/project.py
-```
-
-* Note: wiremock jar should be added manually to classpath. In Eclipse:
-`Project -> Java Build Path -> Add External JARS -> <location of
-wiremock-standalone.jar in local file system>`
-
-
-To execute the tests run:
-
-```
-  buck test --include @PLUGIN@
-```
-
-How to build the Gerrit Plugin API is described in the [Gerrit
-documentation](../../../Documentation/dev-buck.html#_extension_and_plugin_api_jar_files).
-
-[Back to @PLUGIN@ documentation index][index]
-
-[index]: index.html
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
deleted file mode 100644
index 48b9e94..0000000
--- a/src/main/resources/Documentation/config.md
+++ /dev/null
@@ -1,51 +0,0 @@
-@PLUGIN@ Configuration
-=========================
-
-In order for the synchronization to work, the @PLUGIN@ plugin must be installed
-in both instances and the following fields should be specified in the
-corresponding Gerrit configuration file:
-
-File 'gerrit.config'
---------------------
-
-[plugin "@PLUGIN@"]
-:  url = target_instance_url
-:  user = username
-:  password = password
-
-plugin.@PLUGIN@.url
-:   Specify the URL for the secondary (target) instance.
-
-plugin.@PLUGIN@.user
-:   Username to connect to the secondary (target) instance.
-
-plugin.@PLUGIN@.password
-:   Password to connect to the secondary (target) instance. This value can
-     also be defined in secure.config.
-
-@PLUGIN@ plugin uses REST API calls to index changes in the target instance. It
-is possible to customize the parameters of the underlying http client doing these
-calls by specifying the following fields:
-
-@PLUGIN@.connectionTimeout
-:   Maximum interval of time in milliseconds the plugin waits for a connection
-    to the target instance. When not specified, the default value is set to 5000ms.
-
-@PLUGIN@.socketTimeout
-:   Maximum interval of time in milliseconds the plugin waits for a response from the
-    target instance once the connection has been established. When not specified,
-    the default value is set to 5000ms.
-
-@PLUGIN@.maxTries
-:   Maximum number of times the plugin should attempt to index the event in the
-    target instance. Setting this value to 0 will disable retries. When not
-    specified, the default value is 5. After this number of failed tries, an error
-    is logged so that admins can re-index the change manually.
-
-@PLUGIN@.retryInterval
-:   The interval of time in milliseconds between the subsequent auto-retries.
-    When not specified, the default value is set to 1000ms.
-
-@PLUGIN@.threadPoolSize
-:   Maximum number of threads used to send index events to the target instance.
-    Defaults to 1.
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ConfigurationTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/ConfigurationTest.java
deleted file mode 100644
index aab72d3..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ConfigurationTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.server.config.PluginConfig;
-import com.google.gerrit.server.config.PluginConfigFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class ConfigurationTest {
-  private static final String PASS = "fakePass";
-  private static final String USER = "fakeUser";
-  private static final String URL = "fakeUrl";
-  private static final String EMPTY = "";
-  private static final boolean CUSTOM_VALUES = true;
-  private static final boolean DEFAULT_VALUES = false;
-  private static final int TIMEOUT = 5000;
-  private static final int MAX_TRIES = 5;
-  private static final int RETRY_INTERVAL = 1000;
-  private static final int THREAD_POOL_SIZE = 1;
-
-  @Mock
-  private PluginConfigFactory cfgFactoryMock;
-  @Mock
-  private PluginConfig configMock;
-  private Configuration configuration;
-  private String pluginName = "sync-events";
-
-  @Before
-  public void setUp() throws Exception {
-    when(cfgFactoryMock.getFromGerritConfig(pluginName, true))
-        .thenReturn(configMock);
-  }
-
-  @Test
-  public void testValuesPresentInGerritConfig() throws Exception {
-    buildMocks(CUSTOM_VALUES);
-    assertThat(configuration.getUrl()).isEqualTo(URL);
-    assertThat(configuration.getUser()).isEqualTo(USER);
-    assertThat(configuration.getPassword()).isEqualTo(PASS);
-    assertThat(configuration.getConnectionTimeout()).isEqualTo(TIMEOUT);
-    assertThat(configuration.getSocketTimeout()).isEqualTo(TIMEOUT);
-    assertThat(configuration.getMaxTries()).isEqualTo(MAX_TRIES);
-    assertThat(configuration.getRetryInterval()).isEqualTo(RETRY_INTERVAL);
-    assertThat(configuration.getThreadPoolSize()).isEqualTo(THREAD_POOL_SIZE);
-  }
-
-  @Test
-  public void testValuesNotPresentInGerritConfig() throws Exception {
-    buildMocks(DEFAULT_VALUES);
-    assertThat(configuration.getUrl()).isEqualTo(EMPTY);
-    assertThat(configuration.getUser()).isEqualTo(EMPTY);
-    assertThat(configuration.getPassword()).isEqualTo(EMPTY);
-    assertThat(configuration.getConnectionTimeout()).isEqualTo(0);
-    assertThat(configuration.getSocketTimeout()).isEqualTo(0);
-    assertThat(configuration.getMaxTries()).isEqualTo(0);
-    assertThat(configuration.getRetryInterval()).isEqualTo(0);
-    assertThat(configuration.getThreadPoolSize()).isEqualTo(0);
-  }
-
-  @Test
-  public void testUrlTrailingSlashIsDropped() throws Exception {
-    when(configMock.getString("url")).thenReturn(URL + "/");
-
-    configuration = new Configuration(cfgFactoryMock, pluginName);
-    assertThat(configuration).isNotNull();
-    assertThat(configuration.getUrl()).isEqualTo(URL);
-  }
-
-  private void buildMocks(boolean values) {
-    when(configMock.getString("url")).thenReturn(values ? URL : null);
-    when(configMock.getString("user")).thenReturn(values ? USER : null);
-    when(configMock.getString("password")).thenReturn(values ? PASS : null);
-    when(configMock.getInt("connectionTimeout", TIMEOUT))
-        .thenReturn(values ? TIMEOUT : 0);
-    when(configMock.getInt("socketTimeout", TIMEOUT))
-        .thenReturn(values ? TIMEOUT : 0);
-    when(configMock.getInt("maxTries", MAX_TRIES))
-        .thenReturn(values ? MAX_TRIES : 0);
-    when(configMock.getInt("retryInterval", RETRY_INTERVAL))
-        .thenReturn(values ? RETRY_INTERVAL : 0);
-    when(configMock.getInt("threadPoolSize", THREAD_POOL_SIZE))
-        .thenReturn(values ? THREAD_POOL_SIZE : 0);
-
-    configuration = new Configuration(cfgFactoryMock, pluginName);
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ContextTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/ContextTest.java
deleted file mode 100644
index a6898b5..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ContextTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-
-
-import org.junit.Test;
-
-public class ContextTest {
-
-  @Test
-  public void testInitialValueNotNull() throws Exception {
-    assertThat(Context.isForwardedEvent()).isNotNull();
-    assertThat(Context.isForwardedEvent()).isFalse();
-  }
-
-  @Test
-  public void testSetForwardedEvent() throws Exception {
-    Context.setForwardedEvent(true);
-    try {
-      assertThat(Context.isForwardedEvent()).isTrue();
-    } finally {
-      Context.unsetForwardedEvent();
-    }
-  }
-
-  @Test
-  public void testUnsetForwardedEvent() throws Exception {
-    Context.setForwardedEvent(true);
-    Context.unsetForwardedEvent();
-    assertThat(Context.isForwardedEvent()).isFalse();
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProviderTest.java
deleted file mode 100644
index 68577b8..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpClientProviderTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.lifecycle.LifecycleModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Scopes;
-
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class HttpClientProviderTest {
-  private static final int TIME_INTERVAL = 1000;
-  private static final String EMPTY = "";
-
-  @Mock
-  private Configuration config;
-
-  @Before
-  public void setUp() throws Exception {
-    when(config.getUrl()).thenReturn(EMPTY);
-    when(config.getUser()).thenReturn(EMPTY);
-    when(config.getPassword()).thenReturn(EMPTY);
-    when(config.getConnectionTimeout()).thenReturn(TIME_INTERVAL);
-    when(config.getSocketTimeout()).thenReturn(TIME_INTERVAL);
-  }
-
-  @Test
-  public void testGet() throws Exception {
-    Injector injector = Guice.createInjector(new TestModule());
-    CloseableHttpClient httpClient1 =
-        injector.getInstance(CloseableHttpClient.class);
-    assertThat(httpClient1).isNotNull();
-    CloseableHttpClient httpClient2 =
-        injector.getInstance(CloseableHttpClient.class);
-    assertThat(httpClient1).isEqualTo(httpClient2);
-  }
-
-  class TestModule extends LifecycleModule {
-    @Override
-    protected void configure() {
-      bind(Configuration.class).toInstance(config);
-      bind(CloseableHttpClient.class).toProvider(HttpClientProvider.class)
-          .in(Scopes.SINGLETON);
-    }
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpSessionTest.java
deleted file mode 100644
index f83b499..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/HttpSessionTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.delete;
-import static com.github.tomakehurst.wiremock.client.WireMock.post;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-import com.github.tomakehurst.wiremock.http.Fault;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
-import com.github.tomakehurst.wiremock.stubbing.Scenario;
-
-
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-import java.net.SocketTimeoutException;
-
-public class HttpSessionTest {
-  private static final int MAX_TRIES = 3;
-  private static final int RETRY_INTERVAL = 250;
-  private static final int TIMEOUT = 500;
-  private static final int ERROR = 500;
-  private static final int OK = 204;
-  private static final int NOT_FOUND = 404;
-  private static final int UNAUTHORIZED = 401;
-
-  private static final String ENDPOINT = "/plugins/sync-index/index/1";
-  private static final String ERROR_MESSAGE = "Error message";
-  private static final String REQUEST_MADE = "Request made";
-  private static final String SECOND_TRY = "Second try";
-  private static final String THIRD_TRY = "Third try";
-  private static final String RETRY_AT_ERROR = "Retry at error";
-  private static final String RETRY_AT_DELAY = "Retry at delay";
-
-  private HttpSession httpSession;
-
-  @ClassRule
-  public static WireMockRule wireMockRule = new WireMockRule(0);
-
-  @Before
-  public void setUp() throws Exception {
-    String url = "http://localhost:" + wireMockRule.port();
-    Configuration cfg = mock(Configuration.class);
-    when(cfg.getUrl()).thenReturn(url);
-    when(cfg.getUser()).thenReturn("user");
-    when(cfg.getPassword()).thenReturn("pass");
-    when(cfg.getMaxTries()).thenReturn(MAX_TRIES);
-    when(cfg.getConnectionTimeout()).thenReturn(TIMEOUT);
-    when(cfg.getSocketTimeout()).thenReturn(TIMEOUT);
-    when(cfg.getRetryInterval()).thenReturn(RETRY_INTERVAL);
-
-    httpSession =
-        new HttpSession(new HttpClientProvider(cfg).get(), url);
-    wireMockRule.resetRequests();
-  }
-
-  @Test
-  public void testPostResponseOK() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withStatus(OK)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isTrue();
-  }
-
-  @Test
-  public void testDeleteResponseOK() throws Exception {
-    wireMockRule.givenThat(delete(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withStatus(OK)));
-
-    assertThat(httpSession.delete(ENDPOINT).isSuccessful()).isTrue();
-  }
-
-  @Test
-  public void testNotAuthorized() throws Exception {
-    String expected = "unauthorized";
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withStatus(UNAUTHORIZED).withBody(expected)));
-
-    IndexResult result = httpSession.post(ENDPOINT);
-    assertThat(result.isSuccessful()).isFalse();
-    assertThat(result.getMessage()).isEqualTo(expected);
-  }
-
-  @Test
-  public void testNotFound() throws Exception {
-    String expected = "not found";
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withStatus(NOT_FOUND).withBody(expected)));
-
-    IndexResult result = httpSession.post(ENDPOINT);
-    assertThat(result.isSuccessful()).isFalse();
-    assertThat(result.getMessage()).isEqualTo(expected);
-  }
-
-  @Test
-  public void testBadResponseRetryThenOK() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_ERROR)
-        .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
-        .willReturn(aResponse().withStatus(ERROR)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_ERROR)
-        .whenScenarioStateIs(REQUEST_MADE)
-        .willReturn(aResponse().withStatus(OK)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isTrue();
-  }
-
-  @Test
-  public void testBadResponseRetryThenGiveUp() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withStatus(ERROR).withBody(ERROR_MESSAGE)));
-
-    IndexResult result = httpSession.post(ENDPOINT);
-    assertThat(result.isSuccessful()).isFalse();
-    assertThat(result.getMessage()).isEqualTo(ERROR_MESSAGE);
-  }
-
-  @Test
-  public void testRetryAfterDelay() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
-        .willReturn(aResponse().withStatus(ERROR).withFixedDelay(TIMEOUT / 2)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(REQUEST_MADE)
-        .willReturn(aResponse().withStatus(OK)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isTrue();
-  }
-
-  @Test
-  public void testRetryAfterTimeoutThenOK() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(REQUEST_MADE).willSetStateTo(SECOND_TRY)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(SECOND_TRY).willSetStateTo(THIRD_TRY)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(THIRD_TRY)
-        .willReturn(aResponse().withStatus(OK)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isTrue();
-  }
-
-  @Test(expected = SocketTimeoutException.class)
-  public void testMaxRetriesAfterTimeoutThenGiveUp() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(REQUEST_MADE).willSetStateTo(SECOND_TRY)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(SECOND_TRY).willSetStateTo(THIRD_TRY)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(THIRD_TRY)
-        .willReturn(aResponse().withFixedDelay(TIMEOUT)));
-
-    httpSession.post(ENDPOINT);
-  }
-
-  @Test
-  public void testGiveUpAtTimeout() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT)).inScenario(RETRY_AT_DELAY)
-        .whenScenarioStateIs(Scenario.STARTED).willSetStateTo(REQUEST_MADE)
-        .willReturn(aResponse().withStatus(ERROR).withFixedDelay(TIMEOUT)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isFalse();
-  }
-
-  @Test
-  public void testResponseWithMalformedResponse() throws Exception {
-    wireMockRule.givenThat(post(urlEqualTo(ENDPOINT))
-        .willReturn(aResponse().withFault(Fault.MALFORMED_RESPONSE_CHUNK)));
-
-    assertThat(httpSession.post(ENDPOINT).isSuccessful()).isFalse();
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java
deleted file mode 100644
index bb83dcc..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexEventHandlerTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.server.git.WorkQueue.Executor;
-import com.google.gwtorm.client.KeyUtil;
-import com.google.gwtorm.server.StandardKeyEncoder;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexEventHandler.SyncIndexTask;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class IndexEventHandlerTest {
-  private static final String PLUGIN_NAME = "sync-index";
-  private static final int CHANGE_ID = 1;
-
-  private IndexEventHandler indexEventHandler;
-  @Mock
-  private RestSession restSessionMock;
-  private Change.Id id;
-
-  @BeforeClass
-  public static void setUp() {
-    KeyUtil.setEncoderImpl(new StandardKeyEncoder());
-  }
-
-  @Before
-  public void setUpMocks() {
-    id = Change.Id.parse(Integer.toString(CHANGE_ID));
-    indexEventHandler = new IndexEventHandler(MoreExecutors.directExecutor(),
-        PLUGIN_NAME, restSessionMock);
-  }
-
-  @Test
-  public void shouldIndexInRemoteOnChangeIndexedEvent() throws Exception {
-    indexEventHandler.onChangeIndexed(id.get());
-    verify(restSessionMock).index(CHANGE_ID);
-  }
-
-  @Test
-  public void shouldDeleteFromIndexInRemoteOnChangeDeletedEvent()
-      throws Exception {
-    indexEventHandler.onChangeDeleted(id.get());
-    verify(restSessionMock).deleteFromIndex(CHANGE_ID);
-  }
-
-  @Test
-  public void shouldNotCallRemoteWhenEventIsForwarded() throws Exception {
-    Context.setForwardedEvent(true);
-    indexEventHandler.onChangeIndexed(id.get());
-    indexEventHandler.onChangeDeleted(id.get());
-    Context.unsetForwardedEvent();
-    verifyZeroInteractions(restSessionMock);
-  }
-
-  @Test
-  public void duplicateEventOfAQueuedEventShouldGetDiscarded() {
-    Executor poolMock = mock(Executor.class);
-    indexEventHandler =
-        new IndexEventHandler(poolMock, PLUGIN_NAME, restSessionMock);
-    indexEventHandler.onChangeIndexed(id.get());
-    indexEventHandler.onChangeIndexed(id.get());
-    verify(poolMock, times(1))
-        .execute(indexEventHandler.new SyncIndexTask(CHANGE_ID, false));
-  }
-
-  @Test
-  public void testSyncIndexTaskToString() throws Exception {
-    SyncIndexTask syncIndexTask =
-        indexEventHandler.new SyncIndexTask(CHANGE_ID, false);
-    assertThat(syncIndexTask.toString()).isEqualTo(String.format(
-        "[%s] Index change %s in target instance", PLUGIN_NAME, CHANGE_ID));
-  }
-
-  @Test
-  public void testSyncIndexTaskHashCodeAndEquals() {
-    SyncIndexTask task = indexEventHandler.new SyncIndexTask(CHANGE_ID, false);
-
-    SyncIndexTask sameTask = task;
-    assertThat(task.equals(sameTask)).isTrue();
-    assertThat(task.hashCode()).isEqualTo(sameTask.hashCode());
-
-    SyncIndexTask identicalTask =
-        indexEventHandler.new SyncIndexTask(CHANGE_ID, false);
-    assertThat(task.equals(identicalTask)).isTrue();
-    assertThat(task.hashCode()).isEqualTo(identicalTask.hashCode());
-
-    assertThat(task.equals(null)).isFalse();
-    assertThat(task.equals("test")).isFalse();
-    assertThat(task.hashCode()).isNotEqualTo("test".hashCode());
-
-    SyncIndexTask differentChangeIdTask =
-        indexEventHandler.new SyncIndexTask(123, false);
-    assertThat(task.equals(differentChangeIdTask)).isFalse();
-    assertThat(task.hashCode()).isNotEqualTo(differentChangeIdTask.hashCode());
-
-    SyncIndexTask removeTask =
-        indexEventHandler.new SyncIndexTask(CHANGE_ID, true);
-    assertThat(task.equals(removeTask)).isFalse();
-    assertThat(task.hashCode()).isNotEqualTo(removeTask.hashCode());
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandlerTest.java
deleted file mode 100644
index 46488b7..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/IndexResponseHandlerTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-
-import org.apache.http.HttpResponse;
-import org.apache.http.StatusLine;
-import org.apache.http.entity.StringEntity;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.UnsupportedEncodingException;
-
-public class IndexResponseHandlerTest {
-  private static final int ERROR = 400;
-  private static final int OK = 204;
-  private static final String EMPTY_ENTITY = "";
-  private static final String ERROR_ENTITY = "Error";
-
-  private IndexResponseHandler handler;
-
-  @Before
-  public void setUp() throws Exception {
-    handler = new IndexResponseHandler();
-  }
-
-  @Test
-  public void testIsSuccessful() throws Exception {
-    HttpResponse response = setupMocks(OK, EMPTY_ENTITY);
-    IndexResult result = handler.handleResponse(response);
-    assertThat(result.isSuccessful()).isTrue();
-    assertThat(result.getMessage()).isEmpty();
-  }
-
-  @Test
-  public void testIsNotSuccessful() throws Exception {
-    HttpResponse response = setupMocks(ERROR, ERROR_ENTITY);
-    IndexResult result = handler.handleResponse(response);
-    assertThat(result.isSuccessful()).isFalse();
-    assertThat(result.getMessage()).contains(ERROR_ENTITY);
-  }
-
-  private HttpResponse setupMocks(int httpCode, String entity)
-      throws UnsupportedEncodingException {
-    StatusLine status = mock(StatusLine.class);
-    when(status.getStatusCode()).thenReturn(httpCode);
-    HttpResponse response = mock(HttpResponse.class);
-    when(response.getStatusLine()).thenReturn(status);
-    when(response.getEntity()).thenReturn(new StringEntity(entity));
-    return response;
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ModuleTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/ModuleTest.java
deleted file mode 100644
index f997afa..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/ModuleTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.junit.Test;
-
-public class ModuleTest {
-
-  @Test
-  public void testSyncUrlProvider() {
-    Configuration configMock = mock(Configuration.class);
-    String expected = "someUrl";
-    when(configMock.getUrl()).thenReturn(expected);
-    Module module = new Module();
-    assertThat(module.syncUrl(configMock)).isEqualTo(expected);
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/RestSessionTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/RestSessionTest.java
deleted file mode 100644
index 6f716c4..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/RestSessionTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Joiner;
-
-import com.ericsson.gerrit.plugins.syncindex.IndexResponseHandler.IndexResult;
-
-import org.junit.Test;
-
-import java.io.IOException;
-
-public class RestSessionTest {
-  private static final int CHANGE_NUMBER = 1;
-  private static final String DELETE_OP = "delete";
-  private static final String INDEX_OP = "index";
-  private static final String PLUGIN_NAME = "sync-index";
-  private static final String EMPTY_MSG = "";
-  private static final String ERROR_MSG = "Error";
-  private static final String EXCEPTION_MSG = "Exception";
-  private static final boolean SUCCESSFUL = true;
-  private static final boolean FAILED = false;
-  private static final boolean DO_NOT_THROW_EXCEPTION = false;
-  private static final boolean THROW_EXCEPTION = true;
-
-  private RestSession restClient;
-
-  @Test
-  public void testIndexChangeOK() throws Exception {
-    setUpMocks(INDEX_OP, SUCCESSFUL, EMPTY_MSG, DO_NOT_THROW_EXCEPTION);
-    assertThat(restClient.index(CHANGE_NUMBER)).isTrue();
-  }
-
-  @Test
-  public void testIndexChangeFailed() throws Exception {
-    setUpMocks(INDEX_OP, FAILED, ERROR_MSG, DO_NOT_THROW_EXCEPTION);
-    assertThat(restClient.index(CHANGE_NUMBER)).isFalse();
-  }
-
-  @Test
-  public void testIndexChangeThrowsException() throws Exception {
-    setUpMocks(INDEX_OP, FAILED, EXCEPTION_MSG, THROW_EXCEPTION);
-    assertThat(restClient.index(CHANGE_NUMBER)).isFalse();
-  }
-
-  @Test
-  public void testChangeDeletedFromIndexOK() throws Exception {
-    setUpMocks(DELETE_OP, SUCCESSFUL, EMPTY_MSG, DO_NOT_THROW_EXCEPTION);
-    assertThat(restClient.deleteFromIndex(CHANGE_NUMBER)).isTrue();
-  }
-
-  @Test
-  public void testChangeDeletedFromIndexFailed() throws Exception {
-    setUpMocks(DELETE_OP, FAILED, ERROR_MSG, DO_NOT_THROW_EXCEPTION);
-    assertThat(restClient.deleteFromIndex(CHANGE_NUMBER)).isFalse();
-  }
-
-  @Test
-  public void testChangeDeletedFromThrowsException() throws Exception {
-    setUpMocks(DELETE_OP, FAILED, EXCEPTION_MSG, THROW_EXCEPTION);
-    assertThat(restClient.deleteFromIndex(CHANGE_NUMBER)).isFalse();
-  }
-
-  private void setUpMocks(String operation, boolean isOperationSuccessful,
-      String msg, boolean exception) throws Exception {
-    String request =
-        Joiner.on("/").join("/plugins", PLUGIN_NAME, INDEX_OP, CHANGE_NUMBER);
-    HttpSession httpSession = mock(HttpSession.class);
-    if (exception) {
-      if (operation.equals(INDEX_OP)) {
-        doThrow(new IOException()).when(httpSession).post(request);
-      } else {
-        doThrow(new IOException()).when(httpSession).delete(request);
-      }
-    } else {
-      IndexResult result = new IndexResult(isOperationSuccessful, msg);
-      if (operation.equals(INDEX_OP)) {
-        when(httpSession.post(request)).thenReturn(result);
-      } else {
-        when(httpSession.delete(request)).thenReturn(result);
-      }
-    }
-    restClient = new RestSession(httpSession, PLUGIN_NAME);
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProviderTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProviderTest.java
deleted file mode 100644
index 3833883..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexExecutorProviderTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2015 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.server.git.WorkQueue;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class SyncIndexExecutorProviderTest {
-  @Mock
-  private WorkQueue.Executor executorMock;
-  private SyncIndexExecutorProvider syncIndexExecutorProvider;
-
-  @Before
-  public void setUp() throws Exception {
-    executorMock = mock(WorkQueue.Executor.class);
-    WorkQueue workQueueMock = mock(WorkQueue.class);
-    when(workQueueMock.createQueue(4, "Sync remote index"))
-        .thenReturn(executorMock);
-    Configuration configMock = mock(Configuration.class);
-    when(configMock.getThreadPoolSize()).thenReturn(4);
-    syncIndexExecutorProvider =
-        new SyncIndexExecutorProvider(workQueueMock, configMock);
-  }
-
-  @Test
-  public void shouldReturnExecutor() throws Exception {
-    assertThat(syncIndexExecutorProvider.get()).isEqualTo(executorMock);
-  }
-
-  @Test
-  public void testStop() throws Exception {
-    syncIndexExecutorProvider.start();
-    assertThat(syncIndexExecutorProvider.get()).isEqualTo(executorMock);
-    syncIndexExecutorProvider.stop();
-    verify(executorMock).shutdown();
-    assertThat(syncIndexExecutorProvider.get()).isNull();
-  }
-}
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java
deleted file mode 100644
index 7e8ac83..0000000
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright (C) 2016 Ericsson
-//
-// Licensed 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 com.ericsson.gerrit.plugins.syncindex;
-
-import static javax.servlet.http.HttpServletResponse.SC_CONFLICT;
-import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-import com.google.gerrit.common.TimeUtil;
-import com.google.gerrit.reviewdb.client.Change;
-import com.google.gerrit.reviewdb.server.ChangeAccess;
-import com.google.gerrit.reviewdb.server.ReviewDb;
-import com.google.gerrit.server.index.change.ChangeIndexer;
-import com.google.gwtorm.client.KeyUtil;
-import com.google.gwtorm.server.OrmException;
-import com.google.gwtorm.server.SchemaFactory;
-import com.google.gwtorm.server.StandardKeyEncoder;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@RunWith(MockitoJUnitRunner.class)
-public class SyncIndexRestApiServletTest {
-  private static final boolean CHANGE_EXISTS = true;
-  private static final boolean CHANGE_DOES_NOT_EXIST = false;
-  private static final boolean DO_NOT_THROW_IO_EXCEPTION = false;
-  private static final boolean DO_NOT_THROW_ORM_EXCEPTION = false;
-  private static final boolean THROW_IO_EXCEPTION = true;
-  private static final boolean THROW_ORM_EXCEPTION = true;
-  private static final String CHANGE_NUMBER = "1";
-
-  @Mock
-  private ChangeIndexer indexer;
-  @Mock
-  private SchemaFactory<ReviewDb> schemaFactory;
-  @Mock
-  private ReviewDb db;
-  @Mock
-  private HttpServletRequest req;
-  @Mock
-  private HttpServletResponse rsp;
-  private Change.Id id;
-  private Change change;
-  private SyncIndexRestApiServlet syncIndexRestApiServlet;
-
-  @BeforeClass
-  public static void setup() {
-    KeyUtil.setEncoderImpl(new StandardKeyEncoder());
-  }
-
-  @Before
-  public void setUpMocks() {
-    syncIndexRestApiServlet =
-        new SyncIndexRestApiServlet(indexer, schemaFactory);
-    id = Change.Id.parse(CHANGE_NUMBER);
-    when(req.getPathInfo()).thenReturn("/index/" + CHANGE_NUMBER);
-    change = new Change(null, id, null, null, TimeUtil.nowTs());
-  }
-
-  @Test
-  public void changeIsIndexed() throws Exception {
-    setupPostMocks(CHANGE_EXISTS);
-    syncIndexRestApiServlet.doPost(req, rsp);
-    verify(indexer, times(1)).index(db, change);
-    verify(rsp).setStatus(SC_NO_CONTENT);
-  }
-
-  @Test
-  public void changeToIndexDoNotExist() throws Exception {
-    setupPostMocks(CHANGE_DOES_NOT_EXIST);
-    syncIndexRestApiServlet.doPost(req, rsp);
-    verify(indexer, times(1)).delete(id);
-    verify(rsp).setStatus(SC_NO_CONTENT);
-  }
-
-  @Test
-  public void schemaThrowsExceptionWhenLookingUpForChange() throws Exception {
-    setupPostMocks(CHANGE_EXISTS, THROW_ORM_EXCEPTION);
-    syncIndexRestApiServlet.doPost(req, rsp);
-    verify(rsp).sendError(SC_NOT_FOUND, "Error trying to find a change \n");
-  }
-
-  @Test
-  public void indexerThrowsIOExceptionTryingToIndexChange() throws Exception {
-    setupPostMocks(CHANGE_EXISTS, DO_NOT_THROW_ORM_EXCEPTION,
-        THROW_IO_EXCEPTION);
-    syncIndexRestApiServlet.doPost(req, rsp);
-    verify(rsp).sendError(SC_CONFLICT, "io-error");
-  }
-
-  @Test
-  public void changeIsDeletedFromIndex() throws Exception {
-    syncIndexRestApiServlet.doDelete(req, rsp);
-    verify(indexer, times(1)).delete(id);
-    verify(rsp).setStatus(SC_NO_CONTENT);
-  }
-
-  @Test
-  public void indexerThrowsExceptionTryingToDeleteChange() throws Exception {
-    doThrow(new IOException("io-error")).when(indexer).delete(id);
-    syncIndexRestApiServlet.doDelete(req, rsp);
-    verify(rsp).sendError(SC_CONFLICT, "io-error");
-  }
-
-  @Test
-  public void sendErrorThrowsIOException() throws Exception {
-    doThrow(new IOException("someError")).when(rsp).sendError(SC_NOT_FOUND,
-        "Error trying to find a change \n");
-    setupPostMocks(CHANGE_EXISTS, THROW_ORM_EXCEPTION);
-    syncIndexRestApiServlet.doPost(req, rsp);
-    verify(rsp).sendError(SC_NOT_FOUND, "Error trying to find a change \n");
-    verifyZeroInteractions(indexer);
-  }
-
-  private void setupPostMocks(boolean changeExist) throws Exception {
-    setupPostMocks(changeExist, DO_NOT_THROW_ORM_EXCEPTION,
-        DO_NOT_THROW_IO_EXCEPTION);
-  }
-
-  private void setupPostMocks(boolean changeExist, boolean ormException)
-      throws OrmException, IOException {
-    setupPostMocks(changeExist, ormException, DO_NOT_THROW_IO_EXCEPTION);
-  }
-
-  private void setupPostMocks(boolean changeExist, boolean ormException,
-      boolean ioException) throws OrmException, IOException {
-    if (ormException) {
-      doThrow(new OrmException("")).when(schemaFactory).open();
-    } else {
-      when(schemaFactory.open()).thenReturn(db);
-      ChangeAccess ca = mock(ChangeAccess.class);
-      when(db.changes()).thenReturn(ca);
-      if (changeExist) {
-        when(ca.get(id)).thenReturn(change);
-        if (ioException) {
-          doThrow(new IOException("io-error")).when(indexer).index(db, change);
-        }
-      } else {
-        when(ca.get(id)).thenReturn(null);
-      }
-    }
-  }
-}
diff --git a/tools/BUILD b/tools/BUILD
deleted file mode 100644
index e69de29..0000000
--- a/tools/BUILD
+++ /dev/null
diff --git a/tools/bazel.rc b/tools/bazel.rc
deleted file mode 100644
index 4ed16cf..0000000
--- a/tools/bazel.rc
+++ /dev/null
@@ -1,2 +0,0 @@
-build --workspace_status_command=./tools/workspace-status.sh
-test --build_tests_only
diff --git a/tools/bzl/BUILD b/tools/bzl/BUILD
deleted file mode 100644
index e69de29..0000000
--- a/tools/bzl/BUILD
+++ /dev/null
diff --git a/tools/bzl/junit.bzl b/tools/bzl/junit.bzl
deleted file mode 100644
index 3af7e58..0000000
--- a/tools/bzl/junit.bzl
+++ /dev/null
@@ -1,4 +0,0 @@
-load(
-    "@com_googlesource_gerrit_bazlets//tools:junit.bzl",
-    "junit_tests",
-)
diff --git a/tools/bzl/plugin.bzl b/tools/bzl/plugin.bzl
deleted file mode 100644
index a2e438f..0000000
--- a/tools/bzl/plugin.bzl
+++ /dev/null
@@ -1,6 +0,0 @@
-load(
-    "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
-    "gerrit_plugin",
-    "PLUGIN_DEPS",
-    "PLUGIN_TEST_DEPS",
-)
diff --git a/tools/eclipse/BUILD b/tools/eclipse/BUILD
deleted file mode 100644
index cb18eda..0000000
--- a/tools/eclipse/BUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-load("@com_googlesource_gerrit_bazlets//tools:commons.bzl",
-     "PLUGIN_DEPS",
-     "PLUGIN_TEST_DEPS",)
-load("@com_googlesource_gerrit_bazlets//tools:classpath.bzl",
-     "classpath_collector")
-
-java_library(
-  name = "classpath",
-    runtime_deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-      "@wiremock//jar",
-      "@mockito//jar",
-      "@byte-buddy//jar",
-      "@objenesis//jar",
-      "//:sync-index__plugin",
-    ],
-)
-
-classpath_collector(
-  name = "main_classpath_collect",
-  deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-    "@wiremock//jar",
-    "@mockito//jar",
-    "@byte-buddy//jar",
-    "@objenesis//jar",
-    "//:sync-index__plugin"
-  ],
-)
diff --git a/tools/eclipse/project.py b/tools/eclipse/project.py
deleted file mode 100755
index 88ca4b0..0000000
--- a/tools/eclipse/project.py
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed 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.
-#
-
-from __future__ import print_function
-# TODO(davido): use Google style for importing instead:
-# import optparse
-#
-# optparse.OptionParser
-from optparse import OptionParser
-from os import environ, path, makedirs
-from subprocess import CalledProcessError, check_call, check_output
-from xml.dom import minidom
-import re
-import sys
-
-MAIN = '//tools/eclipse:classpath'
-JRE = '/'.join([
-  'org.eclipse.jdt.launching.JRE_CONTAINER',
-  'org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType',
-  'JavaSE-1.8',
-])
-# Map of targets to corresponding classpath collector rules
-cp_targets = {
-  MAIN: '//tools/eclipse:main_classpath_collect',
-}
-
-ROOT = path.abspath(__file__)
-while not path.exists(path.join(ROOT, 'WORKSPACE')):
-  ROOT = path.dirname(ROOT)
-
-opts = OptionParser()
-opts.add_option('--name', help='name of the generated project',
-                action='store', default='sync-index', dest='project_name')
-args, _ = opts.parse_args()
-
-def retrieve_ext_location():
-  return check_output(['bazel', 'info', 'output_base']).strip()
-
-def gen_primary_build_tool():
-  bazel = check_output(['which', 'bazel']).strip()
-  with open(path.join(ROOT, ".primary_build_tool"), 'w') as fd:
-    fd.write("bazel=%s\n" % bazel)
-    fd.write("PATH=%s\n" % environ["PATH"])
-
-def _query_classpath(target):
-  deps = []
-  t = cp_targets[target]
-  try:
-    check_call(['bazel', 'build', t])
-  except CalledProcessError:
-    exit(1)
-  name = 'bazel-bin/tools/eclipse/' + t.split(':')[1] + '.runtime_classpath'
-  deps = [line.rstrip('\n') for line in open(name)]
-  return deps
-
-def gen_project(name='gerrit', root=ROOT):
-  p = path.join(root, '.project')
-  with open(p, 'w') as fd:
-    print("""\
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-  <name>%(name)s</name>
-  <buildSpec>
-    <buildCommand>
-      <name>org.eclipse.jdt.core.javabuilder</name>
-    </buildCommand>
-  </buildSpec>
-  <natures>
-    <nature>org.eclipse.jdt.core.javanature</nature>
-  </natures>
-</projectDescription>\
-    """ % {"name": name}, file=fd)
-
-def gen_classpath(ext):
-  def make_classpath():
-    impl = minidom.getDOMImplementation()
-    return impl.createDocument(None, 'classpath', None)
-
-  def classpathentry(kind, path, src=None, out=None, exported=None):
-    e = doc.createElement('classpathentry')
-    e.setAttribute('kind', kind)
-    # TODO(davido): Remove this and other exclude BUILD files hack
-    # when this Bazel bug is fixed:
-    # https://github.com/bazelbuild/bazel/issues/1083
-    if kind == 'src':
-      e.setAttribute('excluding', '**/BUILD')
-    e.setAttribute('path', path)
-    if src:
-      e.setAttribute('sourcepath', src)
-    if out:
-      e.setAttribute('output', out)
-    if exported:
-      e.setAttribute('exported', 'true')
-    doc.documentElement.appendChild(e)
-
-  doc = make_classpath()
-  src = set()
-  lib = set()
-
-  # Classpath entries are absolute for cross-cell support
-  java_library = re.compile('bazel-out/local-fastbuild/bin/lib[^/]+[.]jar$')
-  srcs = re.compile('(.*/external/[^/]+)/jar/(.*)[.]jar')
-  for p in _query_classpath(MAIN):
-    m = java_library.match(p)
-    if m:
-      src.add(".")
-    else:
-      if p.startswith("external"):
-        p = path.join(ext, p)
-      lib.add(p)
-
-  for s in sorted(src):
-    out = None
-
-    if s.startswith('lib/'):
-      out = 'eclipse-out/lib'
-
-    p = path.join(s, 'java')
-    if path.exists(p):
-      classpathentry('src', p, out=out)
-      continue
-
-    for env in ['main', 'test']:
-      o = None
-      if out:
-        o = out + '/' + env
-      elif env == 'test':
-        o = 'eclipse-out/test'
-
-      for srctype in ['java', 'resources']:
-        p = path.join(s, 'src', env, srctype)
-        if path.exists(p):
-          classpathentry('src', p, out=o)
-
-  for libs in [lib]:
-    for j in sorted(libs):
-      s = None
-      m = srcs.match(j)
-      if m:
-        prefix = m.group(1)
-        suffix = m.group(2)
-        p = path.join(prefix, "src", "%s-src.jar" % suffix)
-        if path.exists(p):
-          s = p
-      classpathentry('lib', j, s)
-
-  classpathentry('con', JRE)
-  classpathentry('output', 'eclipse-out/classes')
-
-  p = path.join(ROOT, '.classpath')
-  with open(p, 'w') as fd:
-    doc.writexml(fd, addindent='\t', newl='\n', encoding='UTF-8')
-
-try:
-  ext_location = retrieve_ext_location()
-  gen_project(args.project_name)
-  gen_classpath(ext_location)
-  gen_primary_build_tool()
-
-  try:
-    check_call(['bazel', 'build', MAIN])
-  except CalledProcessError:
-    exit(1)
-except KeyboardInterrupt:
-  print('Interrupted by user', file=sys.stderr)
-  exit(1)
diff --git a/tools/workspace-status.sh b/tools/workspace-status.sh
deleted file mode 100755
index 3102f64..0000000
--- a/tools/workspace-status.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-# This script will be run by bazel when the build process starts to
-# generate key-value information that represents the status of the
-# workspace. The output should be like
-#
-# KEY1 VALUE1
-# KEY2 VALUE2
-#
-# If the script exits with non-zero code, it's considered as a failure
-# and the output will be discarded.
-
-function rev() {
-  cd $1; git describe --always --match "v[0-9].*" --dirty
-}
-
-echo STABLE_BUILD_SYNC-INDEX_LABEL $(rev .)