Small Improvements
This commit is contained in:
parent
8257209337
commit
df67199fdd
|
@ -66,5 +66,5 @@ dependencies {
|
|||
compile 'com.google.code.gson:gson:2.8.6'
|
||||
|
||||
//Primitive Collections
|
||||
compile 'de.speiger:Primitive-Collections:0.4.4'
|
||||
compile 'de.speiger:Primitive-Collections:0.4.5'
|
||||
}
|
|
@ -18,8 +18,8 @@ import speiger.src.collections.objects.utils.maps.Object2ObjectMaps;
|
|||
public class EventBus
|
||||
{
|
||||
private static final Lookup LOOKUP = MethodHandles.lookup();
|
||||
Object2ObjectMap<Class<? extends Event>, Listeners> listeners = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<Class<? extends Event>, Listeners>());
|
||||
Map<Object, List<EventListener>> instances = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<Object, List<EventListener>>());
|
||||
Object2ObjectMap<Class<? extends Event>, Listeners> listeners = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>());
|
||||
Map<Object, List<EventListener>> instances = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>());
|
||||
|
||||
public <T extends Event> void register(Class<T> event, Consumer<T> listener)
|
||||
{
|
||||
|
@ -28,10 +28,7 @@ public class EventBus
|
|||
|
||||
public <T extends Event> void register(Class<T> event, EventPriority priority, Consumer<T> listener)
|
||||
{
|
||||
if(instances.containsKey(listener))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(instances.containsKey(listener)) return;
|
||||
getListeners(event).addListener(priority, (Consumer<Event>)listener);
|
||||
instances.put(listener, ObjectLists.singleton(new EventListener(event, (Consumer<Event>)listener)));
|
||||
}
|
||||
|
@ -43,60 +40,40 @@ public class EventBus
|
|||
|
||||
public void register(Object obj, boolean superClasses)
|
||||
{
|
||||
if(instances.containsKey(obj))
|
||||
{
|
||||
return;
|
||||
}
|
||||
final List<EventListener> list = new ObjectArrayList<EventListener>();
|
||||
if(instances.containsKey(obj)) return;
|
||||
final List<EventListener> list = new ObjectArrayList<>();
|
||||
try
|
||||
{
|
||||
register(obj.getClass().getDeclaredAnnotation(SubscribeEvent.class), obj, list);
|
||||
findMethods(obj.getClass(), superClasses, new Consumer<Method>() {
|
||||
@Override
|
||||
public void accept(Method t)
|
||||
{
|
||||
public void accept(Method t) {
|
||||
try
|
||||
{
|
||||
t.setAccessible(true);
|
||||
SubscribeEvent data = t.getAnnotation(SubscribeEvent.class);
|
||||
if(data == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(data == null) return;
|
||||
Consumer<Event> listener = new MethodListener(LOOKUP.unreflect(t).bindTo(obj));
|
||||
getListeners(data.event()).addListener(data.priority(), listener);
|
||||
list.add(new EventListener(data.event(), listener));
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
getListeners(data.value()).addListener(data.priority(), listener);
|
||||
list.add(new EventListener(data.value(), listener));
|
||||
}
|
||||
catch(Exception e) { e.printStackTrace(); }
|
||||
}
|
||||
});
|
||||
findFields(obj.getClass(), superClasses, new Consumer<Field>(){
|
||||
findFields(obj.getClass(), superClasses, new Consumer<Field>() {
|
||||
@Override
|
||||
public void accept(Field t)
|
||||
{
|
||||
public void accept(Field t) {
|
||||
try
|
||||
{
|
||||
t.setAccessible(true);
|
||||
register(t.getAnnotation(SubscribeEvent.class), t.get(obj), list);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
catch(Exception e) { e.printStackTrace(); }
|
||||
}
|
||||
});
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(list.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
catch(Exception e) { e.printStackTrace(); }
|
||||
if(list.isEmpty()) return;
|
||||
instances.put(obj, list);
|
||||
}
|
||||
|
||||
|
@ -106,8 +83,8 @@ public class EventBus
|
|||
{
|
||||
return;
|
||||
}
|
||||
getListeners(data.event()).addListener(data.priority(), (Consumer<Event>)obj);
|
||||
listeners.add(new EventListener(data.event(), (Consumer<Event>)obj));
|
||||
getListeners(data.value()).addListener(data.priority(), (Consumer<Event>)obj);
|
||||
listeners.add(new EventListener(data.value(), (Consumer<Event>)obj));
|
||||
}
|
||||
|
||||
private void findFields(Class<?> clz, boolean superClasses, Consumer<Field> fields)
|
||||
|
|
|
@ -14,5 +14,5 @@ public @interface SubscribeEvent
|
|||
{
|
||||
public EventPriority priority() default EventPriority.MEDIUM;
|
||||
|
||||
public Class<? extends Event> event();
|
||||
public Class<? extends Event> value();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue