Allow event handlers with non-void return type
Also removed unnecessary files from the Event Bus Proc JAR and configured GPG signing as well as deployment to Sonatype OSSRH.
This commit is contained in:
parent
ff35e7f37d
commit
4a5b94a9b7
21
README.md
21
README.md
@ -5,13 +5,13 @@
|
||||
This library allows passing events between different objects without them having a direct reference to each other.
|
||||
Any object can serve as an event.
|
||||
|
||||
Using an instance of the `EventBus` class, an instant of the event class can be dispatched.
|
||||
Using an instance of the `EventBus` class, an instance of the event class can be dispatched.
|
||||
This means that it will be forwarded to all listeners registered for it at the event bus.
|
||||
|
||||
In addition, a singleton instance of the event bus is provided by the `EventBus#getInstance()` method.
|
||||
|
||||
To listen to events, register event handling methods using the `Event` annotation.
|
||||
For this to work, the method must have a return type of `void` and declare a single parameter of the desired event type.
|
||||
For this to work, the method must declare a single parameter of the desired event type.
|
||||
Alternatively, a parameter-less event handler can be declared as shown [below](#parameter-less-event-handlers).
|
||||
|
||||
## A Simple Example
|
||||
@ -125,21 +125,14 @@ As event handlers are ordered by priority, it is not defined which of them will
|
||||
|
||||
## Installation
|
||||
|
||||
Event Bus is currently hosted at [kske.dev](https://kske.dev/maven-repo/dev/kske/event-bus/).
|
||||
To include it inside your project, just add the Maven repository and the dependency to your `pom.xml`:
|
||||
Event Bus is available in Maven Central.
|
||||
To include it inside your project, just add the following dependency to your `pom.xml`:
|
||||
|
||||
```xml
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>kske-repo</id>
|
||||
<url>https://kske.dev/maven-repo</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>dev.kske</groupId>
|
||||
<artifactId>event-bus</artifactId>
|
||||
<artifactId>event-bus-core</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
@ -175,7 +168,7 @@ When using Maven, it can be registered using the Maven Compiler Plugin:
|
||||
<annotationProcessorPaths>
|
||||
<annotationProcessorPath>
|
||||
<groupId>dev.kske</groupId>
|
||||
<artifactId>event-bus-ap</artifactId>
|
||||
<artifactId>event-bus-proc</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</annotationProcessorPath>
|
||||
</annotationProcessorPaths>
|
||||
@ -183,4 +176,4 @@ When using Maven, it can be registered using the Maven Compiler Plugin:
|
||||
</plugin>
|
||||
```
|
||||
|
||||
Alternatively, a JAR file containing the processor is offered with each release for the use within IDEs and environments without Maven support.
|
||||
Alternatively, a JAR file containing the processor is offered with each release for the use within IDEs and environments without Maven support.
|
||||
|
@ -6,17 +6,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* Indicates that a method is an event handler. To be successfully used as such, the method has to
|
||||
* comply with the following specifications:
|
||||
* <ul>
|
||||
* <li>Specifying an event type by either
|
||||
* <ul>
|
||||
* <li>Declaring one object parameter</li>
|
||||
* <li>Defining the class of the event using the annotation value</li>
|
||||
* </ul>
|
||||
* </li>
|
||||
* <li>Return type of {@code void}</li>
|
||||
* </ul>
|
||||
* Indicates that a method is an event handler.
|
||||
* <p>
|
||||
* To be successfully used as such, the method has to specify the event type by either declaring one
|
||||
* parameter of that type or setting the annotation value to the corresponding class.
|
||||
*
|
||||
* @author Kai S. K. Engelbart
|
||||
* @since 0.0.1
|
||||
|
@ -43,7 +43,7 @@ final class EventHandler implements Comparable<EventHandler> {
|
||||
this.method = method;
|
||||
useParameter = annotation.value() == USE_PARAMETER.class;
|
||||
|
||||
// Check for correct method signature and return type
|
||||
// Check handler signature
|
||||
if (method.getParameterCount() == 0 && useParameter)
|
||||
throw new EventBusException(method + " does not define an event type!");
|
||||
|
||||
@ -53,9 +53,6 @@ final class EventHandler implements Comparable<EventHandler> {
|
||||
if (method.getParameterCount() > 1)
|
||||
throw new EventBusException(method + " defines more than one parameter!");
|
||||
|
||||
if (!method.getReturnType().equals(void.class))
|
||||
throw new EventBusException(method + " does not have a return type of void!");
|
||||
|
||||
// Determine handler properties
|
||||
eventType = useParameter ? method.getParameterTypes()[0] : annotation.value();
|
||||
polymorphic = method.isAnnotationPresent(Polymorphic.class);
|
||||
|
@ -50,6 +50,21 @@
|
||||
</goals>
|
||||
<configuration>
|
||||
<minimizeJar>true</minimizeJar>
|
||||
<filters>
|
||||
<filter>
|
||||
<artifact>dev.kske:event-bus-core</artifact>
|
||||
<excludes>
|
||||
<exclude>META-INF/MANIFEST.MF</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
<filter>
|
||||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>module-info.class</exclude>
|
||||
<exclude>META-INF/maven/**</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
@ -60,8 +60,6 @@ public class EventProcessor extends AbstractProcessor {
|
||||
"Either the method or the annotation must define the event type");
|
||||
else if (eventHandler.getParameters().size() > 1)
|
||||
error(eventHandler, "Method must not have more than one parameter");
|
||||
else if (eventHandler.getReturnType().getKind() != TypeKind.VOID)
|
||||
error(eventHandler, "Method must return void");
|
||||
else
|
||||
pass = true;
|
||||
|
||||
|
33
pom.xml
33
pom.xml
@ -41,6 +41,7 @@
|
||||
<scm>
|
||||
<connection>scm:git:https://git.kske.dev/kske/event-bus.git</connection>
|
||||
<developerConnection>scm:git:ssh://git@git.kske.dev:420/kske/event-bus.git</developerConnection>
|
||||
<url>https://git.kske.dev/kske/event-bus</url>
|
||||
</scm>
|
||||
|
||||
<properties>
|
||||
@ -50,6 +51,18 @@
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<!-- Configure deployment to OSSRH -->
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
||||
</snapshotRepository>
|
||||
<repository>
|
||||
<id>ossrh</id>
|
||||
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<build>
|
||||
|
||||
<!-- Disable test resource folder -->
|
||||
@ -64,7 +77,7 @@
|
||||
<version>3.8.1</version>
|
||||
</plugin>
|
||||
|
||||
<!-- Attach sources and Javadoc to JAR -->
|
||||
<!-- Attach sources to JAR -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
@ -78,6 +91,8 @@
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- Attach Javadoc to JAR -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
@ -92,6 +107,22 @@
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- GPG sign JAR -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.6</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
Loading…
Reference in New Issue
Block a user