summaryrefslogtreecommitdiffstats
path: root/config-lib
diff options
context:
space:
mode:
authorArnstein Ressem <aressem@gmail.com>2022-09-02 16:12:23 +0200
committerGitHub <noreply@github.com>2022-09-02 16:12:23 +0200
commit3edb00aee148bed53e74fb324fe46960acdbd498 (patch)
tree79c1ce4524eacdf4117a0908f5f55d8358b836ae /config-lib
parentc23bba0b2cd6ab7699ee2b0d6be34c023159ffb8 (diff)
Revert "Cleanup, more tests and separate resolved from not"
Diffstat (limited to 'config-lib')
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ModelNode.java4
-rw-r--r--config-lib/src/main/java/com/yahoo/config/ModelReference.java23
2 files changed, 17 insertions, 10 deletions
diff --git a/config-lib/src/main/java/com/yahoo/config/ModelNode.java b/config-lib/src/main/java/com/yahoo/config/ModelNode.java
index 67ea751d40e..2748ef8c7e9 100644
--- a/config-lib/src/main/java/com/yahoo/config/ModelNode.java
+++ b/config-lib/src/main/java/com/yahoo/config/ModelNode.java
@@ -23,13 +23,13 @@ public class ModelNode extends LeafNode<Path> {
public ModelNode(ModelReference modelReference) {
super(true);
- this.value = modelReference.value(); // The resolved value, or null if not resolved
+ this.value = modelReference.value();
this.reference = modelReference;
}
@Override
public String getValue() {
- return reference.toString();
+ return value.toString();
}
@Override
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 + "'");
}