diff options
Diffstat (limited to 'config-lib/src/main/java/com/yahoo/config/ModelReference.java')
-rw-r--r-- | config-lib/src/main/java/com/yahoo/config/ModelReference.java | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/config-lib/src/main/java/com/yahoo/config/ModelReference.java b/config-lib/src/main/java/com/yahoo/config/ModelReference.java index ecee42225db..ba35812db4d 100644 --- a/config-lib/src/main/java/com/yahoo/config/ModelReference.java +++ b/config-lib/src/main/java/com/yahoo/config/ModelReference.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config; +import java.io.File; import java.nio.file.Path; import java.util.Objects; import java.util.Optional; @@ -58,7 +59,14 @@ public class ModelReference { /** Returns the path to the file containing this model, or null if not available. */ public Path value() { - return resolved; + if (resolved != null) + return resolved; + + if (url.isPresent() && new File(url.get().value()).exists()) + return Path.of(url.get().value()); + if (path.isPresent()) + return Path.of(path.get().value()); + return null; } @Override @@ -78,10 +86,9 @@ public class ModelReference { /** Returns this on the format accepted by valueOf */ @Override public String toString() { - if (resolved != null) return resolved.toString(); - return modelId.orElse("\"\"") + " " + - url.map(v -> v.value()).orElse("\"\"") + " " + - path.map(v -> v.value()).orElse("\"\""); + return modelId.orElse("") + " " + + url.map(v -> v.value()).orElse("") + " " + + path.map(v -> v.value()).orElse(""); } /** Creates a model reference having a model id only. */ @@ -114,9 +121,9 @@ public class ModelReference { if (parts.length == 1) return new ModelReference(Path.of(s)); else if (parts.length == 3) - return new ModelReference(parts[0].equals("\"\"") ? Optional.empty() : Optional.of(parts[0]), - parts[1].equals("\"\"") ? Optional.empty() : Optional.of(new UrlReference(parts[1])), - parts[2].equals("\"\"") ? Optional.empty() : Optional.of(new FileReference(parts[2]))); + return new ModelReference(parts[0].equals("") ? Optional.empty() : Optional.of(parts[0]), + parts[1].equals("") ? Optional.empty() : Optional.of(new UrlReference(parts[1])), + parts[2].equals("") ? Optional.empty() : Optional.of(new FileReference(parts[2]))); else throw new IllegalArgumentException("Unexpected model string '" + s + "'"); } |