Skip to content

Commit

Permalink
Change EventListener to a sealed class (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
Technici4n committed Nov 29, 2023
1 parent 27b65c4 commit b041248
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 27 deletions.

This file was deleted.

4 changes: 2 additions & 2 deletions src/main/java/net/neoforged/bus/ConsumerEventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/**
* Wraps a consumer to be used as an event handler, and overrides {@link #toString()} for better debugging.
*/
public class ConsumerEventHandler extends EventListener {
public sealed class ConsumerEventHandler extends EventListener {
protected final Consumer<Event> consumer;

public ConsumerEventHandler(Consumer<Event> consumer) {
Expand All @@ -31,7 +31,7 @@ public String toString() {
return consumer.toString();
}

public static class WithPredicate extends ConsumerEventHandler implements IWrapperListener {
public static final class WithPredicate extends ConsumerEventHandler implements IWrapperListener {
private final Predicate<Event> predicate;
private final EventListener withoutCheck;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/neoforged/bus/EventListenerFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
class EventListenerFactory {
private static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup();

private static final String HANDLER_DESC = Type.getInternalName(EventListener.class);
private static final String HANDLER_DESC = Type.getInternalName(GeneratedEventListener.class);

private static final String HANDLER_FUNC_DESC = Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Event.class));
private static final String INSTANCE_FUNC_DESC = Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Object.class), Type.getType(Event.class));
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/net/neoforged/bus/GeneratedEventListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* Copyright (c) NeoForged and contributors
* SPDX-License-Identifier: LGPL-2.1-only
*/

package net.neoforged.bus;

import net.neoforged.bus.api.EventListener;

/**
* Base class for event listeners generated by {@link EventListenerFactory}.
*/
public abstract non-sealed class GeneratedEventListener extends EventListener {
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
/**
* Wrapper around an event handler generated for a {@link SubscribeEvent} method.
*/
class SubscribeEventListener extends EventListener implements IWrapperListener {
public final class SubscribeEventListener extends EventListener implements IWrapperListener {
private final EventListener handler;
private final SubscribeEvent subInfo;
private final boolean isGeneric;
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/net/neoforged/bus/api/EventListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,15 @@

package net.neoforged.bus.api;

import net.neoforged.bus.ConsumerEventHandler;
import net.neoforged.bus.GeneratedEventListener;
import net.neoforged.bus.SubscribeEventListener;

/**
* Event listeners are wrapped with implementations of this class.
*/
public abstract class EventListener
public abstract sealed class EventListener
permits ConsumerEventHandler, GeneratedEventListener, SubscribeEventListener
{
public abstract void invoke(Event event);
}

0 comments on commit b041248

Please sign in to comment.