TemplateClassResolver (FreeMarker 2.3.23 API)
Date: 2015-07-05

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
    Modifier and Type | Field and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `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.