@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 List<RegisterEntry> find(final Optional<RegisterEntry> re) { List<RegisterEntry> entries = findDir(new File(config.getOutputDir())); if (re.isPresent()) { entries = entries.stream().filter(e -> e.matches(re.get())) .collect(Collectors.toList()); } return entries; }
@Before public void setUp() throws Exception { try { new File( System.getProperty("java.io.tmpdir"), "service-reg-finder").delete(); } catch (Exception e) { } new File(System.getProperty("java.io.tmpdir"), "service-reg-finder").mkdirs(); registerConfig = new RegisterConfig( new File(System.getProperty("java.io.tmpdir"), "service-reg-finder").getAbsolutePath()); writer = new Register(registerConfig); finder = new Finder(registerConfig); entry = new RegisterEntry( 8080, "host", "module", "context", new Date(), null, 8080); }
@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)); } }
private List<RegisterEntry> findDir(File dir) { List<RegisterEntry> result = new ArrayList<>(); Stream.of(dir.listFiles()).forEach( (next) -> { if (next.isDirectory()) { result.addAll(findDir(next)); } if (next.isFile()) { try { String fileString = FileUtils.readFileToString(next); result.add(JacksonUtil.convertFromJson(fileString, RegisterEntry.class)); } catch (Exception e) { logger.error("Error loading service entry from disk {}", e, next.getAbsolutePath()); } } }); return ListX.fromIterable(result); } }
@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); }
@Test public void testFind() { writer.register(entry); List<RegisterEntry> list = finder.find(Optional.empty()); assertThat(list.size(), greaterThan(0)); assertThat(list.get(0).getContext(), equalTo("context")); } }
public List<RegisterEntry> find(final Optional<RegisterEntry> re) { List<RegisterEntry> entries = findDir(new File(config.getOutputDir())); if (re.isPresent()) { entries = entries.stream().filter(e -> e.matches(re.get())) .collect(Collectors.toList()); } return entries; }
@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 List<RegisterEntry> findDir(File dir) { List<RegisterEntry> result = new ArrayList<>(); Stream.of(dir.listFiles()).forEach( (next) -> { if (next.isDirectory()) { result.addAll(findDir(next)); } if (next.isFile()) { try { String fileString = FileUtils.readFileToString(next); result.add(JacksonUtil.convertFromJson(fileString, RegisterEntry.class)); } catch (Exception e) { logger.error("Error loading service entry from disk {}", e, next.getAbsolutePath()); } } }); return ListX.fromIterable(result); } }