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 interfaceDataContextUtils.EnvironmentConfigurableCan be configured with environment variablesstatic classDataContextUtils.UnresolvedDataReferenceExceptionIndicates that the value of a property reference could not be resolved.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringENV_VAR_PREFIXPrefix string used for all environment variable namesstatic Converter<java.lang.String,java.lang.String>replaceMissingOptionsWithBlankA converter which replaces '${option.*}' with blank when replacing data referencesstatic java.util.function.Predicate<java.lang.String>stringContainsPropertyReferencePredicateevaluates 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 voidaddEnvVars(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 voidaddEnvVarsFromContextForExec(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 MutableDataContextcontext()static MutableDataContextcontext(java.lang.String key, java.util.Map<java.lang.String,java.lang.String> data)static MutableDataContextcontext(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.StringgenerateEnvVarName(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 booleanhasOptionsInString(java.lang.String evalString)static java.lang.Stringjoin(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.StringreplaceDataReferences(java.lang.String input, java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> data)Deprecated.static java.lang.StringreplaceDataReferences(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.StringreplaceDataReferences(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.StringreplaceDataReferencesInString(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.StringreplaceDataReferencesInString(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.StringreplaceDataReferencesInString(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.FilereplaceTokensInScript(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.FilereplaceTokensInStream(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.Stringresolve(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.Stringresolve(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.IOExceptionCopies 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.IOExceptionCopies 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)
-
-