diff --git a/src/main/java/me/bearns/fias/helpers/ThrowingBiConsumer.java b/src/main/java/me/bearns/fias/helpers/ThrowingBiConsumer.java new file mode 100644 index 0000000..da40d82 --- /dev/null +++ b/src/main/java/me/bearns/fias/helpers/ThrowingBiConsumer.java @@ -0,0 +1,20 @@ +package me.bearns.fias.helpers; + +import me.bearns.fias.exceptions.UnmarshallingException; +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; + +import java.util.function.BiConsumer; + +public interface ThrowingBiConsumer { + void accept(K k, V v) throws E; + + static BiConsumer unchecked(ThrowingBiConsumer f) { + return (k,v) -> { + try { + f.accept(k,v); + } catch (Throwable e) { + throw new RuntimeException(e); + }; + }; + } +} diff --git a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java index 2ec3db2..fcda478 100644 --- a/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java +++ b/src/main/java/me/bearns/fias/helpers/UpdaterImpl.java @@ -135,18 +135,27 @@ public class UpdaterImpl implements UpdateHelper { } } - map.forEach((config, entry) -> { + map.forEach(ThrowingBiConsumer.unchecked((config, entry) -> { try (InputStream is = zipFile.getInputStream(entry)) { log.debug("Process '{}' in zip", entry.getName()); unmarshaller.process(is, config, filter); } - }); + })); log.debug("Completed Zip file"); } catch (IOException e) { log.error("IO Unzip Exception"); throw new UnzipException(e); + } catch (RuntimeException e) { + final Throwable cause = e.getCause(); + + if(cause instanceof CommonException) { + log.error("Probably unmarshalling exception"); + throw (CommonException) cause; + } else { + log.error("Unknown exception occured"); + } } }