/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed 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. */ package com.vaadin.annotations; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import com.vaadin.server.Constants; import com.vaadin.server.DefaultDeploymentConfiguration; import com.vaadin.server.DeploymentConfiguration; import com.vaadin.server.VaadinServlet; import com.vaadin.server.VaadinSession; import com.vaadin.ui.UI; /** * Annotation for configuring subclasses of {@link VaadinServlet}. For a * {@link VaadinServlet} class that has this annotation, the defined values are * read during initialization and will be available using * {@link DeploymentConfiguration#getApplicationOrSystemProperty(String, String)} * as well as from specific methods in {@link DeploymentConfiguration}. Init * params defined in <code>web.xml</code> or the <code>@WebServlet</code> * annotation take precedence over values defined in this annotation. * * @since 7.1 * @author Vaadin Ltd */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface VaadinServletConfiguration { /** * Defines the init parameter name for methods in * {@link VaadinServletConfiguration}. * * @since 7.1 * @author Vaadin Ltd */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Documented public @interface InitParameterName { /** * The name of the init parameter that the annotated method controls. * * @return the parameter name */ public String value(); } /** * Whether Vaadin is in production mode. * * @return true if in production mode, false otherwise. * * @see DeploymentConfiguration#isProductionMode() */ @InitParameterName(Constants.SERVLET_PARAMETER_PRODUCTION_MODE) public boolean productionMode(); /** * Gets the default UI class to use for the servlet. * * @return the default UI class */ @InitParameterName(VaadinSession.UI_PARAMETER) public Class<? extends UI> ui(); /** * The time resources can be cached in the browser, in seconds. The default * value is 3600 seconds, i.e. one hour. * * @return the resource cache time * * @see DeploymentConfiguration#getResourceCacheTime() */ @InitParameterName(Constants.SERVLET_PARAMETER_RESOURCE_CACHE_TIME) public int resourceCacheTime() default DefaultDeploymentConfiguration.DEFAULT_RESOURCE_CACHE_TIME; /** * The number of seconds between heartbeat requests of a UI, or a * non-positive number if heartbeat is disabled. The default value is 300 * seconds, i.e. 5 minutes. * * @return the time between heartbeats * * @see DeploymentConfiguration#getHeartbeatInterval() */ @InitParameterName(Constants.SERVLET_PARAMETER_HEARTBEAT_INTERVAL) public int heartbeatInterval() default DefaultDeploymentConfiguration.DEFAULT_HEARTBEAT_INTERVAL; /** * Whether a session should be closed when all its open UIs have been idle * for longer than its configured maximum inactivity time. The default value * is <code>false</code>. * * @return true if UIs and sessions receiving only heartbeat requests are * eventually closed; false if heartbeat requests extend UI and * session lifetime indefinitely * * @see DeploymentConfiguration#isCloseIdleSessions() */ @InitParameterName(Constants.SERVLET_PARAMETER_CLOSE_IDLE_SESSIONS) public boolean closeIdleSessions() default DefaultDeploymentConfiguration.DEFAULT_CLOSE_IDLE_SESSIONS; /** * The default widgetset to use for the servlet. The default value is * <code>""</code>, which will cause * <code>com.vaadin.DefaultWidgetSet</code> to be used unless overridden by * an init parameter or unless an automatically generated * <code>AppWidgetset</code> is used. * * @return the default widgetset name */ @InitParameterName(VaadinServlet.PARAMETER_WIDGETSET) public String widgetset() default ""; }