/*
* Copyright 2011 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.terminal;
import java.io.Serializable;
import java.util.Iterator;
import java.util.Properties;
import javax.portlet.PortletContext;
import javax.servlet.ServletContext;
import com.vaadin.terminal.gwt.server.AddonContext;
import com.vaadin.terminal.gwt.server.AddonContextListener;
/**
* Provide deployment specific settings that are required outside terminal
* specific code.
*
* @author Vaadin Ltd.
*
* @since 7.0
*/
public interface DeploymentConfiguration extends Serializable {
/**
* Gets the base URL of the location of Vaadin's static files.
*
* @param request
* the request for which the location should be determined
*
* @return a string with the base URL for static files
*/
public String getStaticFileLocation(WrappedRequest request);
/**
* Gets the widgetset that is configured for this deployment, e.g. from a
* parameter in web.xml.
*
* @param request
* the request for which a widgetset is required
* @return the name of the widgetset
*/
public String getConfiguredWidgetset(WrappedRequest request);
/**
* Gets the theme that is configured for this deployment, e.g. from a portal
* parameter or just some sensible default value.
*
* @param request
* the request for which a theme is required
* @return the name of the theme
*/
public String getConfiguredTheme(WrappedRequest request);
/**
* Checks whether the Vaadin application will be rendered on its own in the
* browser or whether it will be included into some other context. A
* standalone application may do things that might interfere with other
* parts of a page, e.g. changing the page title and requesting focus upon
* loading.
*
* @param request
* the request for which the application is loaded
* @return a boolean indicating whether the application should be standalone
*/
public boolean isStandalone(WrappedRequest request);
/**
* Gets a configured property. The properties are typically read from e.g.
* web.xml or from system properties of the JVM.
*
* @param propertyName
* The simple of the property, in some contexts, lookup might be
* performed using variations of the provided name.
* @param defaultValue
* the default value that should be used if no value has been
* defined
* @return the property value, or the passed default value if no property
* value is found
*/
public String getApplicationOrSystemProperty(String propertyName,
String defaultValue);
/**
* Get the class loader to use for loading classes loaded by name, e.g.
* custom UI classes. null
indicates that the default class
* loader should be used.
*
* @return the class loader to use, or null
*/
public ClassLoader getClassLoader();
/**
* Returns the MIME type of the specified file, or null if the MIME type is
* not known. The MIME type is determined by the configuration of the
* container, and may be specified in a deployment descriptor. Common MIME
* types are "text/html" and "image/gif".
*
* @param resourceName
* a String specifying the name of a file
* @return a String specifying the file's MIME type
*
* @see ServletContext#getMimeType(String)
* @see PortletContext#getMimeType(String)
*/
public String getMimeType(String resourceName);
/**
* Gets the properties configured for the deployment, e.g. as init
* parameters to the servlet or portlet.
*
* @return properties for the application.
*/
public Properties getInitParameters();
public Iterator getAddonContextListeners();
public AddonContext getAddonContext();
public void setAddonContext(AddonContext vaadinContext);
/**
* Returns whether Vaadin is in production mode.
*
* @return true if in production mode, false otherwise.
*/
public boolean isProductionMode();
/**
* Returns whether cross-site request forgery protection is enabled.
*
* @return true if XSRF protection is enabled, false otherwise.
*/
public boolean isXsrfProtectionEnabled();
/**
* Returns the time resources can be cached in the browsers, in seconds.
*
* @return The resource cache time.
*/
public int getResourceCacheTime();
}