From c5b0271db77d31cbaa31aeae8a860d316e436570 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Mon, 14 Nov 2022 13:49:44 +0100 Subject: [PATCH] [#1817] Add extra error information on simulation listener instantiation --- core/resources/l10n/messages.properties | 2 ++ .../simulation/extension/impl/JavaCode.java | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 0c13b37f3..d1462bf8a 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -470,6 +470,8 @@ SimulationExtension.javacode.name = Java code SimulationExtension.javacode.name.none = none SimulationExtension.javacode.desc = Add a custom SimulationListener to the simulation SimulationExtension.javacode.className = Fully-qualified Java class name: +SimulationExtension.javacode.classnotfound = Could not find class +SimulationExtension.javacode.couldnotinstantiate = Could not instantiate class %s.
Does it have a zero-argument, or @Inject constructor? SimulationExtension.scripting.name = {language} script SimulationExtension.scripting.desc = Extend OpenRocket simulations by custom scripts. diff --git a/core/src/net/sf/openrocket/simulation/extension/impl/JavaCode.java b/core/src/net/sf/openrocket/simulation/extension/impl/JavaCode.java index 3602ec175..8a1acfbfa 100644 --- a/core/src/net/sf/openrocket/simulation/extension/impl/JavaCode.java +++ b/core/src/net/sf/openrocket/simulation/extension/impl/JavaCode.java @@ -1,5 +1,6 @@ package net.sf.openrocket.simulation.extension.impl; +import com.google.inject.ConfigurationException; import net.sf.openrocket.simulation.SimulationConditions; import net.sf.openrocket.simulation.exception.SimulationException; import net.sf.openrocket.simulation.extension.AbstractSimulationExtension; @@ -23,11 +24,15 @@ public class JavaCode extends AbstractSimulationExtension { if (!SimulationListener.class.isAssignableFrom(clazz)) { throw new SimulationException("Class " + className + " does not implement SimulationListener"); } - SimulationListener listener = (SimulationListener) injector.getInstance(clazz); - conditions.getSimulationListenerList().add(listener); + try { + SimulationListener listener = (SimulationListener) injector.getInstance(clazz); + conditions.getSimulationListenerList().add(listener); + } catch (ConfigurationException e) { + throw new SimulationException(String.format(trans.get("SimulationExtension.javacode.couldnotinstantiate"), className), e); + } } } catch (ClassNotFoundException e) { - throw new SimulationException("Could not find class " + className); + throw new SimulationException(trans.get("SimulationExtension.javacode.classnotfound") + " " + className); } }