@GET @Path("/list") @Produces("application/json") public void list(@Context UriInfo uriInfo, @Suspended AsyncResponse response) { ReactiveSeq.of(this).foldFuture(WorkerThreads.ioExecutor.get(), s -> s.forEach(Long.MAX_VALUE, next -> { try { cleaner.clean(); response.resume(finder.find(UriInfoParser.toRegisterEntry(uriInfo))); } catch (Exception e) { logger.error(e.getMessage(), e); response.resume(Arrays.asList("Bad Request: " + e.getMessage())); } })); }
private void cleanDir(File dir, boolean deleteWithoutCheck) { if (dir.listFiles() != null) { Stream.of(dir.listFiles()).forEach((next) -> { if (next.isDirectory()) { cleanDir(next, deleteWithoutCheck); } if (next.isFile()) { if (deleteWithoutCheck) { next.delete(); } else { checkFile(next); } } }); } }
public void clean() { cleanDir(new File(config.getOutputDir()), false); }
@Before public void setUp() throws Exception { try { new File( System.getProperty("java.io.tmpdir"), "lana-service-reg-cleaner").delete(); } catch (Exception e) { } new File( System.getProperty("java.io.tmpdir"), "lana-service-reg-cleaner").mkdirs(); registerConfig = new RegisterConfig( new File( System.getProperty("java.io.tmpdir"), "lana-service-reg-cleaner").getAbsolutePath()); writer = new Register(registerConfig); finder = new Finder(registerConfig); cleaner = new Cleaner(registerConfig, 1); entry = new RegisterEntry( 8080, "host", "module", "context", new Date(), null, 8080); }
@PostConstruct public void deleteOldFilesAfterEachStartup() { cleanDir(new File(config.getOutputDir()), true); }
private void cleanDir(File dir, boolean deleteWithoutCheck) { if (dir.listFiles() != null) { Stream.of(dir.listFiles()).forEach((next) -> { if (next.isDirectory()) { cleanDir(next, deleteWithoutCheck); } if (next.isFile()) { if (deleteWithoutCheck) { next.delete(); } else { checkFile(next); } } }); } }
@Test public void testClean() { writer.register(entry.withTime(new Date(System.currentTimeMillis() - 2000))); cleaner.clean(); List<RegisterEntry> list = finder.find(Optional.empty()); assertThat(list.size(), equalTo(0)); } }
@PostConstruct public void deleteOldFilesAfterEachStartup() { cleanDir(new File(config.getOutputDir()), true); }
@GET @Path("/list") @Produces("application/json") public void list(@Context UriInfo uriInfo, @Suspended AsyncResponse response) { ReactiveSeq.of(this).foldFuture(WorkerThreads.ioExecutor.get(), s -> s.forEach(Long.MAX_VALUE, next -> { try { cleaner.clean(); response.resume(finder.find(UriInfoParser.toRegisterEntry(uriInfo))); } catch (Exception e) { logger.error(e.getMessage(), e); response.resume(Arrays.asList("Bad Request: " + e.getMessage())); } })); }
public void clean() { cleanDir(new File(config.getOutputDir()), false); }