Class DataContextUtils
- java.lang.Object
-
- com.dtolabs.rundeck.core.dispatcher.DataContextUtils
-
public class DataContextUtils extends java.lang.Object
- Since:
- 5/9/17
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
DataContextUtils.EnvironmentConfigurable
Can be configured with environment variablesstatic class
DataContextUtils.UnresolvedDataReferenceException
Indicates that the value of a property reference could not be resolved.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ENV_VAR_PREFIX
Prefix string used for all environment variable namesstatic Converter<java.lang.String,java.lang.String>
replaceMissingOptionsWithBlank
A converter which replaces '${option.*}' with blank when replacing data referencesstatic java.util.function.Predicate<java.lang.String>
stringContainsPropertyReferencePredicate
evaluates to true if a string contains a property reference
-
Constructor Summary
Constructors Constructor Description DataContextUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
addContext(java.lang.String key, java.util.Map<java.lang.String,java.lang.String> data, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> context)
Return a new context with appended data setstatic void
addEnvVars(DataContextUtils.EnvironmentConfigurable sshexecTask, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
add Env elements to pass environment variables to the ExtSSHExecstatic void
addEnvVarsFromContextForExec(org.apache.tools.ant.taskdefs.ExecTask execTask, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
Add embedded env elements for any included context data for the scriptstatic MutableDataContext
context()
static MutableDataContext
context(java.lang.String key, java.util.Map<java.lang.String,java.lang.String> data)
static MutableDataContext
context(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
static java.util.Map<java.lang.String,java.lang.String>
flattenDataContext(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
static java.lang.String
generateEnvVarName(java.lang.String key)
Generate environment variable name from option namestatic java.util.Map<java.lang.String,java.lang.String>
generateEnvVarsFromContext(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
static java.util.Map<java.lang.String,java.lang.String>
generateEnvVarsFromData(java.util.Map<java.lang.String,java.lang.String> options, java.lang.String prefix)
Convert option keys into environment variable names.static boolean
hasOptionsInString(java.lang.String evalString)
static java.lang.String
join(java.util.Collection<java.lang.String> list, java.lang.String separator)
Join a list of strings into a single string with a separatorstatic java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
merge(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> targetContext, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> newContext)
Merge one context onto another by adding or replacing values in a new mapstatic java.util.Map<java.lang.String,java.lang.String>
nodeData(INodeEntry nodeentry)
Generate a dataset for a INodeEntrystatic java.lang.String
replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Deprecated.static java.lang.String
replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Deprecated.static java.lang.String
replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded, boolean blankIfUnexpanded)
static java.util.Map<java.lang.String,java.lang.Object>
replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Recursively replace data references in the values in a map which contains either string, collection or Map values.static java.util.Map<java.lang.String,java.lang.Object>
replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded)
Recursively replace data references in the values in a map which contains either string, collection or Map values.static java.util.Map<java.lang.String,java.lang.Object>
replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded, java.util.function.BiFunction<java.lang.String,java.lang.Object,java.lang.Object> inputConverter, java.util.function.BiFunction<java.lang.String,java.lang.Object,java.lang.Object> outputConverter)
Recursively replace data references in the values in a map which contains either string, collection or Map values.static Converter<java.lang.String,java.lang.String>
replaceDataReferencesConverter(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Return a converter that can expand the property references within a stringstatic Converter<java.lang.String,java.lang.String>
replaceDataReferencesConverter(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Return a converter that can expand the property references within a stringstatic java.lang.String[]
replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.lang.String[]
replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.lang.String[]
replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.lang.String
replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.lang.String
replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.lang.String
replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded, boolean blankIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data contextstatic java.io.File
replaceTokensInScript(java.lang.String script, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext, Framework framework, ScriptfileUtils.LineEndingStyle style, java.io.File destination)
Copies the source file to a file, replacing the @key.X@ tokens with the values from the data contextstatic java.io.File
replaceTokensInStream(java.io.InputStream stream, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext, Framework framework, ScriptfileUtils.LineEndingStyle style, java.io.File destination)
Copies the source stream to a temp file or specific destination, replacing the @key.X@ tokens with the values from the data contextstatic java.lang.String
resolve(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, java.lang.String group, java.lang.String key)
Return the resolved value from the contextstatic java.lang.String
resolve(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, java.lang.String group, java.lang.String key, java.lang.String defaultValue)
Return the resolved value from the context
-
-
-
Field Detail
-
ENV_VAR_PREFIX
public static final java.lang.String ENV_VAR_PREFIX
Prefix string used for all environment variable names- See Also:
- Constant Field Values
-
stringContainsPropertyReferencePredicate
public static final java.util.function.Predicate<java.lang.String> stringContainsPropertyReferencePredicate
evaluates to true if a string contains a property reference
-
replaceMissingOptionsWithBlank
public static final Converter<java.lang.String,java.lang.String> replaceMissingOptionsWithBlank
A converter which replaces '${option.*}' with blank when replacing data references
-
-
Method Detail
-
hasOptionsInString
public static boolean hasOptionsInString(java.lang.String evalString)
-
flattenDataContext
public static java.util.Map<java.lang.String,java.lang.String> flattenDataContext(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
- Parameters:
dataContext
- data- Returns:
- Flattens the data context into a simple key/value pair, using a "." separator for keys.
-
replaceTokensInScript
public static java.io.File replaceTokensInScript(java.lang.String script, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext, Framework framework, ScriptfileUtils.LineEndingStyle style, java.io.File destination) throws java.io.IOException
Copies the source file to a file, replacing the @key.X@ tokens with the values from the data context- Parameters:
script
- source file pathdataContext
- input data contextframework
- the frameworkstyle
- line ending styledestination
- destination file, or null to create a temp file- Returns:
- the token replaced temp file, or null if an error occurs.
- Throws:
java.io.IOException
- on io error
-
replaceTokensInStream
public static java.io.File replaceTokensInStream(java.io.InputStream stream, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext, Framework framework, ScriptfileUtils.LineEndingStyle style, java.io.File destination) throws java.io.IOException
Copies the source stream to a temp file or specific destination, replacing the @key.X@ tokens with the values from the data context- Parameters:
stream
- source streamdataContext
- input data contextframework
- the frameworkstyle
- script file line ending style to usedestination
- destination file- Returns:
- the token replaced temp file, or null if an error occurs.
- Throws:
java.io.IOException
- on io error
-
replaceDataReferences
public static java.util.Map<java.lang.String,java.lang.Object> replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Recursively replace data references in the values in a map which contains either string, collection or Map values.- Parameters:
input
- input mapdata
- context data- Returns:
- Map with all string values having references replaced
-
replaceDataReferences
public static java.util.Map<java.lang.String,java.lang.Object> replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded)
Recursively replace data references in the values in a map which contains either string, collection or Map values.- Parameters:
input
- input mapdata
- context data- Returns:
- Map with all string values having references replaced
-
replaceDataReferences
public static java.util.Map<java.lang.String,java.lang.Object> replaceDataReferences(java.util.Map<java.lang.String,java.lang.Object> input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded, java.util.function.BiFunction<java.lang.String,java.lang.Object,java.lang.Object> inputConverter, java.util.function.BiFunction<java.lang.String,java.lang.Object,java.lang.Object> outputConverter)
Recursively replace data references in the values in a map which contains either string, collection or Map values.- Parameters:
input
- input mapdata
- context dataconverter
- converter to encode/convert the expanded valuesfailIfUnexpanded
- true to fail if a reference is not foundblankIfUnexpanded
- true to use blank if a reference is not foundinputConverter
- converter to apply to input values before replacing referencesoutputConverter
- converter to apply to output values after replacing references- Returns:
- Map with all string values having references replaced
-
replaceDataReferencesInString
public static java.lang.String replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context map- Returns:
- string with values substituted, or original string
-
replaceDataReferences
public static java.lang.String replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Deprecated.Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context map- Returns:
- string with values substituted, or original string
-
replaceDataReferencesInString
public static java.lang.String replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context mapconverter
- converter to encode/convert the expanded valuesfailOnUnexpanded
- true to fail if a reference is not found- Returns:
- string with values substituted, or original string
-
replaceDataReferences
public static java.lang.String replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Deprecated.Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context mapconverter
- converter to encode/convert the expanded valuesfailOnUnexpanded
- true to fail if a reference is not found- Returns:
- string with values substituted, or original string
-
replaceDataReferencesConverter
public static Converter<java.lang.String,java.lang.String> replaceDataReferencesConverter(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded)
Return a converter that can expand the property references within a string- Parameters:
data
- property context dataconverter
- secondary converter to apply to property values before replacing in a stringfailOnUnexpanded
- if true, fail if a property value cannot be expanded- Returns:
- a Converter to expand property values within a string
-
replaceDataReferencesConverter
public static Converter<java.lang.String,java.lang.String> replaceDataReferencesConverter(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Return a converter that can expand the property references within a string- Parameters:
data
- property context data- Returns:
- a Converter to expand property values within a string
-
replaceDataReferencesInArray
public static java.lang.String[] replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
args
- argument string arraydata
- data contextconverter
- converterfailIfUnexpanded
- true to fail if property is not found- Returns:
- string array with replaced embedded properties
-
replaceDataReferencesInArray
public static java.lang.String[] replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failIfUnexpanded, boolean blankIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
args
- argument string arraydata
- data contextconverter
- converterfailIfUnexpanded
- true to fail if property is not foundblankIfUnexpanded
- true to use blank if property is not found- Returns:
- string array with replaced embedded properties
-
replaceDataReferencesInArray
public static java.lang.String[] replaceDataReferencesInArray(java.lang.String[] args, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
args
- argument string arraydata
- data context- Returns:
- string array with replaced embedded properties
-
merge
public static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> merge(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> targetContext, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> newContext)
Merge one context onto another by adding or replacing values in a new map- Parameters:
targetContext
- the target of the mergenewContext
- context to merge- Returns:
- merged data in a new map
-
replaceDataReferences
public static java.lang.String replaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded, boolean blankIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context mapconverter
- converter to encode/convert the expanded valuesfailOnUnexpanded
- true to fail if a reference is not foundblankIfUnexpanded
- true to use blank if a reference is not found- Returns:
- string with values substituted, or original string
-
replaceDataReferencesInString
public static java.lang.String replaceDataReferencesInString(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, Converter<java.lang.String,java.lang.String> converter, boolean failOnUnexpanded, boolean blankIfUnexpanded)
Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context- Parameters:
input
- input stringdata
- data context mapconverter
- converter to encode/convert the expanded valuesfailOnUnexpanded
- true to fail if a reference is not foundblankIfUnexpanded
- true to use blank if a reference is not found- Returns:
- string with values substituted, or original string
-
addContext
public static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> addContext(java.lang.String key, java.util.Map<java.lang.String,java.lang.String> data, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> context)
Return a new context with appended data set- Parameters:
key
- data keydata
- data contentcontext
- original context- Returns:
- new context containing original data and the new dataset
-
generateEnvVarsFromData
public static java.util.Map<java.lang.String,java.lang.String> generateEnvVarsFromData(java.util.Map<java.lang.String,java.lang.String> options, java.lang.String prefix)
Convert option keys into environment variable names. Convert to uppercase and prepend "RD_"- Parameters:
options
- the input optionsprefix
- prefix- Returns:
- map of environment variable names to values, or null if options was null
-
addEnvVars
public static void addEnvVars(DataContextUtils.EnvironmentConfigurable sshexecTask, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
add Env elements to pass environment variables to the ExtSSHExec- Parameters:
sshexecTask
- taskdataContext
- data
-
generateEnvVarsFromContext
public static java.util.Map<java.lang.String,java.lang.String> generateEnvVarsFromContext(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
- Parameters:
dataContext
- data- Returns:
- Generate a set of key value pairs to use for environment variables, from the context data set
-
generateEnvVarName
public static java.lang.String generateEnvVarName(java.lang.String key)
Generate environment variable name from option name- Parameters:
key
- key- Returns:
- env var name
-
nodeData
public static java.util.Map<java.lang.String,java.lang.String> nodeData(INodeEntry nodeentry)
Generate a dataset for a INodeEntry- Parameters:
nodeentry
- node- Returns:
- dataset
-
join
public static java.lang.String join(java.util.Collection<java.lang.String> list, java.lang.String separator)
Join a list of strings into a single string with a separator- Parameters:
list
- stringsseparator
- separator- Returns:
- joined string
-
addEnvVarsFromContextForExec
public static void addEnvVarsFromContextForExec(org.apache.tools.ant.taskdefs.ExecTask execTask, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> dataContext)
Add embedded env elements for any included context data for the script- Parameters:
dataContext
- dataexecTask
- execTask
-
resolve
public static java.lang.String resolve(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, java.lang.String group, java.lang.String key)
Return the resolved value from the context- Parameters:
data
- data contextgroup
- group namekey
- key name- Returns:
- resolved value or null
-
resolve
public static java.lang.String resolve(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data, java.lang.String group, java.lang.String key, java.lang.String defaultValue)
Return the resolved value from the context- Parameters:
data
- data contextgroup
- group namekey
- key namedefaultValue
- default if the value is not resolvable- Returns:
- resolved value or default
-
context
public static MutableDataContext context()
- Returns:
- A new context
-
context
public static MutableDataContext context(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)
- Returns:
- A new context
-
context
public static MutableDataContext context(java.lang.String key, java.util.Map<java.lang.String,java.lang.String> data)
-
-