package org.apache.velocity.runtime;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/**
 * This class defines the keys that are used in the velocity.properties file so that they can be referenced as a constant within
 * Java code.
 *
 * @author  <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
 * @author  <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
 * @author  <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
 * @version  $Id$
 */

public interface RuntimeConstants extends DeprecatedRuntimeConstants
{
    /*
     * ----------------------------------------------------------------------
     * These are public constants that are used as handles for the
     * properties that can be specified in your typical
     * velocity.properties file.
     * ----------------------------------------------------------------------
     */

    /*
     * ----------------------------------------------------------------------
     * L O G G I N G  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /** externally provided logger. */
    String RUNTIME_LOG_INSTANCE = "runtime.log.instance";

    /** externally provided logger name. */
    String RUNTIME_LOG_NAME = "runtime.log.name";

    /** Logging of invalid references. */
    String RUNTIME_LOG_REFERENCE_LOG_INVALID = "runtime.log.log_invalid_references";

    /** Logging of invalid method calls. */
    String RUNTIME_LOG_METHOD_CALL_LOG_INVALID = "runtime.log.log_invalid_method_calls";

    /** Whether to populate slf4j's MDC with location in template file
     *  @since 2.2
     */
    String RUNTIME_LOG_TRACK_LOCATION = "runtime.log.track_location";
    
    /*
     * ----------------------------------------------------------------------
     * D I R E C T I V E  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     * Directive properties are of the form:
     *
     * directive.<directive-name>.<property>
     * ----------------------------------------------------------------------
     */

    /** Maximum allowed number of loops. */
    String MAX_NUMBER_LOOPS = "directive.foreach.max_loops";

    /**
     * Whether to throw an exception or just skip bad iterables. Default is true.
     * @since 1.6
     */
    String SKIP_INVALID_ITERATOR = "directive.foreach.skip_invalid";

    /**
     * An empty object (string, collection) or zero number is false.
     * @since 2.0
     */
    String CHECK_EMPTY_OBJECTS = "directive.if.empty_check";
    
    /**
     * Starting tag for error messages triggered by passing a parameter not allowed in the #include directive. Only string literals,
     * and references are allowed.
     * @deprecated if/how errors are displayed is not the concern of the engine, which should throw in all cases
     */
    String ERRORMSG_START = "directive.include.output_error_start";

    /**
     * Ending tag for error messages triggered by passing a parameter not allowed in the #include directive. Only string literals,
     * and references are allowed.
     * @deprecated if/how errors are displayed is not the concern of the engine, which should throw in all cases
     */
    String ERRORMSG_END = "directive.include.output_error_end";

    /** Maximum recursion depth allowed for the #parse directive. */
    String PARSE_DIRECTIVE_MAXDEPTH = "directive.parse.max_depth";

    /** Maximum recursion depth allowed for the #define directive. */
    String DEFINE_DIRECTIVE_MAXDEPTH = "directive.define.max_depth";

    /**
     * Used to suppress various scope control objects (property suffix).
     * @since 1.7
     * @deprecated use <code>context.scope_control.&lt;scope_name&gt; = true/false</code>
     * @see #CONTEXT_SCOPE_CONTROL
     */
    @Deprecated
    String PROVIDE_SCOPE_CONTROL = "provide.scope.control";

    /**
     * Used to enable or disable a scope control (false by default):
     * <code>context.scope_control.&lt;scope_name&gt; = true/false</code>
     * where <i>scope_name</i> is one of: <code>template, evaluate, foreach, macro, define</code>
     * or the name of a body macro.
     * @since 2.1
     */
    String CONTEXT_SCOPE_CONTROL = "context.scope_control";

    /**
     * Vector of custom directives
     */
    String CUSTOM_DIRECTIVES = "runtime.custom_directives";

    /*
     * ----------------------------------------------------------------------
     *  R E S O U R C E   M A N A G E R   C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /**
     * The <code>resource.manager.instance</code> property specifies an existing instance of a
     * {@link org.apache.velocity.runtime.resource.ResourceManager} implementation to use
     */
    String RESOURCE_MANAGER_INSTANCE = "resource.manager.instance";

    /**
    * The <code>resource.manager.class</code> property specifies the name of the
    * {@link org.apache.velocity.runtime.resource.ResourceManager} implementation to use.
    */
    String RESOURCE_MANAGER_CLASS = "resource.manager.class";

    /**
     * The <code>resource.manager.cache.class</code> property specifies the name of the
     * {@link org.apache.velocity.runtime.resource.ResourceCache} implementation to use.
     */
    String RESOURCE_MANAGER_CACHE_CLASS = "resource.manager.cache.class";

    /** The <code>resource.manager.cache.size</code> property specifies the cache upper bound (if relevant). */
    String RESOURCE_MANAGER_DEFAULTCACHE_SIZE = "resource.manager.cache.default_size";

    /*
     * ----------------------------------------------------------------------
     * R E S O U R C E  L O A D E R  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /** controls if the finding of a resource is logged. */
    String RESOURCE_MANAGER_LOGWHENFOUND = "resource.manager.log_when_found";

    /**
     * Key used to retrieve the names of the resource loaders to be used. In a properties file they may appear as the following:
     *
     * <p>resource.loaders = file,classpath</p>
     */
    String RESOURCE_LOADERS = "resource.loaders";

    /**
     * Key prefix for a specific resource loader properties
     *
     * <p>resource.loader.file.path = ...</p>
     */
    String RESOURCE_LOADER = "resource.loader";

    /** The public handle for setting paths in the FileResourceLoader.
     * (this constant is used by test cases only)
     */
    String FILE_RESOURCE_LOADER_PATH = "resource.loader.file.path";

    /** The public handle for turning the caching on in the FileResourceLoader. */
    String FILE_RESOURCE_LOADER_CACHE = "resource.loader.file.cache";

    /**
     * Resource loader class property suffix
     */
    String RESOURCE_LOADER_CLASS = "class";

    /**
     * Resource loader instance property suffix
     */
    String RESOURCE_LOADER_INSTANCE = "instance";

    /**
     * Resource loader cache property suffix
     */
    String RESOURCE_LOADER_CACHE = "cache";

    /**
     * File resource loader paths property suffix
     */
    String RESOURCE_LOADER_PATHS = "path";

    /**
     * Resource loader modification check interval property suffix
     */
    String RESOURCE_LOADER_CHECK_INTERVAL = "modification_check_interval";

    /**
     * Datasource loader datasource url
     */
    String DS_RESOURCE_LOADER_DATASOURCE = "resource.loader.ds.resource.datasource_url";

    /**
     * Datasource loader templates table
     */
    String DS_RESOURCE_LOADER_TABLE = "resource.loader.ds.resource.table";

    /**
     * Datasource loader template key column
     */
    String DS_RESOURCE_LOADER_KEY_COLUMN = "resource.loader.ds.resource.key_column";

    /**
     * Datasource loader template content column
     */
    String DS_RESOURCE_LOADER_TEMPLATE_COLUMN = "resource.loader.ds.resource.template_column";

    /**
     * Datasource loader template timestamp column
     */
    String DS_RESOURCE_LOADER_TIMESTAMP_COLUMN = "resource.loader.ds.resource.timestamp_column";

    /** The default character encoding for the templates. Used by the parser in processing the input streams. */
    String INPUT_ENCODING = "resource.default_encoding";

    /** Default Encoding is UTF-8. */
    String ENCODING_DEFAULT = "UTF-8";

    /*
     * ----------------------------------------------------------------------
     *  E V E N T  H A N D L E R  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /**
     * The <code>event_handler.reference_insertion.class</code> property specifies a list of the
     * {@link org.apache.velocity.app.event.ReferenceInsertionEventHandler} implementations to use.
     */
    String EVENTHANDLER_REFERENCEINSERTION = "event_handler.reference_insertion.class";

    /**
     * The <code>event_handler.method_exception.class</code> property specifies a list of the
     * {@link org.apache.velocity.app.event.MethodExceptionEventHandler} implementations to use.
     */
    String EVENTHANDLER_METHODEXCEPTION = "event_handler.method_exception.class";

    /**
     * The <code>event_handler.include.class</code> property specifies a list of the
     * {@link org.apache.velocity.app.event.IncludeEventHandler} implementations to use.
     */
    String EVENTHANDLER_INCLUDE = "event_handler.include.class";

    /**
     * The <code>event_handler.invalid_references.class</code> property specifies a list of the
     * {@link org.apache.velocity.app.event.InvalidReferenceEventHandler} implementations to use.
     */
    String EVENTHANDLER_INVALIDREFERENCES = "event_handler.invalid_references.class";

    /**
     * The <code>event_handler.invalid_references.quiet</code> property specifies if invalid quiet references
     * (as in <code>$!foo</code>) trigger events (defaults to false).
     * {@link org.apache.velocity.app.event.InvalidReferenceEventHandler} implementations to use.
     * @since 2.2
     */
    String EVENTHANDLER_INVALIDREFERENCES_QUIET = "event_handler.invalid_references.quiet";

    /**
     * The <code>event_handler.invalid_references.null</code> property specifies if invalid null references
     * (aka the value is present in the context or parent object but is null or a method returned null)
     * trigger invalid reference events (defaults to false).
     * {@link org.apache.velocity.app.event.InvalidReferenceEventHandler} implementations to use.
     * @since 2.2
     */
    String EVENTHANDLER_INVALIDREFERENCES_NULL = "event_handler.invalid_references.null";

    /**
     * The <code>event_handler.invalid_references.tested</code> property specifies if invalid tested references
     * (as in <code>#if($foo)</code> ) trigger invalid reference events (defaults to false).
     * {@link org.apache.velocity.app.event.InvalidReferenceEventHandler} implementations to use.
     * @since 2.2
     */
    String EVENTHANDLER_INVALIDREFERENCES_TESTED = "event_handler.invalid_references.tested";

    /*
     * ----------------------------------------------------------------------
     * V E L O C I M A C R O  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /** Filename of local Velocimacro library template. */
    String VM_LIBRARY = "velocimacro.library.path";

    /** Default Velocimacro library template. */
    String VM_LIBRARY_DEFAULT = "velocimacros.vtl";

    /** switch for autoloading library-sourced VMs (for development). */
    String VM_LIBRARY_AUTORELOAD = "velocimacro.library.autoreload";

    /** boolean (true/false) default true: allow inline (in-template) macro definitions. */
    String VM_PERM_ALLOW_INLINE = "velocimacro.inline.allow";

    /** boolean (true/false) default false: allow inline (in-template) macro definitions to replace existing. */
    String VM_PERM_ALLOW_INLINE_REPLACE_GLOBAL = "velocimacro.inline.replace_global";

    /** Switch for forcing inline macros to be local: default false. */
    String VM_PERM_INLINE_LOCAL = "velocimacro.inline.local_scope";

    /** if true, throw an exception for wrong number of arguments **/
    String VM_ARGUMENTS_STRICT = "velocimacro.arguments.strict";

    /**
     * When displaying null or invalid non-quiet references, use the argument literal reference
     * instead of the one in the macro block. Defaults to false.
     * @since 2.1
     **/
    String VM_PRESERVE_ARGUMENTS_LITERALS = "velocimacro.arguments.preserve_literals";

    /**
     * Specify the maximum depth for macro calls
     * @since 1.6
     */
    String VM_MAX_DEPTH = "velocimacro.max_depth";

    /**
     * Defines name of the reference that can be used to get the AST block passed to block macro calls.
     * @since 1.7
     */
    String VM_BODY_REFERENCE = "velocimacro.body_reference";

    /**
     * <p>Switch for VM blather: default true. Unused since 2.0.</p>
     * @deprecated since 2.1
     */
    @Deprecated
    String VM_MESSAGES_ON = "velocimacro.messages.on";

    /*
     * ----------------------------------------------------------------------
     * S T I C T   M O D E  B E H A V I O U R
     * ----------------------------------------------------------------------
     */

    /**
     * Properties referenced in the template are required to exist the object
     */
    String RUNTIME_REFERENCES_STRICT = "runtime.strict_mode.enable";

    /**
     * Indicates we are going to use modified escape behavior in strict mode
     */
    String RUNTIME_REFERENCES_STRICT_ESCAPE = "runtime.strict_mode.escape";

    /*
     * ----------------------------------------------------------------------
     * I N T R O S P E C T I O N  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /** key name for uberspector. Multiple classnames can be specified,in which case uberspectors will be chained. */
    String UBERSPECT_CLASSNAME = "introspector.uberspect.class";

    /** A comma separated list of packages to restrict access to in the SecureIntrospector. */
    String INTROSPECTOR_RESTRICT_PACKAGES = "introspector.restrict.packages";

    /** A comma separated list of classes to restrict access to in the SecureIntrospector. */
    String INTROSPECTOR_RESTRICT_CLASSES = "introspector.restrict.classes";

    /** key for Conversion Manager class */
    String CONVERSION_HANDLER_CLASS = "introspector.conversion_handler.class";

    /** key for Conversion Manager instance */
    String CONVERSION_HANDLER_INSTANCE = "introspector.conversion_handler.instance";

    /*
     * ----------------------------------------------------------------------
     * G E N E R A L  R U N T I M E  C O N F I G U R A T I O N
     * ----------------------------------------------------------------------
     */

    /** Whether to use string interning. */
    String RUNTIME_STRING_INTERNING = "runtime.string_interning";
    
    /** Switch for the interpolation facility for string literals. */
    String INTERPOLATE_STRINGLITERALS = "runtime.interpolate_string_literals";

    /** Switch for ignoring nulls in math equations vs throwing exceptions. */
    String STRICT_MATH = "runtime.strict_math";

    /** Key upon which a context should be accessible within itself */
    String CONTEXT_AUTOREFERENCE_KEY = "context.self_reference_key";

    /**
     * The <code>parser.pool.class</code> property specifies the name of the {@link org.apache.velocity.util.SimplePool}
     * implementation to use.
     */
    String PARSER_POOL_CLASS = "parser.pool.class";

    /**
     * @see  #NUMBER_OF_PARSERS
     */
    String PARSER_POOL_SIZE = "parser.pool.size";

    /**
     * Allow hyphen in identifiers (backward compatibility option)
     * @since 2.1
     */
    String PARSER_HYPHEN_ALLOWED = "parser.allow_hyphen_in_identifiers";

    /**
     * Space gobbling mode
     * @since 2.0
     */
    String SPACE_GOBBLING = "parser.space_gobbling";

    /**
     * Space gobbling modes
     * @since 2.0
     */
    enum SpaceGobbling
    {
        NONE, BC, LINES, STRUCTURED
    }

    /*
     * ----------------------------------------------------------------------
     * These constants are used internally by the Velocity runtime i.e.
     * the constants listed below are strictly used in the Runtime
     * class itself.
     * ----------------------------------------------------------------------
     */

    /** Default Runtime properties. */
    String DEFAULT_RUNTIME_PROPERTIES = "org/apache/velocity/runtime/defaults/velocity.properties";

    /** Default Runtime properties. */
    String DEFAULT_RUNTIME_DIRECTIVES = "org/apache/velocity/runtime/defaults/directive.properties";

    /** externally provided logger name. */
    String DEFAULT_RUNTIME_LOG_NAME = "org.apache.velocity";

    /** token used to identify the loader internally. */
    String RESOURCE_LOADER_IDENTIFIER = "_RESOURCE_LOADER_IDENTIFIER_";

    /**
     * The default number of parser instances to create. Configurable via the parameter named by the {@link #PARSER_POOL_SIZE}
     * constant.
     */
    int NUMBER_OF_PARSERS = 20;
}
