Merge pull request #1398 from nosqlbench/jeffb/deprecate-template-option

Deprecation warn for template option
This commit is contained in:
Jonathan Shook 2023-07-18 13:29:37 -05:00 committed by GitHub
commit 9ab49c9612
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -27,7 +27,6 @@ import java.util.function.Function;
public class StrInterpolator implements Function<String, String> { public class StrInterpolator implements Function<String, String> {
private final static Logger logger = LogManager.getLogger(StrInterpolator.class); private final static Logger logger = LogManager.getLogger(StrInterpolator.class);
private final MultiMap multimap = new MultiMap(); private final MultiMap multimap = new MultiMap();
private final StringSubstitutor substitutor = private final StringSubstitutor substitutor =
new StringSubstitutor(multimap, "<<", ">>", '\\') new StringSubstitutor(multimap, "<<", ">>", '\\')
@ -58,6 +57,11 @@ public class StrInterpolator implements Function<String, String> {
@Override @Override
public String apply(String raw) { public String apply(String raw) {
if (raw.contains("<<")) {
logger.warn("Deprecated use of '<<...>>' detected as template variable, use TEMPLATE(...) form. '<<...>>' " +
"are reserved in YAML spec for anchors and aliases.");
}
String after = substitutor.replace(substitutor2.replace(raw)); String after = substitutor.replace(substitutor2.replace(raw));
while (!after.equals(raw)) { while (!after.equals(raw)) {
raw = after; raw = after;
@ -66,7 +70,7 @@ public class StrInterpolator implements Function<String, String> {
return after; return after;
} }
public Map<String,String> checkpointAccesses() { public Map<String, String> checkpointAccesses() {
return multimap.checkpointAccesses(); return multimap.checkpointAccesses();
} }
@ -80,8 +84,8 @@ public class StrInterpolator implements Function<String, String> {
private final List<Map<String, ?>> maps = new ArrayList<>(); private final List<Map<String, ?>> maps = new ArrayList<>();
private final String warnPrefix = "UNSET"; private final String warnPrefix = "UNSET";
private final Map<String,String> accesses = new LinkedHashMap<>(); private final Map<String, String> accesses = new LinkedHashMap<>();
private final Map<String,String> extractedDefaults = new LinkedHashMap<>(); private final Map<String, String> extractedDefaults = new LinkedHashMap<>();
public void add(Map<String, ?> addedMap) { public void add(Map<String, ?> addedMap) {
maps.add(addedMap); maps.add(addedMap);
@ -96,7 +100,7 @@ public class StrInterpolator implements Function<String, String> {
key = parts[0]; key = parts[0];
value = parts[1]; value = parts[1];
if (!extractedDefaults.containsKey(key)) { if (!extractedDefaults.containsKey(key)) {
extractedDefaults.put(key,value); extractedDefaults.put(key, value);
} }
} }
@ -107,7 +111,7 @@ public class StrInterpolator implements Function<String, String> {
break; break;
} }
} }
value = (value==null? extractedDefaults.get(key) : value); value = (value == null ? extractedDefaults.get(key) : value);
value = (value != null) ? value : warnPrefix + ":" + key; value = (value != null) ? value : warnPrefix + ":" + key;
@ -116,14 +120,14 @@ public class StrInterpolator implements Function<String, String> {
// " Template variables must resolve to a single value."); // " Template variables must resolve to a single value.");
// } // }
accesses.put(key,value); accesses.put(key, value);
logger.debug("Template parameter '" + key + "' applied as '" + value + "'"); logger.debug("Template parameter '" + key + "' applied as '" + value + "'");
return value; return value;
} }
public Map<String,String> checkpointAccesses() { public Map<String, String> checkpointAccesses() {
LinkedHashMap<String,String> accesses = new LinkedHashMap<>(this.accesses); LinkedHashMap<String, String> accesses = new LinkedHashMap<>(this.accesses);
logger.debug("removed template params after applying:" + accesses); logger.debug("removed template params after applying:" + accesses);
this.accesses.clear(); this.accesses.clear();
return accesses; return accesses;