From 310d77d1ad3db03f98ec947110e6d012f98839f5 Mon Sep 17 00:00:00 2001 From: Stefan Lay Date: Wed, 28 May 2014 13:45:25 +0200 Subject: [PATCH] Add listener interface for usage data published events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces a new event which allows to publish usage data of projects. An example could be the sizes of the repositories in the file system. Change-Id: I9a9773c3358f5b8a45db2ec8ba29b8a8ea6c3589 Signed-off-by: Stefan Lay Signed-off-by: Adrian Görler --- Documentation/dev-plugins.txt | 4 ++ .../events/UsageDataPublishedListener.java | 45 +++++++++++++++++++ .../server/config/GerritGlobalModule.java | 2 + 3 files changed, 51 insertions(+) create mode 100644 gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/UsageDataPublishedListener.java diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt index f74a8f565c..fd2f026dd1 100644 --- a/Documentation/dev-plugins.txt +++ b/Documentation/dev-plugins.txt @@ -401,6 +401,10 @@ Project deletion + Update of HEAD on a project +* `com.google.gerrit.extensions.events.UsageDataPublishedListener`: ++ +Publication of usage data + [[stream-events]] == Sending Events to the Events Stream diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/UsageDataPublishedListener.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/UsageDataPublishedListener.java new file mode 100644 index 0000000000..365d056c3a --- /dev/null +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/events/UsageDataPublishedListener.java @@ -0,0 +1,45 @@ +// 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.google.gerrit.extensions.events; + +import com.google.gerrit.extensions.annotations.ExtensionPoint; + +import java.sql.Timestamp; +import java.util.List; + +/** Notified when usage data is published */ +@ExtensionPoint +public interface UsageDataPublishedListener { + + public interface Event { + MetaData getMetaData(); + Timestamp getInstant(); + List getData(); + } + + public interface Data { + long getValue(); + String getProjectName(); + } + + public interface MetaData { + public String getName(); + public String getUnitName(); + public String getUnitSymbol(); + public String getDescription(); + } + + void onUsageDataPublished(Event event); +} diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java index 023c11521e..94b88a713b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java @@ -27,6 +27,7 @@ import com.google.gerrit.extensions.events.HeadUpdatedListener; import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.extensions.events.NewProjectCreatedListener; import com.google.gerrit.extensions.events.ProjectDeletedListener; +import com.google.gerrit.extensions.events.UsageDataPublishedListener; import com.google.gerrit.extensions.registration.DynamicItem; import com.google.gerrit.extensions.registration.DynamicMap; import com.google.gerrit.extensions.registration.DynamicSet; @@ -255,6 +256,7 @@ public class GerritGlobalModule extends FactoryModule { DynamicSet.setOf(binder(), NewProjectCreatedListener.class); DynamicSet.setOf(binder(), ProjectDeletedListener.class); DynamicSet.setOf(binder(), HeadUpdatedListener.class); + DynamicSet.setOf(binder(), UsageDataPublishedListener.class); DynamicSet.bind(binder(), GitReferenceUpdatedListener.class).to(ChangeCache.class); DynamicSet.bind(binder(), GitReferenceUpdatedListener.class).to(MergeabilityChecker.class); DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)