TemplateClassResolver (FreeMarker 2.3.35 API)
Description: declaration: package: freemarker.core, interface: TemplateClassResolver

Package 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
  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

  Modifier and Type
  Method
  Description
  `Class`
  `resolve​(String className, Environment env, Template template)`
  Gets a `Class` based on the class name.

- ## Field Details

  - ### 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 Details

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