Class DataContextUtils


  • public class DataContextUtils
    extends java.lang.Object
    Since:
    5/9/17
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ENV_VAR_PREFIX
      Prefix string used for all environment variable names
      static Converter<java.lang.String,​java.lang.String> replaceMissingOptionsWithBlank
      A converter which replaces '${option.*}' with blank when replacing data references
      static java.util.function.Predicate<java.lang.String> stringContainsPropertyReferencePredicate
      evaluates to true if a string contains a property reference
    • 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 set
      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
      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
      static 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 name
      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)  
      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 separator
      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
      static java.util.Map<java.lang.String,​java.lang.String> nodeData​(INodeEntry nodeentry)
      Generate a dataset for a INodeEntry
      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)
      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)
      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 string
      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
      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
      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
      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
      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
      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
      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
      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)
      Copies the source file to a file, replacing the @key.X@ tokens with the values from the data context
      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)
      Copies the source stream to a temp file or specific destination, replacing the @key.X@ tokens with the values from the data context
      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
      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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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
    • Constructor Detail

      • DataContextUtils

        public DataContextUtils()
    • 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 path
        dataContext - input data context
        framework - the framework
        style - line ending style
        destination - 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 stream
        dataContext - input data context
        framework - the framework
        style - script file line ending style to use
        destination - 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 map
        data - 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 map
        data - 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 map
        data - context data
        converter - converter to encode/convert the expanded values
        failIfUnexpanded - true to fail if a reference is not found
        blankIfUnexpanded - true to use blank if a reference is not found
        inputConverter - converter to apply to input values before replacing references
        outputConverter - 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 string
        data - 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)
        Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context
        Parameters:
        input - input string
        data - 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 string
        data - data context map
        converter - converter to encode/convert the expanded values
        failOnUnexpanded - 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)
        Replace the embedded properties of the form '${key.name}' in the input Strings with the value from the data context
        Parameters:
        input - input string
        data - data context map
        converter - converter to encode/convert the expanded values
        failOnUnexpanded - 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 data
        converter - secondary converter to apply to property values before replacing in a string
        failOnUnexpanded - 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 array
        data - data context
        converter - converter
        failIfUnexpanded - 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 array
        data - data context
        converter - converter
        failIfUnexpanded - true to fail if property is not found
        blankIfUnexpanded - 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 array
        data - 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 merge
        newContext - 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 string
        data - data context map
        converter - converter to encode/convert the expanded values
        failOnUnexpanded - true to fail if a reference is not found
        blankIfUnexpanded - 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 string
        data - data context map
        converter - converter to encode/convert the expanded values
        failOnUnexpanded - true to fail if a reference is not found
        blankIfUnexpanded - 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 key
        data - data content
        context - 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 options
        prefix - 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 - task
        dataContext - 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 - strings
        separator - 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 - data
        execTask - 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 context
        group - group name
        key - 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 context
        group - group name
        key - key name
        defaultValue - default if the value is not resolvable
        Returns:
        resolved value or default
      • 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)