From 2ea16f68a20c9576aa72c75d995cdb30b10148ab Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 21 Jul 2021 22:12:16 -0700 Subject: [PATCH] throw exception on non-failthrough events registered as failthrough --- .../java/com/dfsek/terra/event/EventContextImpl.java | 12 ++++++++---- .../terra/event/FunctionalEventHandlerImpl.java | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java index 21c6e37a9..b087a98c0 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/EventContextImpl.java @@ -2,6 +2,7 @@ package com.dfsek.terra.event; import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.event.events.Event; +import com.dfsek.terra.api.event.events.FailThroughEvent; import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.event.functional.EventContext; import org.jetbrains.annotations.NotNull; @@ -18,14 +19,14 @@ public class EventContextImpl implements EventContext, Compa private final TerraAddon addon; - public EventContextImpl(TerraAddon addon) { + private final Class eventClass; + + public EventContextImpl(TerraAddon addon, Class eventClass) { this.addon = addon; + this.eventClass = eventClass; } public void handle(T event) { - if(event instanceof PackEvent) { - - } actions.forEach(action -> action.accept(event)); } @@ -43,6 +44,9 @@ public class EventContextImpl implements EventContext, Compa @Override public EventContext failThrough() { + if(!FailThroughEvent.class.isAssignableFrom(eventClass)) { + throw new IllegalStateException("Cannot fail-through on event which does not implement FailThroughEvent: " + eventClass.getCanonicalName()); + } this.failThrough = true; return this; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java index 8ff120e2e..941c7b673 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/event/FunctionalEventHandlerImpl.java @@ -52,14 +52,15 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler { @Override public EventContext register(TerraAddon addon, Class clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon); + EventContextImpl eventContext = new EventContextImpl<>(addon, clazz); contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext); return eventContext; } + @SuppressWarnings("unchecked") @Override public EventContext register(TerraAddon addon, TypeKey clazz) { - EventContextImpl eventContext = new EventContextImpl<>(addon); + EventContextImpl eventContext = new EventContextImpl<>(addon, (Class) clazz.getRawType()); contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext); return eventContext; }