Class Var
- Direct Known Subclasses:
SimpleVar
,StreamedVar
Vars are used to convert simple variables of the form VarResolver
class.
Subclasses must implement one of the following two methods:
resolve(VarResolverSession,String)
- For simple vars.resolveTo(VarResolverSession,Writer,String)
- For streamed vars.
Subclasses MUST implement a no-arg constructor so that class names can be passed to the
VarResolver.Builder.vars(Class...)
method.
They must also be thread safe!
Two direct abstract subclasses are provided to differentiated between simple and streamed vars:
See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
Returns whether nested variables are supported by this variable.protected boolean
Returns whether variables in the resolved contents of this variable should also be resolved.protected boolean
canResolve
(VarResolverSession session) Returnstrue if this variable can be resolved in the specified session.protected String
doResolve
(VarResolverSession session, String arg) The method called fromVarResolver
.protected String
getName()
Return the name of this variable.abstract String
resolve
(VarResolverSession session, String arg) The interface that needs to be implemented for subclasses ofSimpleVar
.abstract void
resolveTo
(VarResolverSession session, Writer w, String arg) The interface that needs to be implemented for subclasses ofStreamedVar
.
-
Constructor Details
-
Var
Constructor.- Parameters:
name
- The name of this variable.streamed
- Whether this variable is 'streamed', meaning theresolveTo(VarResolverSession, Writer, String)
method is implemented. Iffalse , then theresolve(VarResolverSession, String)
method is implemented.
-
-
Method Details
-
getName
Return the name of this variable.For example, the system property variable returns
"S" since the format of the variable is"$S{system.property}" .- Returns:
- The name of this variable.
-
allowNested
Returns whether nested variables are supported by this variable.For example, in
"$X{$Y{xxx}}" , $Y is a nested variable that will be resolved if this method returnstrue .The default implementation of this method always returns
true . Subclasses can override this method to override the default behavior.- Returns:
true if nested variables are supported by this variable.
-
allowRecurse
Returns whether variables in the resolved contents of this variable should also be resolved.For example, if
"$X{xxx}" resolves to"$Y{xxx}" , then the $Y variable will be recursively resolved if this method returnstrue .The default implementation of this method always returns
true .
Subclasses can override this method to override the default behavior.As a general rule, variables that resolve user-entered data should not be recursively resolved as this may cause a security hole.- Returns:
true if resolved variables should be recursively resolved.
-
canResolve
Returnstrue if this variable can be resolved in the specified session.For example, some variable cannot resolve unless specific context or session objects are available.
- Parameters:
session
- The current session.- Returns:
true if this variable can be resolved in the specified session.
-
doResolve
The method called fromVarResolver
.Can be overridden to intercept the request and do special handling.
Default implementation simply calls resolve(String).- Parameters:
session
- The session object used for a single instance of a string resolution.arg
- The inside argument of the variable.- Returns:
- The resolved value.
- Throws:
Exception
- Any exception can be thrown.
-
resolve
The interface that needs to be implemented for subclasses ofSimpleVar
.- Parameters:
session
- The session object used for a single instance of a var resolution.arg
- The inside argument of the variable.- Returns:
- The resolved value.
- Throws:
Exception
- Any exception can be thrown.
-
resolveTo
The interface that needs to be implemented for subclasses ofStreamedVar
.- Parameters:
session
- The session object used for a single instance of a var resolution.w
- The writer to send the resolved value to.arg
- The inside argument of the variable.- Throws:
Exception
- Any exception can be thrown.
-