diff --git a/app/src/main/java/ru/kirillius/pf/sdn/External/API/GitSubscription.java b/app/src/main/java/ru/kirillius/pf/sdn/External/API/GitSubscription.java index 665c842..020a006 100644 --- a/app/src/main/java/ru/kirillius/pf/sdn/External/API/GitSubscription.java +++ b/app/src/main/java/ru/kirillius/pf/sdn/External/API/GitSubscription.java @@ -63,7 +63,7 @@ public class GitSubscription implements SubscriptionProvider { for (var file : Objects.requireNonNull(resourcesDir.listFiles())) { try (var stream = new FileInputStream(file)) { var name = file.getName(); - if(!name.endsWith(".json")) { + if (!name.endsWith(".json")) { continue; } var bundle = JSONUtility.deserializeStructure(new JSONObject(new JSONTokener(stream)), NetworkResourceBundle.class); @@ -73,6 +73,7 @@ public class GitSubscription implements SubscriptionProvider { return map; } catch (Exception e) { + SystemLogger.error("Error while reading git repository", CTX, e); throw new RuntimeException(e); } } diff --git a/core/src/main/java/ru/kirillius/pf/sdn/core/Subscription/SubscriptionService.java b/core/src/main/java/ru/kirillius/pf/sdn/core/Subscription/SubscriptionService.java index fa277bf..c1d9d3c 100644 --- a/core/src/main/java/ru/kirillius/pf/sdn/core/Subscription/SubscriptionService.java +++ b/core/src/main/java/ru/kirillius/pf/sdn/core/Subscription/SubscriptionService.java @@ -22,11 +22,9 @@ public class SubscriptionService extends AppService { private final ExecutorService executor = Executors.newSingleThreadExecutor(); - private final Map, SubscriptionProvider> providerCache = new ConcurrentHashMap<>(); - private final AtomicReference> updateProcess = new AtomicReference<>(); @Getter @@ -65,22 +63,28 @@ public class SubscriptionService extends AppService { for (var repoConfig : config.getSubscriptions()) { var providerType = repoConfig.getType(); var provider = providerCache.get(providerType); - if (provider == null) { - //noinspection unchecked - provider = SubscriptionProvider.instantiate((Class) providerType, context); - //noinspection unchecked - providerCache.put((Class) providerType, provider); - } - var resources = provider.getResources(repoConfig); - - resources.keySet().forEach(key -> { - var resourceName = repoConfig.getName() + ":" + key; - //добавляем только выбранные ресурсы - if (subscribedResources.contains(resourceName)) { - bundle.add(resources.get(key)); + try { + if (provider == null) { + //noinspection unchecked + provider = SubscriptionProvider.instantiate((Class) providerType, context); + //noinspection unchecked + providerCache.put((Class) providerType, provider); } - available.put(resourceName, resources.get(key)); - }); + + + var resources = provider.getResources(repoConfig); + + resources.keySet().forEach(key -> { + var resourceName = repoConfig.getName() + ":" + key; + //добавляем только выбранные ресурсы + if (subscribedResources.contains(resourceName)) { + bundle.add(resources.get(key)); + } + available.put(resourceName, resources.get(key)); + }); + } catch (Exception e) { + SystemLogger.error("Error fetching provider " + provider, CTX, e); + } } availableResources.clear();