org.apache.wicket
Class Application

java.lang.Object
  extended by org.apache.wicket.Application
All Implemented Interfaces:
IEventSink, ISessionStore.UnboundListener
Direct Known Subclasses:
WebApplication

public abstract class Application
extends Object
implements ISessionStore.UnboundListener, IEventSink

Base class for all Wicket applications. To create a Wicket application, you generally should not directly subclass this class. Instead, you will want to subclass some subclass of Application, like WebApplication, which is appropriate for the protocol and markup type you are working with.

Application has the following interesting features / attributes:

Author:
Jonathan Locke
See Also:
WebApplication

Field Summary
static String CONFIGURATION
          Configuration constant for the 2 types
static String CONTEXTPATH
          Configuration type constant for getting the context path out of the web.xml
static String DEPLOYMENT
          Configuration type constant for deployment
static String DEVELOPMENT
          Configuration type constant for development
 
Constructor Summary
Application()
          Constructor.
 
Method Summary
 void configure()
          Configures application settings to good defaults.
 RequestCycle createRequestCycle(Request request, Response response)
           
static boolean exists()
          Checks if the Application threadlocal is set in this thread
 Session fetchCreateAndSetSession(RequestCycle requestCycle)
           
static Application get()
          Get Application for current thread.
static Application get(String applicationKey)
          Gets the Application based on the application key of that application.
abstract  String getApplicationKey()
          Gets the unique key of this application within a given context (like a web application).
static Set<String> getApplicationKeys()
          Gets the keys of the currently registered Wicket applications for this web application.
 IApplicationSettings getApplicationSettings()
           
 ComponentInitializationListenerCollection getComponentInitializationListeners()
           
 ComponentInstantiationListenerCollection getComponentInstantiationListeners()
           
 ComponentOnAfterRenderListenerCollection getComponentOnAfterRenderListeners()
           
 ComponentOnBeforeRenderListenerCollection getComponentPostOnBeforeRenderListeners()
           
 ComponentOnBeforeRenderListenerCollection getComponentPreOnBeforeRenderListeners()
           
abstract  String getConfigurationType()
          Gets the configuration mode to use for configuring the app, either DEVELOPMENT or DEPLOYMENT.
 IConverterLocator getConverterLocator()
           
 IDebugSettings getDebugSettings()
           
 IMapperContext getEncoderContext()
           
 IExceptionSettings getExceptionSettings()
           
 IFrameworkSettings getFrameworkSettings()
           
abstract  Class<? extends Page> getHomePage()
          Application subclasses must specify a home page class by implementing this abstract method.
 IMarkupSettings getMarkupSettings()
           
<T> T
getMetaData(MetaDataKey<T> key)
          Gets metadata for this application using the given key.
 String getMimeType(String fileName)
          Returns the mime type for given filename.
 String getName()
          Gets the name of this application.
 IPageFactory getPageFactory()
          Returns IPageFactory for this application.
 IPageManager getPageManager()
           
protected  IPageManagerContext getPageManagerContext()
           
 IPageManagerProvider getPageManagerProvider()
           
 IPageRendererProvider getPageRendererProvider()
           
 IPageSettings getPageSettings()
           
 RequestCycleListenerCollection getRequestCycleListeners()
           
 IRequestCycleProvider getRequestCycleProvider()
           
 IRequestCycleSettings getRequestCycleSettings()
           
 IRequestLogger getRequestLogger()
          Gets the IRequestLogger.
 IRequestLoggerSettings getRequestLoggerSettings()
           
 ResourceReferenceRegistry getResourceReferenceRegistry()
          Returns ResourceReferenceRegistry for this application.
 IResourceSettings getResourceSettings()
           
 IRequestMapper getRootRequestMapper()
           
 ICompoundRequestMapper getRootRequestMapperAsCompound()
          Converts the root mapper to a ICompoundRequestMapper if necessary and returns the converted instance.
 ISecuritySettings getSecuritySettings()
           
 ISessionSettings getSessionSettings()
           
 ISessionStore getSessionStore()
          Gets the facade object for working getting/ storing session instances.
 IProvider<ISessionStore> getSessionStoreProvider()
           
 SharedResources getSharedResources()
           
protected  void init()
          Allows for initialization of the application by a subclass.
 void initApplication()
          Initialize the application
 void initializeComponents()
          THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
 void internalDestroy()
          THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
protected  void internalInit()
          THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
 void logEventTarget(IRequestHandler target)
          THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
 void logResponseTarget(IRequestHandler requestTarget)
          THIS METHOD IS NOT PART OF THE WICKET PUBLIC API.
protected  IConverterLocator newConverterLocator()
          Creates and returns a new instance of IConverterLocator.
protected  IExceptionMapper newExceptionMapper()
           
protected  IPageFactory newPageFactory()
          Override to create custom IPageFactory
protected  IRequestLogger newRequestLogger()
          creates a new request logger when requests logging is enabled.
protected  ResourceReferenceRegistry newResourceReferenceRegistry()
          Override to create custom ResourceReferenceRegistry.
abstract  Session newSession(Request request, Response response)
          Creates a new session.
protected  SharedResources newSharedResources(ResourceReferenceRegistry registry)
           
protected  void onDestroy()
          Called when wicket servlet is destroyed.
 void onEvent(IEvent<?> event)
          Called when an event is sent to this sink
 void sessionUnbound(String sessionId)
          Informs the listener that session with specific id has been unbound.
<T> void
setMetaData(MetaDataKey<T> key, Object object)
          Sets the metadata for this application using the given key.
 void setName(String name)
          Sets application name.
 void setPageManagerProvider(IPageManagerProvider provider)
           
 void setPageRendererProvider(IPageRendererProvider pageRendererProvider)
           
 void setRequestCycleProvider(IRequestCycleProvider requestCycleProvider)
           
 void setRootRequestMapper(IRequestMapper rootRequestMapper)
          Sets the root request mapper
 void setSessionStoreProvider(IProvider<ISessionStore> sessionStoreProvider)
           
protected  void validateInit()
          Gives the Application object a chance to validate if it has been properly initialized
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CONFIGURATION

public static final String CONFIGURATION
Configuration constant for the 2 types

See Also:
Constant Field Values

CONTEXTPATH

public static final String CONTEXTPATH
Configuration type constant for getting the context path out of the web.xml

See Also:
Constant Field Values

DEPLOYMENT

public static final String DEPLOYMENT
Configuration type constant for deployment

See Also:
Constant Field Values

DEVELOPMENT

public static final String DEVELOPMENT
Configuration type constant for development

See Also:
Constant Field Values
Constructor Detail

Application

public Application()
Constructor. Use init() for any configuration of your application instead of overriding the constructor.

Method Detail

exists

public static boolean exists()
Checks if the Application threadlocal is set in this thread

Returns:
true if get() can return the instance of application, false otherwise

get

public static Application get()
Get Application for current thread.

Returns:
The current thread's Application

get

public static Application get(String applicationKey)
Gets the Application based on the application key of that application. You typically never have to use this method unless you are working on an integration project.

Parameters:
applicationKey - The unique key of the application within a certain context (e.g. a web application)
Returns:
The application or null if application has not been found

getApplicationKeys

public static Set<String> getApplicationKeys()
Gets the keys of the currently registered Wicket applications for this web application. You typically never have to use this method unless you are working on an integration project.

Returns:
unmodifiable set with keys that correspond with getApplicationKey(). Never null, but possibly empty

getComponentInstantiationListeners

public final ComponentInstantiationListenerCollection getComponentInstantiationListeners()

getComponentInitializationListeners

public final ComponentInitializationListenerCollection getComponentInitializationListeners()

configure

public final void configure()
Configures application settings to good defaults.


getApplicationKey

public abstract String getApplicationKey()
Gets the unique key of this application within a given context (like a web application). NOT INTENDED FOR FRAMEWORK CLIENTS.

Returns:
The unique key of this application

getApplicationSettings

public IApplicationSettings getApplicationSettings()
Returns:
Application's application-wide settings
Since:
1.2
See Also:
IApplicationSettings

getConfigurationType

public abstract String getConfigurationType()
Gets the configuration mode to use for configuring the app, either DEVELOPMENT or DEPLOYMENT.

The configuration type. Must currently be either DEVELOPMENT or DEPLOYMENT. Currently, if the configuration type is DEVELOPMENT, resources are polled for changes, component usage is checked, wicket tags are not stripped from output and a detailed exception page is used. If the type is DEPLOYMENT, component usage is not checked, wicket tags are stripped from output and a non-detailed exception page is used to display errors.

Note that you should not run Wicket in DEVELOPMENT mode on production servers - the various debugging checks and resource polling is inefficient and may leak resources, particularly on webapp redeploy.

To change the deployment mode, add the following to your web.xml, inside your mapping (or mapping if you're using 1.3.x):

 <init-param>
             <param-name>configuration</param-name>
             <param-value>deployment</param-value>
 </init-param>
 

You can alternatively set this as a <context-param> on the whole context.

Another option is to set the "wicket.configuration" system property to either "deployment" or "development". The value is not case-sensitive.

The system property is checked first, allowing you to add a web.xml param for deployment, and a command-line override when you want to run in development mode during development.

You may also override Application.getConfigurationType() to provide your own custom switch, in which case none of the above logic is used.

IMPORTANT NOTE

THIS METHOD IS CALLED OFTEN FROM MANY DIFFERENT POINTS IN CODE, INCLUDING DURING THE RENDER PROCESS, THEREFORE THE IMPLEMENTATION SHOULD BE FAST - PREFERRABLY USING A FAST-TO-RETRIEVE CACHED VALUE

Returns:
configuration
Since:
1.2.3 (function existed as a property getter), 1.3.0 (abstract, used to configure things)

getConverterLocator

public final IConverterLocator getConverterLocator()
Returns:
The converter locator for this application

getDebugSettings

public IDebugSettings getDebugSettings()
Returns:
Application's debug related settings
Since:
1.2
See Also:
IDebugSettings

getExceptionSettings

public IExceptionSettings getExceptionSettings()
Returns:
Application's exception handling settings
Since:
1.2
See Also:
IExceptionSettings

getFrameworkSettings

public IFrameworkSettings getFrameworkSettings()
Returns:
Wicket framework settings
Since:
1.2
See Also:
IFrameworkSettings

getHomePage

public abstract Class<? extends Page> getHomePage()
Application subclasses must specify a home page class by implementing this abstract method.

Returns:
Home page class for this application

getMarkupSettings

public IMarkupSettings getMarkupSettings()
Returns:
Application's markup related settings
Since:
1.2
See Also:
IMarkupSettings

getMetaData

public final <T> T getMetaData(MetaDataKey<T> key)
Gets metadata for this application using the given key.

Type Parameters:
T -
Parameters:
key - The key for the data
Returns:
The metadata
See Also:
MetaDataKey

getName

public final String getName()
Gets the name of this application.

Returns:
The application name.

getPageSettings

public IPageSettings getPageSettings()
Returns:
Application's page related settings
Since:
1.2
See Also:
IPageSettings

getRequestCycleSettings

public IRequestCycleSettings getRequestCycleSettings()
Returns:
Application's request cycle related settings
Since:
1.2
See Also:
IDebugSettings

getRequestLogger

public final IRequestLogger getRequestLogger()
Gets the IRequestLogger.

Returns:
The RequestLogger

getRequestLoggerSettings

public IRequestLoggerSettings getRequestLoggerSettings()
Returns:
Application's resources related settings
Since:
1.3
See Also:
IResourceSettings

getResourceSettings

public IResourceSettings getResourceSettings()
Returns:
Application's resources related settings
Since:
1.2
See Also:
IResourceSettings

getSecuritySettings

public ISecuritySettings getSecuritySettings()
Returns:
Application's security related settings
Since:
1.2
See Also:
ISecuritySettings

getSessionSettings

public ISessionSettings getSessionSettings()
Returns:
Application's session related settings
Since:
1.2
See Also:
ISessionSettings

getSessionStore

public final ISessionStore getSessionStore()
Gets the facade object for working getting/ storing session instances.

Returns:
The session facade

sessionUnbound

public void sessionUnbound(String sessionId)
Description copied from interface: ISessionStore.UnboundListener
Informs the listener that session with specific id has been unbound.

Specified by:
sessionUnbound in interface ISessionStore.UnboundListener

initializeComponents

public final void initializeComponents()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL. Initializes wicket components.


logEventTarget

public void logEventTarget(IRequestHandler target)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL.

Parameters:
target -

logResponseTarget

public void logResponseTarget(IRequestHandler requestTarget)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL.

Parameters:
requestTarget -

newSession

public abstract Session newSession(Request request,
                                   Response response)
Creates a new session. Override this method if you want to provide a custom session.

Parameters:
request - The request that will create this session.
response - The response to initialize, for example with cookies. This is important to use cases involving unit testing because those use cases might want to be able to sign a user in automatically when the session is created.
Returns:
The session
Since:
1.3

setMetaData

public final <T> void setMetaData(MetaDataKey<T> key,
                                  Object object)
Sets the metadata for this application using the given key. If the metadata object is not of the correct type for the metadata key, an IllegalArgumentException will be thrown. For information on creating MetaDataKeys, see MetaDataKey.

Type Parameters:
T -
Parameters:
key - The singleton key for the metadata
object - The metadata object
Throws:
IllegalArgumentException
See Also:
MetaDataKey

onDestroy

protected void onDestroy()
Called when wicket servlet is destroyed. Overrides do not have to call super.


init

protected void init()
Allows for initialization of the application by a subclass. Use this method for any application setup instead of the constructor.


internalDestroy

public void internalDestroy()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.


internalInit

protected void internalInit()
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT OVERRIDE OR CALL. Internal initialization.


getSessionStoreProvider

public final IProvider<ISessionStore> getSessionStoreProvider()

setSessionStoreProvider

public final void setSessionStoreProvider(IProvider<ISessionStore> sessionStoreProvider)

newConverterLocator

protected IConverterLocator newConverterLocator()
Creates and returns a new instance of IConverterLocator.

Returns:
A new IConverterLocator instance

newRequestLogger

protected IRequestLogger newRequestLogger()
creates a new request logger when requests logging is enabled.

Returns:
The new request logger

getComponentPreOnBeforeRenderListeners

public final ComponentOnBeforeRenderListenerCollection getComponentPreOnBeforeRenderListeners()

getComponentPostOnBeforeRenderListeners

public final ComponentOnBeforeRenderListenerCollection getComponentPostOnBeforeRenderListeners()

getComponentOnAfterRenderListeners

public final ComponentOnAfterRenderListenerCollection getComponentOnAfterRenderListeners()
Returns:
on after render listeners collection

getRequestCycleListeners

public RequestCycleListenerCollection getRequestCycleListeners()
Returns:
the unmodifiable request list of IRequestCycleListeners in this application

getRootRequestMapperAsCompound

public final ICompoundRequestMapper getRootRequestMapperAsCompound()
Converts the root mapper to a ICompoundRequestMapper if necessary and returns the converted instance.

Returns:
compound instance of the root mapper

getRootRequestMapper

public final IRequestMapper getRootRequestMapper()
Returns:
The root request mapper

setRootRequestMapper

public final void setRootRequestMapper(IRequestMapper rootRequestMapper)
Sets the root request mapper

Parameters:
rootRequestMapper -

getPageManagerProvider

public final IPageManagerProvider getPageManagerProvider()

setPageManagerProvider

public final void setPageManagerProvider(IPageManagerProvider provider)

getPageManager

public final IPageManager getPageManager()
Returns:
the page manager

getPageManagerContext

protected IPageManagerContext getPageManagerContext()
Returns:
the page manager context

getPageRendererProvider

public final IPageRendererProvider getPageRendererProvider()

setPageRendererProvider

public final void setPageRendererProvider(IPageRendererProvider pageRendererProvider)

newResourceReferenceRegistry

protected ResourceReferenceRegistry newResourceReferenceRegistry()
Override to create custom ResourceReferenceRegistry.

Returns:
new ResourceReferenceRegistry instance.

getResourceReferenceRegistry

public final ResourceReferenceRegistry getResourceReferenceRegistry()
Returns ResourceReferenceRegistry for this application.

Returns:

newSharedResources

protected SharedResources newSharedResources(ResourceReferenceRegistry registry)

getSharedResources

public SharedResources getSharedResources()

newPageFactory

protected IPageFactory newPageFactory()
Override to create custom IPageFactory

Returns:
new IPageFactory instance.

getPageFactory

public final IPageFactory getPageFactory()
Returns IPageFactory for this application.

Returns:

getEncoderContext

public final IMapperContext getEncoderContext()

fetchCreateAndSetSession

public Session fetchCreateAndSetSession(RequestCycle requestCycle)

getRequestCycleProvider

public IRequestCycleProvider getRequestCycleProvider()

setRequestCycleProvider

public void setRequestCycleProvider(IRequestCycleProvider requestCycleProvider)

createRequestCycle

public final RequestCycle createRequestCycle(Request request,
                                             Response response)

newExceptionMapper

protected IExceptionMapper newExceptionMapper()
Returns:
a mapper that knows what kind of error page to show when an exception occurs during page rendering

initApplication

public final void initApplication()
Initialize the application


validateInit

protected void validateInit()
Gives the Application object a chance to validate if it has been properly initialized


setName

public final void setName(String name)
Sets application name. This method must be called before any other methods are invoked and can only be called once per application instance.

Parameters:
name - unique application name

getMimeType

public String getMimeType(String fileName)
Returns the mime type for given filename.

Parameters:
fileName -
Returns:
mime type

onEvent

public void onEvent(IEvent<?> event)
Called when an event is sent to this sink

Specified by:
onEvent in interface IEventSink


Copyright © 2004-2010 Apache Software Foundation. All Rights Reserved.