@Override public ResourceObservable.ResourceUpdate<ChangeNotification<Server>> reload(Set<ChangeNotification<Server>> currentSnapshot) { if (!isUpdated()) { return new ResourceObservable.ResourceUpdate<>(currentSnapshot, Collections.<ChangeNotification<Server>>emptySet(), sentinel); } try { try (LineNumberReader reader = new LineNumberReader(new FileReader(textFile))) { Set<ChangeNotification<Server>> newAddresses = new HashSet<>(); String line; while ((line = reader.readLine()) != null) { if (!(line = line.trim()).isEmpty()) { Server server = parseLine(reader.getLineNumber(), line); newAddresses.add(new ChangeNotification<Server>(ChangeNotification.Kind.Add, server)); } } return new ResourceObservable.ResourceUpdate<>(newAddresses, cancellationSet(currentSnapshot, newAddresses), sentinel); } } catch (IOException e) { if (lastModified == -1) { throw new ResourceObservable.ResourceLoaderException("Server resolver file missing on startup " + textFile, false, e); } throw new ResourceObservable.ResourceLoaderException("Cannot reload server resolver file " + textFile, true, e); } }
@Override public ResourceUpdate<ChangeNotification<Server>> reload(Set<ChangeNotification<Server>> currentSnapshot) { if (!isUpdated()) { return new ResourceUpdate<>(currentSnapshot, Collections.<ChangeNotification<Server>>emptySet()); } try { try (LineNumberReader reader = new LineNumberReader(new FileReader(textFile))) { Set<ChangeNotification<Server>> newAddresses = new HashSet<>(); String line; while ((line = reader.readLine()) != null) { if (!(line = line.trim()).isEmpty()) { Server server = parseLine(reader.getLineNumber(), line); newAddresses.add(new ChangeNotification<Server>(Kind.Add, server)); } } return new ResourceUpdate<>(newAddresses, cancellationSet(currentSnapshot, newAddresses)); } } catch (IOException e) { if (lastModified == -1) { throw new ResourceLoaderException("Server resolver file missing on startup " + textFile, false, e); } throw new ResourceLoaderException("Cannot reload server resolver file " + textFile, true, e); } }
@Override public ResourceUpdate<ChangeNotification<String>> reload(Set<ChangeNotification<String>> currentSnapshot) { try { Set<ChangeNotification<String>> newAddresses = DnsResolver.resolveServerDN(domainName); succeededOnce = true; return new ResourceUpdate<>(newAddresses, cancellationSet(currentSnapshot, newAddresses), sentinel); } catch (NamingException e) { if (succeededOnce) { throw new ResourceLoaderException("DNS failure on subsequent access", true, e); } else { throw new ResourceLoaderException("Cannot resolve DNS entry on startup", false, e); } } }
@Override public ResourceUpdate<Server> reload(Set<Server> currentSnapshot) { try { Set<Server> newAddresses = resolveEurekaServerDN(); succeededOnce = true; return new ResourceUpdate<>(newAddresses, cancellationSet(currentSnapshot, newAddresses)); } catch (NamingException e) { if (succeededOnce) { throw new ResourceLoaderException("DNS failure on subsequent access", true, e); } else { throw new ResourceLoaderException("Cannot resolve DNS entry on startup", false, e); } } }