summaryrefslogtreecommitdiffstats
path: root/container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala
diff options
context:
space:
mode:
Diffstat (limited to 'container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala')
-rw-r--r--container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala13
1 files changed, 9 insertions, 4 deletions
diff --git a/container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala b/container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala
index 61f3c7a049c..16856930e54 100644
--- a/container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala
+++ b/container-di/src/main/scala/com/yahoo/container/di/componentgraph/core/ComponentNode.scala
@@ -99,14 +99,19 @@ class ComponentNode(componentId: ComponentId,
constructor.newInstance(actualArguments: _*)
} catch {
case e: InvocationTargetException =>
- throw removeStackTrace(new RuntimeException(s"An exception occurred while constructing $idAndType",
- cutStackTraceAtConstructor(e.getCause)))
-
+ throw removeStackTrace(constructThrowable(cutStackTraceAtConstructor(e.getCause), s"Error constructing $idAndType"))
}
initId(instance)
}
-
+
+ private def constructThrowable(cause: Throwable, message: String) : Throwable = {
+ if (cause != null && cause.isInstanceOf[Error]) // don't convert Errors to RuntimeExceptions
+ new Error(message, cause)
+ else
+ new RuntimeException(message, cause)
+ }
+
private def initId(component: AnyRef) = {
def checkAndSetId(c: AbstractComponent) {
if (c.hasInitializedId && c.getId != componentId )