Package org.apache.wiki.variables

## Interface VariableManager

All Known Implementing Classes:
  `DefaultVariableManager`

    public interface VariableManager

Manages variables. Variables are case-insensitive. A list of all available variables is on a Wiki page called "WikiVariables".

Since:
  1.9.20.

### Field Summary

Fields
`static java.lang.String` `VAR_ERROR`
`static java.lang.String` `VAR_MSG`
`static java.lang.String` `VAR_RUNFILTERS` If this variable is set to false, all filters are disabled when translating.

### Method Summary

All Methods Instance Methods Abstract Methods
`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.

### Field Detail

#### VAR_ERROR

    static final java.lang.String VAR_ERROR

See Also:
  Constant Field Values

#### VAR_MSG

    static final java.lang.String VAR_MSG

See Also:
  Constant Field Values

#### VAR_RUNFILTERS

    static final java.lang.String VAR_RUNFILTERS

If this variable is set to false, all filters are disabled when translating.

See Also:
  Constant Field Values

### Method Detail

#### parseAndGetValue

    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".

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

    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.

Parameters:
  `context` - The WikiContext of the current page.
  `source` - The source string.
Returns:
  The source string with variables expanded.

#### getValue

    java.lang.String getValue​(Context context,
                              java.lang.String varName,
                              java.lang.String defValue)

Returns the value of a named variable. See `getValue(Context, String)`. The only difference is that this method does not throw an exception, but it returns the given default value instead.

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

    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.

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.
Since:
  2.2 on Engine, moved to VariableManager on 2.11.0

#### getValue

    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.

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.