commit | 9f62348053b9a594053df638bdcd88a8b6e11dba | [log] [tgz] |
---|---|---|
author | Antoine Musso <hashar@free.fr> | Wed Jul 20 15:04:58 2022 +0200 |
committer | Antoine Musso <hashar@free.fr> | Wed Jul 20 15:05:14 2022 +0200 |
tree | ff85764fe72d82842c2b68188278a9ebe2c66918 | |
parent | 320e6690afa5bdca439cecac9f2963e54f253ca8 [diff] |
Update maven-javadoc-plugin for Java 11+ The javadoc goal fails with Java 9 or later when JAVA_HOME is not set, the plugin is unable to find the javadoc executable. The reason is "javadoc" has been moved. The issue has been solved in version 3.3.0 of the plugin: https://issues.apache.org/jira/browse/MJAVADOC-650 Update the maven-javadoc-plugin to latest release 3.4.0. I have done a similar update at: https://github.com/victools/jsonschema-generator/pull/262 Also remove the `source=8` javadoc configuration for https://bugs.openjdk.org/browse/JDK-8212233 The pom targets Java 11. Change-Id: If04cbe2dbdbf9583f154f7c9e1e448e74df2c19d
API of a generic events broker for use with Gerrit Code Review.
Enables the de-coupling between Gerrit, plugins and the different implementations of a generic events broker.
It is a quite common use case for consumers of this library to listen for Gerrit events and to stream them on a specific topic.
Since the implementation of such logic is always the same, this library provides a generic stream events publisher which will perform the relevant operations.
In order to listen and stream gerrit events, consumers of this API need to provide a binding for the StreamEventPublisherConfig
configuration and java.util.concurrent.Executor
binding annotated with StreamEventPublisherExecutor
annotation. A default single threaded implementation (StreamEventPublisherExecutor
) is provided by the library. The last step is to explicitly bind the Stream Events Publisher, as such:
import com.gerritforge.gerrit.eventbroker.publisher.StreamEventPublisher; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.server.events.EventListener; import com.google.inject.AbstractModule; public class SomeModule extends AbstractModule { @Override protected void configure() { long messagePublishingTimeout = 1000L; bind(StreamEventPublisherConfig.class) .toInstance(new StreamEventPublisherConfig( "name_of_the_stream_events_topic", messagePublishingTimeout)); bind(Executor.class).annotatedWith(StreamEventPublisherExecutor.class).toProvider(StreamEventPublisherExecutorProvider.class); DynamicSet.bind(binder(), EventListener.class).to(StreamEventPublisher.class); } }
Alternative way to setup Stream Event Publisher is to use default Guice module:
import com.gerritforge.gerrit.eventbroker.publisher.StreamEventPublisherModule; import com.google.inject.AbstractModule; import com.google.inject.TypeLiteral; import com.google.inject.name.Names; public class SomeModule extends AbstractModule { @Override protected void configure() { long messagePublishingTimeout = 1000L; bind(StreamEventPublisherConfig.class) .toInstance(new StreamEventPublisherConfig( "name_of_the_stream_events_topic", messagePublishingTimeout)); install(new StreamEventPublisherModule()); } }
Note: To avoid message duplication Stream Events Publisher uses gerrit.instanceId and Event.instanceId to filter out forwarded events.
When StreamEventPublisher
is used user can optionally bind an implementation of the BrokerMetrics` interface. This will allow to collect metrics about successful/failure stream events publishing. If no binding is provided default implementation will skip collecting metrics:
import com.google.gerrit.extensions.registration.DynamicItem; import com.google.inject.AbstractModule; public class SomeModule extends AbstractModule { @Override protected void configure() { DynamicItem.bind(binder(), BrokerMetrics.class) .to(BrokerMetricsImpl.class) .in(Scopes.SINGLETON); } }
Note: BrokerMetrics
implementation must be bound in a plugin module.