aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAndrey Somov <public.somov@gmail.com>2021-12-29 10:32:41 +0400
committerAndrey Somov <public.somov@gmail.com>2021-12-29 10:32:41 +0400
commiteae60928010118d153d1333480ab1736f7130a57 (patch)
treebdf485841aa19cd24f857414528a1d14e8ab3e4f /src/main
parent28b244b7e03d0a4a510255ae3115dfc2607679c4 (diff)
downloadsnakeyaml-eae60928010118d153d1333480ab1736f7130a57.tar.gz
Provide example with Lombok and ENV variable substitution
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/yaml/snakeyaml/constructor/Constructor.java6
-rw-r--r--src/main/java/org/yaml/snakeyaml/env/EnvScalarConstructor.java18
2 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
index 9eb5976e..f04b470c 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/Constructor.java
@@ -88,6 +88,12 @@ public class Constructor extends SafeConstructor {
this(theRoot, moreTDs, new LoaderOptions());
}
+ /**
+ * Create with all possible arguments
+ * @param theRoot - the class (usually JavaBean) to be constructed
+ * @param moreTDs - collection of classes used by the root class
+ * @param loadingConfig - configuration
+ */
public Constructor(TypeDescription theRoot, Collection<TypeDescription> moreTDs, LoaderOptions loadingConfig) {
super(loadingConfig);
if (theRoot == null) {
diff --git a/src/main/java/org/yaml/snakeyaml/env/EnvScalarConstructor.java b/src/main/java/org/yaml/snakeyaml/env/EnvScalarConstructor.java
index 3c6a4144..2473170a 100644
--- a/src/main/java/org/yaml/snakeyaml/env/EnvScalarConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/env/EnvScalarConstructor.java
@@ -15,6 +15,8 @@
*/
package org.yaml.snakeyaml.env;
+import org.yaml.snakeyaml.LoaderOptions;
+import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.constructor.AbstractConstruct;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.error.MissingEnvironmentVariableException;
@@ -22,11 +24,13 @@ import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.Tag;
+import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Construct scalar for format ${VARIABLE} replacing the template with the value from environment.
+ * It can also be used to create JavaBeans when the all the arguments are provided.
* @see <a href="https://bitbucket.org/snakeyaml/snakeyaml/wiki/Variable%20substitution">Variable substitution</a>
* @see <a href="https://docs.docker.com/compose/compose-file/#variable-substitution">Variable substitution</a>
*/
@@ -36,10 +40,24 @@ public class EnvScalarConstructor extends Constructor {
// value can be any non-space -> \S+
public static final Pattern ENV_FORMAT = Pattern.compile("^\\$\\{\\s*((?<name>\\w+)((?<separator>:?(-|\\?))(?<value>\\S+)?)?)\\s*\\}$");
+ /**
+ * For simple cases when no JavaBeans are needed
+ */
public EnvScalarConstructor() {
this.yamlConstructors.put(ENV_TAG, new ConstructEnv());
}
+ /**
+ * Create EnvScalarConstructor which can create JavaBeans with variable substitution
+ * @param theRoot - the class (usually JavaBean) to be constructed
+ * @param moreTDs - collection of classes used by the root class
+ * @param loadingConfig - configuration
+ */
+ public EnvScalarConstructor(TypeDescription theRoot, Collection<TypeDescription> moreTDs, LoaderOptions loadingConfig) {
+ super(theRoot, moreTDs, loadingConfig);
+ this.yamlConstructors.put(ENV_TAG, new ConstructEnv());
+ }
+
private class ConstructEnv extends AbstractConstruct {
public Object construct(Node node) {
String val = constructScalar((ScalarNode) node);