| 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.<scope_name> = 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.<scope_name> = 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; |
| } |