From 31676970de5e0e95dad834ed1020e956910c926a Mon Sep 17 00:00:00 2001 From: RomanQed Date: Wed, 21 Feb 2024 15:00:05 +0300 Subject: [PATCH] Fixed a bug where the builder did not reset the status after throwing an exception --- .../di/CheckedProviderBuilder.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/amayaframework/di/CheckedProviderBuilder.java b/src/main/java/io/github/amayaframework/di/CheckedProviderBuilder.java index 4649d40..fdcdd38 100644 --- a/src/main/java/io/github/amayaframework/di/CheckedProviderBuilder.java +++ b/src/main/java/io/github/amayaframework/di/CheckedProviderBuilder.java @@ -93,8 +93,7 @@ protected void buildArtifacts(Map, ClassScheme> schemes, LazyProvider p } } - @Override - public ServiceProvider build() { + private ServiceProvider uncheckedBuild() { // Build class schemes var schemes = makeSchemes(); // Build dependency graph @@ -131,4 +130,17 @@ public ServiceProvider build() { reset(); return new ServiceProviderImpl(repository); } + + @Override + public ServiceProvider build() { + try { + return uncheckedBuild(); + } catch (Error | RuntimeException e) { + reset(); + throw e; + } catch (Throwable e) { + reset(); + throw new RuntimeException(e); + } + } }