freemarker.core

## Interface TemplateClassResolver

All Known Implementing Classes:
  OptInTemplateClassResolver

    public interface TemplateClassResolver

Used by built-ins and other template language features that get a class based on a string. This can be handy both for implementing security restrictions and for working around local class-loader issues. The implementation should be thread-safe, unless an instance is always only used in a single `Environment` object.

Since:
  2.3.17
See Also:
  `Configurable.setNewBuiltinClassResolver(TemplateClassResolver)`

### Field Summary

Fields
`static TemplateClassResolver` `ALLOWS_NOTHING_RESOLVER` Doesn't allow resolving any classes.
`static TemplateClassResolver` `SAFER_RESOLVER` Same as `UNRESTRICTED_RESOLVER`, except that it doesn't allow resolving `ObjectConstructor` and `Execute` and `freemarker.template.utility.JythonRuntime`.
`static TemplateClassResolver` `UNRESTRICTED_RESOLVER` Simply calls `ClassUtil.forName(String)`.

### Method Summary

All Methods Instance Methods Abstract Methods
`Class` `resolve(String className, Environment env, Template template)` Gets a `Class` based on the class name.

### Field Detail

#### UNRESTRICTED_RESOLVER

    static final TemplateClassResolver UNRESTRICTED_RESOLVER

Simply calls `ClassUtil.forName(String)`.

#### SAFER_RESOLVER

    static final TemplateClassResolver SAFER_RESOLVER

Same as `UNRESTRICTED_RESOLVER`, except that it doesn't allow resolving `ObjectConstructor` and `Execute` and `freemarker.template.utility.JythonRuntime`.

#### ALLOWS_NOTHING_RESOLVER

    static final TemplateClassResolver ALLOWS_NOTHING_RESOLVER

Doesn't allow resolving any classes.

### Method Detail

#### resolve

    Class resolve(String className,
                  Environment env,
                  Template template)
           throws TemplateException

Gets a `Class` based on the class name.

Parameters:
  `className` - the full-qualified class name
  `env` - the environment in which the template executes
  `template` - the template where the operation that require the class resolution resides in. This is `null` if the call doesn't come from a template.
Throws:
  `TemplateException` - if the class can't be found or shouldn't be accessed from a template for security reasons.