Commit Graph

33 Commits

Author SHA1 Message Date
Kai S. K. Engelbart 897f1a20f3
Shorten module names 2021-12-24 11:09:14 +02:00
Kai S. K. Engelbart 856a2e8cbf
Bump version to 1.2.0 2021-11-26 15:54:37 +01:00
Kai S. K. Engelbart f620f06208
Merge branch 'develop' into f/improved-readme
Conflicts:
	event-bus-core/src/test/java/dev/kske/eventbus/core/DispatchTest.java
2021-11-25 14:36:07 +01:00
Kai S. K. Engelbart 5a6d8bcf35
Rename EventBus#printExecutionOrder(Class) to debugExecutionOrder
The method doesn't print anything, but rather returns a string
containing the debug information.
2021-11-25 14:34:13 +01:00
Kai S. K. Engelbart 46a358da97
Make unit tests executable by Maven 2021-11-24 12:52:59 +01:00
Kai S. K. Engelbart c614beb063
Make CallbackEventHandler final 2021-11-04 15:55:24 +01:00
Kai S. K. Engelbart d3abb0aca3
Improve parameter naming for listener registration 2021-11-04 15:54:36 +01:00
Kai S. K. Engelbart ee688929fd
Add callback event handling
The EventHandler class has been converted to an interface, with the
reflection specific part being moved to the new ReflectiveEventHandler
class. Callback event handlers implement the same interface through the
CallbackEventHandler class.

The event handlers are defined in the new handler package, which is not
exported by the eventbus.core module.
2021-11-02 19:33:18 +01:00
Kai S. K. Engelbart b760c58298
Add a handler execution order debugging method 2021-11-01 21:36:24 +01:00
Kai S. K. Engelbart 872b395374
Rephrase some Javadoc
As suggested by @delvh.
2021-11-01 20:52:14 +01:00
Kai S. K. Engelbart 82c66c45ec
Improve EventBus Javadoc, make EventBusException final 2021-11-01 09:42:12 +01:00
Kai S. K. Engelbart 33ebf0302b
Initialize the default event bus statically
The previous method that used double checked synchronization offers
little performance benefits over a plain static initialization.

Reported-by @harkle-the-cake
2021-10-16 08:32:28 +02:00
Kai S. K. Engelbart 205a183db7
Allow nested dispatches by keeping track of nesting count 2021-07-12 10:24:48 +02:00
Kai S. K. Engelbart 74447dea59
Add nested dispatch test
The test performs a nested event dispatch then cancels the dispatch. If
Both operations are successful, the test is successful.

Currently, the test fails, but should be successful once the nested
dispatch bug is fixed.
2021-07-12 10:17:46 +02:00
Kai S. K. Engelbart 6eebd3c121
Pass errors caused during system event dispatch to caller
When an error is caused during the dispatch of a system event, a warning
has been logged instead instead of rethrowing the error. This has been
fixed.

This enables failing a JUnit test when an exception event handler is
invoked.
2021-07-07 22:06:07 +02:00
Kai S. K. Engelbart 0dcad7d178
Bump version to 1.1.0 2021-03-28 10:37:41 +02:00
Kai S. K. Engelbart 51f10c4144
Merge pull request 'Listener-Level Properties' (#13) from f/listener-level-properties into develop
Reviewed-on: https://git.kske.dev/kske/event-bus/pulls/13
Reviewed-by: delvh <leon@kske.dev>
2021-03-17 07:56:22 +01:00
Kai S. K. Engelbart f74b953db8
Replace hardcoded priority value by constant 2021-03-16 10:17:24 +01:00
Kai S. K. Engelbart 122106bf39
Transparently propagate event handler errors
When an exception occurs during the execution of an event handler, it is
caught, wrapped inside an exception event and dispatched on the event
bus.

This applies to any throwable, but is not very useful for errors, as
these are not normally caught. Assertion errors in particular, which are
used in unit tests, should not be caught, as this would cause the test
runner to miss a failed test.

Therefore, errors are now transparently passed through to the caller of
the dispatch method.
2021-03-15 08:29:15 +01:00
Kai S. K. Engelbart 2ec0a82a96
Respect listener-level properties 2021-03-14 11:18:11 +01:00
Kai S. K. Engelbart 6c74af608c
Allow @Polymorphic and @Priority on types, add value to @Polymorphic
This is the first step for listener level handler properties.

To allow a handler inside a polymorphic listener to be non-polymorphic,
the @Polymorphic annotation now has a boolean value that defaults to
true. In that case, it can be explicitly set to false to override the
listener-level default.
2021-02-22 19:12:06 +01:00
Kai S. K. Engelbart 7c3cd017de
Add system events section to README 2021-02-21 13:50:12 +01:00
Kai S. K. Engelbart 6a2cad4ae5
Add ExceptionEvent
An exception event wraps an event that caused an exception inside of an
event handler while being dispatched and is then dispatched to dedicated
handlers.
2021-02-21 10:36:06 +01:00
Kai S. K. Engelbart b2fe3a9d6c
Log unhandled dead events 2021-02-20 22:10:48 +01:00
Kai S. K. Engelbart 0036dc4829
Add DeadEvent
A dead events wraps an event that was dispatched but not delivered to
any handler. The dead event is than dispatched to dedicated handlers.
2021-02-19 16:05:11 +01:00
Kai S. K. Engelbart 4a5b94a9b7
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.
2021-02-19 11:14:43 +01:00
Kai S. K. Engelbart 002180ed3b
Remove EventListener and IEvent marker interfaces
This allows Event Bus to interface with existing classes without
modification.
2021-02-15 20:36:09 +01:00
Kai S. K. Engelbart cd2e7ad023
Rename Event#eventType to Event#value for more concise usage 2021-02-15 13:42:20 +01:00
Kai S. K. Engelbart 9b1c708514
Replace priority with @Priority
The new @Priority annotation serves the exact same purpose as
@Event(priority = ...), but should be easier to read in complex handler
declarations. It has to be used in conjunction with the @Event
annotation, not instead of it.
2021-02-15 12:06:33 +01:00
Kai S. K. Engelbart 3a6ebe9a19
Replace includeSubtypes with @Polymorphic
The new @Polymorphic annotation serves the exact same purpose as
@Event(includeSubtypes = true), but should be easier to read in complex
handler declarations. It has to be used in conjunction with the @Event
annotation, not instead of it.
2021-02-15 10:55:30 +01:00
Kai S. K. Engelbart e040f6ab1b
Simplify binding access calls in EventBus 2021-02-15 09:25:16 +01:00
Kai S. K. Engelbart fd255d65cc
Rename event-bus module to event-bus-core, add event-bus-ap module
event-bus is now a parent project containing the two modules
event-bus-core (the previous event-bus) and event-bus-ap (annotation
processor).

The version of the parent project (and thus that of the modules) has
been bumped to 1.0.0, as this change breaks compatibility with previous
versions due to the different artifact, module and package names.
2021-02-09 09:52:26 +01:00
Kai S. K. Engelbart 9701e862df
Add parent project, convert existing project to Maven module 2021-02-08 19:30:37 +01:00