Skip to content

Instantly share code, notes, and snippets.

@Deamon5550
Created July 19, 2016 18:20
Show Gist options
  • Save Deamon5550/42af0660382a478c7db69a146c41a59c to your computer and use it in GitHub Desktop.
Save Deamon5550/42af0660382a478c7db69a146c41a59c to your computer and use it in GitHub Desktop.
diff --git a/src/main/java/org/spongepowered/common/event/ListenerChecker.java b/src/main/java/org/spongepowered/common/event/ListenerChecker.java
index c5cd151..01a073c 100644
--- a/src/main/java/org/spongepowered/common/event/ListenerChecker.java
+++ b/src/main/java/org/spongepowered/common/event/ListenerChecker.java
@@ -42,9 +42,10 @@
public class ListenerChecker {
+ private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("sponge.debugShouldFire", "").toLowerCase());
+
private final Class<?> clazz;
private Map<String, Field> fields = new HashMap<>();
- private boolean DEBUG = Boolean.parseBoolean(System.getProperty("sponge.debugShouldFire", "").toLowerCase());
private LoadingCache<Class<?>, Optional<Field>> fieldCache = CacheBuilder.newBuilder().build(new CacheLoader<Class<?>, Optional<Field>>() {
@@ -70,9 +71,8 @@ private static String getName(Class<?> clazz) {
return CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, name);
}
- @SuppressWarnings("unchecked")
- public void registerListenerFor(Class<?> eventClass) {
- Set<Class<?>> types = (Set<Class<?>>) TypeToken.of(eventClass).getTypes().rawTypes();
+ public <T> void registerListenerFor(Class<T> eventClass) {
+ Set<Class<? super T>> types = TypeToken.of(eventClass).getTypes().rawTypes();
for (Class<?> type: types) {
this.subtypeMappings.getUnchecked(type).add(eventClass);
}
@@ -93,9 +93,8 @@ public void registerListenerFor(Class<?> eventClass) {
this.updateFields(types, c -> true);
}
- @SuppressWarnings("unchecked")
- public void unregisterListenerFor(Class<?> eventClass) {
- Set<Class<?>> types = (Set<Class<?>>) TypeToken.of(eventClass).getTypes().rawTypes();
+ public <T> void unregisterListenerFor(Class<T> eventClass) {
+ Set<Class<? super T>> types = TypeToken.of(eventClass).getTypes().rawTypes();
for (Class<?> type: types) {
this.subtypeMappings.getUnchecked(type).remove(eventClass);
}
@@ -122,7 +121,7 @@ public ListenerChecker(Class<?> clazz) {
}
}
- public void updateFields(Collection<Class<?>> classes, Predicate<Class<?>> enable) {
+ public <T> void updateFields(Collection<Class<? super T>> classes, Predicate<Class<?>> enable) {
for (Class<?> clazz: classes) {
this.fieldCache.getUnchecked(clazz).ifPresent(f -> {
boolean isEnabled = enable.test(clazz);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment