    001// Licensed under the Apache License, Version 2.0 (the "License");
    002// you may not use this file except in compliance with the License.
    003// You may obtain a copy of the License at
    004//
    005// http://www.apache.org/licenses/LICENSE-2.0
    006//
    007// Unless required by applicable law or agreed to in writing, software
    008// distributed under the License is distributed on an "AS IS" BASIS,
    009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    010// See the License for the specific language governing permissions and
    011// limitations under the License.
    012package org.apache.tapestry5.http;
    013
    014/**
    015 * Class defining constants for Tapestry HTTP symbols.
    016 */
    017final public class TapestryHttpSymbolConstants {
    018
    019    /**
    020     * The hostname that application should use when constructing an absolute URL. The default is "", i.e. an empty
    021     * string,
    022     * in which case system will use request.getServerName(). Not the same as environment variable HOSTNAME, but you can
    023     * also
    024     * contribute "$HOSTNAME" as the value to make it the same as the environment variable HOSTNAME.
    025     *
    026     * @since 5.3
    027     */
    028    public static final String HOSTNAME = "tapestry.hostname";
    029    /**
    030     * The hostport that application should use when constructing an absolute URL. The default is "0", i.e. use the port
    031     * value from
    032     * the request.
    033     *
    034     * @since 5.3
    035     */
    036    public static final String HOSTPORT = "tapestry.hostport";
    037    /**
    038     * The secure (https) hostport that application should use when constructing an absolute URL. The default is "0",
    039     * i.e. use
    040     * the value from the request.
    041     * This is an alias to {@link TapestryHttpSymbolConstants#HOSTPORT_SECURE}.
    042     *
    043     * @since 5.3
    044     */
    045    public static final String HOSTPORT_SECURE = "tapestry.hostport-secure";
    046    /**
    047     * If "true" then at the end of each request the
    048     * {@link org.apache.tapestry5.http.services.SessionPersistedObjectAnalyzer} will be called on each session persisted
    049     * object that was accessed during the request.
    050     *
    051     * This is provided as a performance enhancement for servers that do not use clustered sessions.
    052     *
    053     * The default is {@code true}, to preserve 5.2 behavior. For non-clustered applications (the majority), this value should be
    054     * overridden to {@code false}. A future release of Tapestry may change the default.
    055     *
    056     * @since 5.3
    057     */
    058    public static final String CLUSTERED_SESSIONS = "tapestry.clustered-sessions";
    059    /**
    060     * If true (the default), then Tapestry will apply locking semantics around access to the {@link javax.servlet.http.HttpSession}.
    061     * Reading attribute names occurs with a shared read lock; getting or setting an attribute upgrades to an exclusive write lock.
    062     * This can tend to serialize threads when a number of simultaneous (Ajax) requests from the client arrive ... however,
    063     * many implementations of HttpSession are not thread safe, and often mutable objects are stored in the session and shared
    064     * between threads. Leaving this on the default will yield a more robust application; setting it to false may speed
    065     * up processing for more Ajax intensive applications (but care should then be given to ensuring that objects shared inside
    066     * the session are themselves immutable or thread-safe).
    067     *
    068     * @since 5.4
    069     */
    070    public static final String SESSION_LOCKING_ENABLED = "tapestry.session-locking-enabled";
    071    /**
    072     * Version number of the application. Prior to 5.4, this version number was integrated into asset URLs. Starting
    073     * with 5.4, a checksum of the individual asset's content is used instead, and this version number is only used
    074     * for documentation purposes; it appears in the default exception report page, for example.
    075     *
    076     * The default value is "0.0.1".  In 5.3 and earlier, the default value was a random hexadecimal string.
    077     *
    078     * @since 5.1.0.0
    079     */
    080    public static final String APPLICATION_VERSION = "tapestry.application-version";
    081
    082    /**
    083     * Indicates whether Tapestry is running in production mode or developer mode. This affects a large
    084     * number of Tapestry behaviors related to performance and security, including how exceptions are
    085     * reported, whether far-future expire headers are emitted, whether JavaScript files may be combined,
    086     * whether JSON is compressed, whether component field and parameter values are shadowed to instance
    087     * variables (to assist with debugging), and more.
    088     */
    089    public static final String PRODUCTION_MODE = "tapestry.production-mode";
    090
    091    /**
    092     * The version number of the core Tapestry framework, or UNKNOWN if the version number is not available (which
    093     * should only occur when developing Tapestry).
    094     */
    095    public static final String TAPESTRY_VERSION = "tapestry.version";
    096
    097    /**
    098     * Identifies the context path of the application, as determined from {@link javax.servlet.ServletContext#getContextPath()}.
    099     * This is either a blank string or a string that starts with a slash but does not end with one.
    100     *
    101     * @since 5.4
    102     */
    103    public static final String CONTEXT_PATH = "tapestry.context-path";
    104    /**
    105     * A comma separated list of execution modes used to control how the application is initialized.
    106     * Each modes can contribute a list (comma separated) of Module classes to be loaded during startup,
    107     * the order in which they appear is preserved.
    108     * The default value is: <code>production</code>.
    109     */
    110    public static final String EXECUTION_MODE = "tapestry.execution-mode";
    111    /**
    112     * The charset used when rendering page markup; the charset is also used as the request encoding when handling
    113     * incoming requests. The default is "UTF-8".
    114     */
    115    public static final String CHARSET = "tapestry.charset";
    116    /**
    117     * Minimum output stream size, in bytes, before output is compressed using GZIP. Shorter streams are not compressed.
    118     * Tapestry buffers this amount and switches to a GZIP output stream as needed. The default is "100".
    119     *
    120     * @see #GZIP_COMPRESSION_ENABLED
    121     * @since 5.1.0.0
    122     */
    123    public static final String MIN_GZIP_SIZE = "tapestry.min-gzip-size";
    124    /**
    125     * If "true" (the default) then GZip compression is enabled for dynamic requests and for static assets. If you are
    126     * using a server that handles GZip compression for you, or you don't want to use the extra processing power
    127     * necessary to GZIP requests, then override this to "false".
    128     *
    129     * @see #MIN_GZIP_SIZE
    130     * @see org.apache.tapestry5.http.services.ResponseCompressionAnalyzer
    131     * @see org.apache.tapestry5.http.services.CompressionAnalyzer
    132     * @since 5.1.0.0
    133     */
    134    public static final String GZIP_COMPRESSION_ENABLED = "tapestry.gzip-compression-enabled";
    135
    136}