From 055ba95d87f76c4fbdd15dcfc2015cc52d77a68e Mon Sep 17 00:00:00 2001 From: Thomas Rubini <74205383+ThomasRubini@users.noreply.github.com> Date: Tue, 13 Dec 2022 19:50:07 +0100 Subject: [PATCH] Handle exceptional behaviours better --- .../fr/packageviewer/distribution/ArchDistribution.java | 5 +++++ .../packageviewer/distribution/FedoraDistribution.java | 9 +++++++++ .../fr/packageviewer/parser/AsyncRequestsParser.java | 8 ++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/packageviewer/distribution/ArchDistribution.java b/src/main/java/fr/packageviewer/distribution/ArchDistribution.java index ac5ebf9..2c7edb8 100644 --- a/src/main/java/fr/packageviewer/distribution/ArchDistribution.java +++ b/src/main/java/fr/packageviewer/distribution/ArchDistribution.java @@ -60,6 +60,11 @@ public CompletableFuture>> getPackageFromAPI(String pa ), dependenciesNames )); + }).exceptionally(error ->{ + error.printStackTrace(); + logger.warning("Error while fetching package %s from the API : \n%s".formatted(packageName, error)); + futureResult.complete(null); + return null; }); return futureResult; diff --git a/src/main/java/fr/packageviewer/distribution/FedoraDistribution.java b/src/main/java/fr/packageviewer/distribution/FedoraDistribution.java index b79f014..0875599 100644 --- a/src/main/java/fr/packageviewer/distribution/FedoraDistribution.java +++ b/src/main/java/fr/packageviewer/distribution/FedoraDistribution.java @@ -9,6 +9,8 @@ import fr.packageviewer.Pair; import fr.packageviewer.parser.AsyncRequestsParser; import org.json.*; import java.util.concurrent.CompletableFuture; +import java.util.logging.Logger; + import fr.packageviewer.pack.Package; import fr.packageviewer.pack.SearchedPackage; import fr.packageviewer.LoggerManager; @@ -17,6 +19,8 @@ import fr.packageviewer.pack.SearchedPackage; public class FedoraDistribution extends AsyncRequestsParser implements Distribution { + private static final Logger logger = LoggerManager.getLogger("FedoraDistribution"); + protected CompletableFuture>> getPackageFromAPI(String packageName) { // create a new http client HttpClient client = HttpClient.newHttpClient(); @@ -60,6 +64,11 @@ public class FedoraDistribution extends AsyncRequestsParser implements Distribut ), dependenciesNames )); + }).exceptionally(error->{ + error.printStackTrace(); + logger.warning("Error while fetching package %s from the API : \n%s".formatted(packageName, error)); + futureResult.complete(null); + return null; }); // if there's an error, return an empty string return futureResult; diff --git a/src/main/java/fr/packageviewer/parser/AsyncRequestsParser.java b/src/main/java/fr/packageviewer/parser/AsyncRequestsParser.java index a279cf6..9156c55 100644 --- a/src/main/java/fr/packageviewer/parser/AsyncRequestsParser.java +++ b/src/main/java/fr/packageviewer/parser/AsyncRequestsParser.java @@ -69,12 +69,12 @@ public abstract class AsyncRequestsParser { // TODO this doesn't seem clean logger.fine("Completing callback DEPS for package %s (depth=%s)".formatted(packageName, depth)); futurePackage.complete(pack); - }).exceptionally((e2 -> { - logger.warning("Error while fetching package %s (depth=%s) from the API : \n%s".formatted(packageName, depth, e2)); - e2.printStackTrace(); + }).exceptionally(error -> { + error.printStackTrace(); + logger.warning("Error while manipulating package %s (depth=%s) : \n%s".formatted(packageName, depth, error)); futurePackage.complete(null); return null; - })); + }); return futurePackage; }