Fix Api runtime error and add comments on how to fix in future
This commit is contained in:
+6
-1
@@ -2,6 +2,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -23,7 +24,11 @@ public abstract class DhApiAfterDhInitEvent implements IDhApiEvent<Void>
|
||||
this.afterDistantHorizonsInit();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, true);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -25,6 +26,10 @@ public abstract class DhApiAfterRenderEvent implements IDhApiEvent<DhApiAfterRen
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -4,6 +4,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -26,6 +27,10 @@ public abstract class DhApiBeforeDhInitEvent implements IDhApiEvent<Void>
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, true);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -25,6 +26,10 @@ public abstract class DhApiBeforeRenderEvent implements IDhApiEvent<DhApiBeforeR
|
||||
@Override
|
||||
public final boolean fireEvent(EventParam input) { return this.beforeRender(input); }
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(true, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -4,6 +4,7 @@ import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel;
|
||||
import com.seibel.distanthorizons.api.interfaces.data.IDhApiTerrainDataRepo;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -30,6 +31,10 @@ public abstract class DhApiDataFileChangedEvent implements IDhApiEvent<DhApiData
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -25,6 +26,10 @@ public abstract class DhApiLevelLoadEvent implements IDhApiEvent<DhApiLevelLoadE
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -25,6 +26,10 @@ public abstract class DhApiLevelSaveEvent implements IDhApiEvent<DhApiLevelSaveE
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+5
@@ -3,6 +3,7 @@ package com.seibel.distanthorizons.api.methods.events.abstractEvents;
|
||||
import com.seibel.distanthorizons.api.methods.events.interfaces.IDhApiEvent;
|
||||
import com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper;
|
||||
import com.seibel.distanthorizons.api.objects.events.DhApiEventDefinition;
|
||||
import com.seibel.distanthorizons.coreapi.events.ApiEventDefinitionHandler;
|
||||
|
||||
/**
|
||||
* @author James Seibel
|
||||
@@ -25,6 +26,10 @@ public abstract class DhApiLevelUnloadEvent implements IDhApiEvent<DhApiLevelUnl
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: when creating new events, make sure to bind this definition in {@link ApiEventDefinitionHandler}
|
||||
* Otherwise a bunch of runtime errors will be thrown.
|
||||
*/
|
||||
public final static DhApiEventDefinition EVENT_DEFINITION = new DhApiEventDefinition(false, false);
|
||||
@Override
|
||||
public final DhApiEventDefinition getEventDefinition() { return EVENT_DEFINITION; }
|
||||
|
||||
+20
-27
@@ -118,36 +118,29 @@ public class ApiEventInjector extends DependencyInjector<IDhApiEvent> implements
|
||||
@Override
|
||||
public <T, U extends IDhApiEvent<T>> boolean fireAllEvents(Class<U> abstractEvent, T eventParameterObject)
|
||||
{
|
||||
try {
|
||||
boolean cancelEvent = false;
|
||||
|
||||
// if this is a one time event, record that it was called
|
||||
if (ApiEventDefinitionHandler.INSTANCE.getEventDefinition(abstractEvent).isOneTimeEvent &&
|
||||
!this.firedOneTimeEventParamsByEventInterface.containsKey(abstractEvent)) {
|
||||
this.firedOneTimeEventParamsByEventInterface.put(abstractEvent, eventParameterObject);
|
||||
}
|
||||
|
||||
|
||||
// fire each bound event
|
||||
ArrayList<U> eventList = this.getAll(abstractEvent);
|
||||
for (IDhApiEvent<T> event : eventList) {
|
||||
if (event != null) {
|
||||
try {
|
||||
// fire each event and record if any of them
|
||||
// request to cancel the event.
|
||||
cancelEvent |= event.fireEvent(eventParameterObject);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Exception thrown by event handler [" + event.getClass().getSimpleName() + "] for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e);
|
||||
}
|
||||
boolean cancelEvent = false;
|
||||
|
||||
// if this is a one time event, record that it was called
|
||||
if (ApiEventDefinitionHandler.INSTANCE.getEventDefinition(abstractEvent).isOneTimeEvent &&
|
||||
!this.firedOneTimeEventParamsByEventInterface.containsKey(abstractEvent)) {
|
||||
this.firedOneTimeEventParamsByEventInterface.put(abstractEvent, eventParameterObject);
|
||||
}
|
||||
|
||||
|
||||
// fire each bound event
|
||||
ArrayList<U> eventList = this.getAll(abstractEvent);
|
||||
for (IDhApiEvent<T> event : eventList) {
|
||||
if (event != null) {
|
||||
try {
|
||||
// fire each event and record if any of them
|
||||
// request to cancel the event.
|
||||
cancelEvent |= event.fireEvent(eventParameterObject);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Exception thrown by event handler [" + event.getClass().getSimpleName() + "] for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
return cancelEvent;
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
//LOGGER.error("Exception thrown while firing events for event type [" + abstractEvent.getSimpleName() + "], error:" + e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
return cancelEvent;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -58,6 +58,7 @@ public class ApiEventDefinitionHandler
|
||||
this.setEventDefinition(DhApiLevelLoadEvent.class, DhApiLevelLoadEvent.EVENT_DEFINITION);
|
||||
this.setEventDefinition(DhApiLevelSaveEvent.class, DhApiLevelSaveEvent.EVENT_DEFINITION);
|
||||
this.setEventDefinition(DhApiLevelUnloadEvent.class, DhApiLevelUnloadEvent.EVENT_DEFINITION);
|
||||
this.setEventDefinition(DhApiDataFileChangedEvent.class, DhApiDataFileChangedEvent.EVENT_DEFINITION);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user