Remove Fetch And PushCounter Events

The Fetch and PushCounter never worked correctly and they where wrongly
located in the Quota plugin. Remove that unused functionality.

Change-Id: I8d7d87286cde005c085ca97d3733df041fdc0ab3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushEventCreator.java b/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushEventCreator.java
deleted file mode 100644
index fd41c4b..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushEventCreator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (C) 2014 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.
-
-package com.googlesource.gerrit.plugins.quota;
-
-import com.google.gerrit.extensions.events.UsageDataPublishedListener.Event;
-import com.google.gerrit.extensions.events.UsageDataPublishedListener.MetaData;
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.inject.Singleton;
-
-@Singleton
-public class FetchAndPushEventCreator implements UsageDataEventCreator {
-
-  static final MetaData PUSH_COUNT = new MetaDataImpl("pushCount", "", "",
-      "number of pushes to the repository since the last event");
-
-  static final MetaData FETCH_COUNT = new MetaDataImpl("fetchCount", "", "",
-      "number of fetches from the repository since the last event");
-
-  private final ProjectCache projectCache;
-  private final PersistentCounter counts;
-  private final MetaData metaData;
-
-  public FetchAndPushEventCreator(ProjectCache projectCache, PersistentCounter counts,
-      MetaData metaData) {
-        this.projectCache = projectCache;
-        this.counts = counts;
-        this.metaData = metaData;
-  }
-
-  @Override
-  public String getName() {
-    return metaData.getName();
-  }
-
-  @Override
-  public Event create() {
-    UsageDataEvent event = new UsageDataEvent(metaData);
-    for (Project.NameKey p : projectCache.all()) {
-      long currentCount = counts.getAndReset(p);
-      if (currentCount != 0) {
-        event.addData(currentCount, p.get());
-      }
-    }
-    return event;
-  }
-
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushListener.java b/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushListener.java
deleted file mode 100644
index 8ac2f9b..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/FetchAndPushListener.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.googlesource.gerrit.plugins.quota;
-
-import com.google.gerrit.reviewdb.client.Project;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.transport.PostReceiveHook;
-import org.eclipse.jgit.transport.PreUploadHook;
-import org.eclipse.jgit.transport.ReceiveCommand;
-import org.eclipse.jgit.transport.ReceivePack;
-import org.eclipse.jgit.transport.ServiceMayNotContinueException;
-import org.eclipse.jgit.transport.UploadPack;
-
-import java.util.Collection;
-
-public class FetchAndPushListener implements PostReceiveHook, PreUploadHook {
-
-  private final ProjectNameResolver projectNameResolver;
-  private final PersistentCounter fetchCounts;
-  private final PersistentCounter pushCounts;
-
-  @Inject
-  public FetchAndPushListener(@Named(PersistentCounter.FETCH) PersistentCounter fetchCounts,
-      @Named(PersistentCounter.PUSH) PersistentCounter pushCounts,
-      ProjectNameResolver projectNameResolver) {
-    this.fetchCounts = fetchCounts;
-    this.pushCounts = pushCounts;
-    this.projectNameResolver = projectNameResolver;
-  }
-
-  @Override
-  public void onBeginNegotiateRound(UploadPack up,
-      Collection<? extends ObjectId> wants, int cntOffered)
-      throws ServiceMayNotContinueException {
-  }
-
-  @Override
-  public void onEndNegotiateRound(UploadPack up,
-      Collection<? extends ObjectId> wants, int cntCommon, int cntNotFound,
-      boolean ready) throws ServiceMayNotContinueException {
-  }
-
-  @Override
-  public void onSendPack(UploadPack up, Collection<? extends ObjectId> wants,
-      Collection<? extends ObjectId> haves)
-      throws ServiceMayNotContinueException {
-    Project.NameKey project =
-        projectNameResolver.projectName(up.getRepository());
-    fetchCounts.increment(project);
-  }
-
-  @Override
-  public void onPostReceive(ReceivePack rp, Collection<ReceiveCommand> commands) {
-    Project.NameKey project =
-        projectNameResolver.projectName(rp.getRepository());
-    pushCounts.increment(project);
-  }
-
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java b/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
index 1b0867a..df4c996 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/Module.java
@@ -26,7 +26,6 @@
 import com.google.inject.internal.UniqueAnnotations;
 
 import org.eclipse.jgit.transport.PostReceiveHook;
-import org.eclipse.jgit.transport.PreUploadHook;
 
 class Module extends AbstractModule {
 
@@ -38,10 +37,6 @@
         .to(MaxRepositorySizeQuota.class);
     DynamicSet.bind(binder(), PostReceiveHook.class)
         .to(MaxRepositorySizeQuota.class);
-    DynamicSet.bind(binder(), PostReceiveHook.class)
-        .to(FetchAndPushListener.class);
-    DynamicSet.bind(binder(), PreUploadHook.class)
-        .to(FetchAndPushListener.class);
     DynamicSet.setOf(binder(), UsageDataEventCreator.class);
     install(MaxRepositorySizeQuota.module());
     install(PersistentCounter.module());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/PersistentCounter.java b/src/main/java/com/googlesource/gerrit/plugins/quota/PersistentCounter.java
index b3c22df..bf665cc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/PersistentCounter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/PersistentCounter.java
@@ -5,64 +5,17 @@
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.cache.CacheModule;
-import com.google.gerrit.server.project.ProjectCache;
-import com.google.inject.Key;
 import com.google.inject.Module;
-import com.google.inject.Provides;
 import com.google.inject.Singleton;
-import com.google.inject.TypeLiteral;
-import com.google.inject.name.Named;
-import com.google.inject.name.Names;
 
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 class PersistentCounter {
-  public static final String FETCH = "FETCH_COUNTS";
-  public static final String PUSH = "PUSH_COUNTS";
-
   static Module module() {
     return new CacheModule() {
       protected void configure() {
-        persist(FETCH, Project.NameKey.class, AtomicLong.class).loader(
-            Loader.class).expireAfterWrite(Integer.MAX_VALUE, TimeUnit.DAYS);
-        persist(PUSH, Project.NameKey.class, AtomicLong.class).loader(
-            Loader.class).expireAfterWrite(Integer.MAX_VALUE, TimeUnit.DAYS);
-        DynamicSet.bind(binder(), UsageDataEventCreator.class).to(creatorKey(FETCH));
-        DynamicSet.bind(binder(), UsageDataEventCreator.class).to(creatorKey(PUSH));
         DynamicSet.bind(binder(), UsageDataEventCreator.class).to(RepoSizeEventCreator.class);
       }
-
-      private Key<UsageDataEventCreator> creatorKey(String kind) {
-        Key<UsageDataEventCreator> pushCreatorKey =
-            Key.get(new TypeLiteral<UsageDataEventCreator>() {},
-                Names.named(kind));
-        return pushCreatorKey;
-      }
-
-      @Provides @Singleton @Named(FETCH)
-      PersistentCounter provideFetchCounter(
-          @Named(FETCH) LoadingCache<Project.NameKey, AtomicLong> counts) {
-        return new PersistentCounter(counts);
-      }
-
-      @Provides @Singleton @Named(PUSH)
-      PersistentCounter providePushCounter(
-          @Named(PUSH) LoadingCache<Project.NameKey, AtomicLong> counts) {
-        return new PersistentCounter(counts);
-      }
-
-      @Provides @Singleton @Named(FETCH)
-      UsageDataEventCreator provideFetchEventCreator(ProjectCache projectCache,
-          @Named(FETCH) PersistentCounter counts) {
-        return new FetchAndPushEventCreator(projectCache, counts, FetchAndPushEventCreator.FETCH_COUNT);
-      }
-
-      @Provides @Singleton @Named(PUSH)
-      UsageDataEventCreator providePushEventCreator(ProjectCache projectCache,
-          @Named(PUSH) PersistentCounter counts) {
-        return new FetchAndPushEventCreator(projectCache, counts, FetchAndPushEventCreator.PUSH_COUNT);
-      }
     };
   }
 
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index 05641d9..5091958 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -9,5 +9,5 @@
 * Maximum number of projects in a namespace
 * The maximum total file size of a repository in a namespace
 
-The measured repository sizes and the number of fetches and pushes
-can be published periodically to registered UsageDataPublishedListeners.
+The measured repository sizes can be published periodically to registered
+UsageDataPublishedListeners.
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
index dbe03f8..f79079f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherExceptionTest.java
@@ -86,7 +86,7 @@
     expect(creator.create()).andStubThrow(ex);
 
     UsageDataEventCreator good = createMock(UsageDataEventCreator.class);
-    Event data = new UsageDataEvent(FetchAndPushEventCreator.FETCH_COUNT);
+    Event data = new UsageDataEvent(null);
     expect(good.create()).andStubReturn(data);
     creators.add(good);
 
@@ -103,7 +103,7 @@
   @Test
   public void testExceptionInListenerIsLogged() {
     RuntimeException ex = new RuntimeException();
-    Event data = new UsageDataEvent(FetchAndPushEventCreator.FETCH_COUNT);
+    Event data = new UsageDataEvent(null);
     expect(creator.create()).andStubReturn(data);
 
     listener.onUsageDataPublished(data);
@@ -123,7 +123,7 @@
   @Test
   public void testIsPropagatedToGoodListener() {
     RuntimeException ex = new RuntimeException();
-    Event data = new UsageDataEvent(FetchAndPushEventCreator.FETCH_COUNT);
+    Event data = new UsageDataEvent(null);
     expect(creator.create()).andStubReturn(data);
 
     listener.onUsageDataPublished(data);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
index 077b056..fd41489 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/quota/PublisherTest.java
@@ -30,11 +30,11 @@
 
   @Test
   public void testAllEventsPropagatedToListener() throws Exception {
-    Event e1 = new UsageDataEvent(FetchAndPushEventCreator.FETCH_COUNT);
+    Event e1 = new UsageDataEvent(null);
     UsageDataEventCreator c1 = createMock(UsageDataEventCreator.class);
     expect(c1.create()).andStubReturn(e1);
 
-    Event e2 = new UsageDataEvent(FetchAndPushEventCreator.PUSH_COUNT);
+    Event e2 = new UsageDataEvent(null);
     UsageDataEventCreator c2 = createMock(UsageDataEventCreator.class);
     expect(c2.create()).andStubReturn(e2);
 
@@ -61,7 +61,7 @@
 
   @Test
   public void testEventPropagatedToAllListeners() throws Exception {
-    Event event = new UsageDataEvent(FetchAndPushEventCreator.FETCH_COUNT);
+    Event event = new UsageDataEvent(null);
     UsageDataEventCreator creator = createMock(UsageDataEventCreator.class);
     expect(creator.create()).andStubReturn(event);
     DynamicSet<UsageDataEventCreator> creators = DynamicSet.emptySet();