Class DefaultVariableManager

  • All Implemented Interfaces:
    VariableManager

    public class DefaultVariableManager
    extends java.lang.Object
    implements VariableManager
    Manages variables. Variables are case-insensitive. A list of all available variables is on a Wiki page called "WikiVariables".
    Since:
    1.9.20.
    • Constructor Summary

      Constructors 
      Constructor Description
      DefaultVariableManager​(java.util.Properties props)
      Creates a VariableManager object using the property list given.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String expandVariables​(Context context, java.lang.String source)
      This method does in-place expansion of any variables.
      java.lang.String getValue​(Context context, java.lang.String varName)
      Returns a value of the named variable.
      java.lang.String getValue​(Context context, java.lang.String varName, java.lang.String defValue)
      Returns the value of a named variable.
      java.lang.String getVariable​(Context context, java.lang.String name)
      Shortcut to getValue().
      java.lang.String parseAndGetValue​(Context context, java.lang.String link)
      Parses the link and finds a value.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DefaultVariableManager

        public DefaultVariableManager​(java.util.Properties props)
        Creates a VariableManager object using the property list given.
        Parameters:
        props - The properties.
    • Method Detail

      • parseAndGetValue

        public java.lang.String parseAndGetValue​(Context context,
                                                 java.lang.String link)
                                          throws java.lang.IllegalArgumentException,
                                                 NoSuchVariableException
        Parses the link and finds a value. This is essentially used once LinkParsingOperations#isVariableLink(String) has found that the link text actually contains a variable. For example, you could pass in "{$username}" and get back "JanneJalkanen".
        Specified by:
        parseAndGetValue in interface VariableManager
        Parameters:
        context - The WikiContext
        link - The link text containing the variable name.
        Returns:
        The variable value.
        Throws:
        java.lang.IllegalArgumentException - If the format is not valid (does not start with "{$", is zero length, etc.)
        NoSuchVariableException - If a variable is not known.
      • expandVariables

        public java.lang.String expandVariables​(Context context,
                                                java.lang.String source)
        This method does in-place expansion of any variables. However, the expansion is not done twice, that is, a variable containing text $variable will not be expanded.

        The variables should be in the same format ({$variablename} as in the web pages.

        Specified by:
        expandVariables in interface VariableManager
        Parameters:
        context - The WikiContext of the current page.
        source - The source string.
        Returns:
        The source string with variables expanded.
      • getValue

        public java.lang.String getValue​(Context context,
                                         java.lang.String varName,
                                         java.lang.String defValue)
        Returns the value of a named variable. See VariableManager.getValue(Context, String). The only difference is that this method does not throw an exception, but it returns the given default value instead.
        Specified by:
        getValue in interface VariableManager
        Parameters:
        context - WikiContext
        varName - The name of the variable
        defValue - A default value.
        Returns:
        The variable value, or if not found, the default value.
      • getVariable

        public java.lang.String getVariable​(Context context,
                                            java.lang.String name)
        Shortcut to getValue(). However, this method does not throw a NoSuchVariableException, but returns null in case the variable does not exist.
        Specified by:
        getVariable in interface VariableManager
        Parameters:
        context - WikiContext to look the variable in
        name - Name of the variable to look for
        Returns:
        Variable value, or null, if there is no such variable.
      • getValue

        public java.lang.String getValue​(Context context,
                                         java.lang.String varName)
                                  throws java.lang.IllegalArgumentException,
                                         NoSuchVariableException
        Returns a value of the named variable. The resolving order is
        1. Known "constant" name, such as "pagename", etc. This is so that pages could not override certain constants.
        2. WikiContext local variable. This allows a programmer to set a parameter which cannot be overridden by user.
        3. HTTP Session
        4. HTTP Request parameters
        5. WikiPage variable. As set by the user with the SET directive.
        6. jspwiki.properties
        Use this method only whenever you really need to have a parameter that can be overridden by anyone using the wiki.
        Specified by:
        getValue in interface VariableManager
        Parameters:
        context - The WikiContext
        varName - Name of the variable.
        Returns:
        The variable value.
        Throws:
        java.lang.IllegalArgumentException - If the name is somehow broken.
        NoSuchVariableException - If a variable is not known.