diff options
Diffstat (limited to 'config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java')
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java index 5d720a74b15..2c4e3d40250 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java @@ -121,10 +121,9 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { if (source instanceof FileSource || configId.startsWith("file:")) return getFileSub(key, source); if (source instanceof DirSource || configId.startsWith("dir:")) return getDirFileSub(key, source); if (source instanceof JarSource || configId.startsWith("jar:")) return getJarSub(key, source); - if (source instanceof ConfigSet) return new ConfigSetSubscription<>(key, source); - if (source instanceof ConfigSourceSet) { - JRTConfigRequester requester = requesters.getRequester((ConfigSourceSet) source, timingValues); - return new JRTConfigSubscription<>(key, requester, timingValues); + if (source instanceof ConfigSet cset) return new ConfigSetSubscription<>(key, cset); + if (source instanceof ConfigSourceSet csset) { + return new JRTConfigSubscription<>(key, requesters.getRequester(csset, timingValues), timingValues); } throw new IllegalArgumentException("Unknown source type: " + source); } @@ -132,21 +131,19 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { private static <T extends ConfigInstance> JarConfigSubscription<T> getJarSub(ConfigKey<T> key, ConfigSource source) { String jarName; String path = "config/"; - if (source instanceof JarSource) { - JarSource js = (JarSource) source; + if (source instanceof JarSource js) { jarName = js.getJarFile().getName(); if (js.getPath() != null) path = js.getPath(); } else { - jarName = key.getConfigId().replace("jar:", "").replaceFirst("\\!/.*", ""); - if (key.getConfigId().contains("!/")) path = key.getConfigId().replaceFirst(".*\\!/", ""); + jarName = key.getConfigId().replace("jar:", "").replaceFirst("!/.*", ""); + if (key.getConfigId().contains("!/")) path = key.getConfigId().replaceFirst(".*!/", ""); } return new JarConfigSubscription<>(key, jarName, path); } private static <T extends ConfigInstance> ConfigSubscription<T> getFileSub(ConfigKey<T> key, ConfigSource source) { - File file = ((source instanceof FileSource)) - ? ((FileSource) source).getFile() - : new File(key.getConfigId().replace("file:", "")); + FileSource file = source instanceof FileSource fileSource ? fileSource + : new FileSource(new File(key.getConfigId().replace("file:", ""))); return new FileConfigSubscription<>(key, file); } @@ -158,30 +155,16 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { } private static <T extends ConfigInstance> ConfigSubscription<T> getDirFileSub(ConfigKey<T> key, ConfigSource source) { - String dir = key.getConfigId().replace("dir:", ""); - if (source instanceof DirSource) { - dir = ((DirSource) source).getDir().toString(); - } - if (!dir.endsWith(File.separator)) dir = dir + File.separator; - String name = getConfigFilename(key); - File file = new File(dir + name); - if (!file.exists()) { - throw new IllegalArgumentException("Could not find a config file for '" + key.getName() + "' in '" + dir + "'"); - } - return new FileConfigSubscription<>(key, file); + DirSource dir = source instanceof DirSource dirSource ? dirSource + : new DirSource(new File(key.getConfigId().replace("dir:", ""))); + return new FileConfigSubscription<>(key, dir.getFile(getConfigFilename(key))); } - @SuppressWarnings("unchecked") @Override public boolean equals(Object o) { - if (o instanceof ConfigSubscription) { - ConfigSubscription<T> other = (ConfigSubscription<T>) o; - return key.equals(other.key); - } - return false; + return o instanceof ConfigSubscription<?> cs && key.equals(cs.key); } - /** * Called from {@link ConfigSubscriber} when the changed status of this config is propagated to the clients */ |