io.nosqlbench.nb.api.config.params.JsonBackedConfigElement Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nb-api Show documentation
Show all versions of nb-api Show documentation
The top level API module for NoSQLBench. This module should have no internal
module dependencies other than the mvn-default module.
All modules within NoSQLBench can safely depend on this module with circular
dependencies. This module provides cross-cutting code infrastracture, such as
path utilities and ways of describing services used between modules.
It is also the transitive aggregation point for system-wide library dependencies
for logging and testing or similar needs.
package io.nosqlbench.nb.api.config.params;
import com.google.gson.*;
import java.util.Set;
public class JsonBackedConfigElement implements ElementData {
private final static Gson gson = new GsonBuilder().setPrettyPrinting().create();
private final JsonObject jsonObject;
private final String name;
public JsonBackedConfigElement(String injectedName, JsonObject jsonObject) {
this.name = injectedName;
this.jsonObject = jsonObject;
}
@Override
public Object get(String name) {
return jsonObject.get(name);
}
@Override
public Set getKeys() {
return jsonObject.keySet();
}
@Override
public boolean containsKey(String name) {
return jsonObject.keySet().contains(name);
}
@Override
public String getGivenName() {
return this.name;
}
@Override
public T convert(Object input, Class type) {
if (input instanceof JsonElement) {
T result = gson.fromJson((JsonElement) input, type);
return result;
} else {
throw new RuntimeException("Unable to convert json element from '" + input.getClass().getSimpleName() + "' to '" + type.getSimpleName() + "'");
}
}
@Override
public String toString() {
return getGivenName() + "(" + (extractElementName()!=null ? extractElementName() : "null" ) +"):" + jsonObject.toString();
}
@Override
public String extractElementName() {
if (jsonObject.has("name")) {
return jsonObject.get("name").getAsString();
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy