diff --git a/src/main/java/me/bearns/fias/service/DownloaderImpl.java b/src/main/java/me/bearns/fias/service/DownloaderImpl.java index 9e2a8a3..babe797 100644 --- a/src/main/java/me/bearns/fias/service/DownloaderImpl.java +++ b/src/main/java/me/bearns/fias/service/DownloaderImpl.java @@ -14,7 +14,7 @@ import java.util.concurrent.*; public class DownloaderImpl implements Downloader { private static final ExecutorService pool = Executors.newCachedThreadPool(); - private static final String BASE_DIRECTORY = "/var/opt/fias"; + private static final String BASE_DIRECTORY = "/tmp/"; //todo path private static final ConcurrentMap> locks = new ConcurrentHashMap(); @Override @@ -23,7 +23,9 @@ public class DownloaderImpl implements Downloader { CompletableFuture start = new CompletableFuture<>(); //syncronized - final CompletableFuture feature = locks.putIfAbsent(url, start); + final CompletableFuture add = locks.putIfAbsent(url, start); + + final CompletableFuture feature = add!=null ? add : locks.get(url); //return earlier runned feature if(feature != start) return feature; @@ -39,6 +41,7 @@ public class DownloaderImpl implements Downloader { path = Paths.get(BASE_DIRECTORY, conn.getFile()); } catch (IOException e) { + //todo log feature.obtrudeException(e); return; } diff --git a/src/main/java/me/bearns/fias/webapi/API.java b/src/main/java/me/bearns/fias/webapi/API.java index 4e5293f..78d22f3 100644 --- a/src/main/java/me/bearns/fias/webapi/API.java +++ b/src/main/java/me/bearns/fias/webapi/API.java @@ -1,5 +1,6 @@ package me.bearns.fias.webapi; +import me.bearns.fias.exceptions.CommonException; import me.bearns.fias.exceptions.DownloadException; import me.bearns.fias.service.Updater; import org.springframework.beans.factory.annotation.Autowired; @@ -16,7 +17,7 @@ public class API { void update(){ try { service.update(); - } catch (DownloadException e) { + } catch (CommonException e) { //TODO e.printStackTrace(); } diff --git a/src/test/java/me/bearns/fias/DownloaderTest.java b/src/test/java/me/bearns/fias/DownloaderTest.java index 0499db2..6e410ba 100644 --- a/src/test/java/me/bearns/fias/DownloaderTest.java +++ b/src/test/java/me/bearns/fias/DownloaderTest.java @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; import java.util.stream.Stream; @RunWith(SpringRunner.class) @@ -41,17 +42,20 @@ public class DownloaderTest { try { return fileCompletableFuture.get(); } catch (Exception e) { + //todo log return null; //on error } }); - assert fileStream.allMatch(Objects::nonNull); + final List result = fileStream.collect(Collectors.toList()); - assert fileStream.count() == 3; + assert result.stream().allMatch(Objects::nonNull); - assert fileStream.allMatch(File::exists); + assert result.size() == list.size(); - assert fileStream.allMatch(file -> file.length() > 0); + assert result.stream().allMatch(File::exists); + + assert result.stream().allMatch(file -> file.length() > 0); } }