Class AbstractGuiseApplication
- java.lang.Object
-
- com.globalmentor.beans.BoundPropertyObject
-
- io.guise.framework.AbstractGuiseApplication
-
- All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable
,com.globalmentor.beans.PropertyConstrainable
,com.globalmentor.net.Resource
,io.csar.Concerned
,GuiseApplication
- Direct Known Subclasses:
DefaultGuiseApplication
public abstract class AbstractGuiseApplication extends com.globalmentor.beans.BoundPropertyObject implements GuiseApplication
An abstract base class for a Guise application. This implementation only works with Guise containers that descend fromAbstractGuiseContainer
.- Author:
- Garret Wilson
-
-
Field Summary
-
Fields inherited from class com.globalmentor.beans.BoundPropertyObject
NO_PROPERTY_CHANGE_LISTENERS, NO_VETOABLE_CHANGE_LISTENERS
-
Fields inherited from interface io.guise.framework.GuiseApplication
ENVIRONMENT_PROPERTY, GUISE_ASSETS_AUDIO_PATH, GUISE_ASSETS_BASE_PATH, GUISE_ASSETS_CABS_PATH, GUISE_ASSETS_DOCUMENTS_PATH, GUISE_ASSETS_DTD_PATH, GUISE_ASSETS_FLASH_PATH, GUISE_ASSETS_JAVASCRIPT_PATH, GUISE_ASSETS_TEMP_BASE_PATH, GUISE_ASSETS_THEMES_PATH, GUISE_BASIC_THEME_BASE_PATH, GUISE_BASIC_THEME_PATH, GUISE_RESERVED_BASE_PATH, GUISE_ROOT_THEME_BASE_PATH, GUISE_ROOT_THEME_CURSORS_PATH, GUISE_ROOT_THEME_PATH, LOCALES_PROPERTY, RESOURCE_BUNDLE_BASE_NAME_PROPERTY, STYLE_URI_PROPERTY, THEME_URI_PROPERTY, THEMED_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description AbstractGuiseApplication(java.net.URI uri)
URI constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDestination(Destination destination)
Registers a destination so that it can be matched against one or more paths.void
addDestination(Destination destination, boolean priority)
Registers a destination so that it can be matched against one or more paths.void
checkInstalled()
Checks to ensure that this application is installed.void
checkNotInstalled()
Checks to ensure that this application is not installed.ApplicationFrame
createApplicationFrame()
Creates a frame for the application.GuiseSession
createSession(Platform platform)
Creates a new session for the application on the given platform.com.globalmentor.net.URIPath
createTempAsset(java.lang.String baseName, java.lang.String extension, GuiseSession restrictionSession)
Creates a temporary asset available at an application navigation path.<C extends io.csar.Concern>
java.util.Optional<C>findConcern(java.lang.Class<C> configurationClass)
java.net.URL
getAssetURL(com.globalmentor.net.URIPath path, GuiseSession guiseSession)
Returns a URL to the asset at the given path.com.globalmentor.net.URIPath
getBasePath()
Reports the base path of the application.java.net.URI
getBaseURI()
Reports the base URI where the application is installed.GuiseContainer
getContainer()
java.lang.String
getDCSID()
java.net.URI
getDepictionURI(java.net.URI depictionRootURI, com.globalmentor.net.URIPath navigationPath)
Determines the depiction URI based upon a navigation path.java.net.URI
getDepictionURI(java.net.URI depictionRootURI, java.net.URI navigationURI)
Determines the depiction URI based upon a navigation URI.java.util.Optional<Destination>
getDestination(com.globalmentor.net.URIPath path)
Determines the destination associated with the given application context-relative path.java.lang.Iterable<Destination>
getDestinations()
Returns an iterable of destinations.Environment
getEnvironment()
java.util.Set<java.lang.String>
getFacebookAdminIDs()
Indicates the Facebook administrators, if any, for this application.java.util.Set<java.lang.String>
getFacebookAdminIDs(com.globalmentor.net.URIPath navigationPath)
Indicates the Facebook administrators, if any, for the given navigation path.java.lang.String
getFacebookAppID()
Indicates the Facebook application, if any.java.lang.String
getFacebookAppID(com.globalmentor.net.URIPath navigationPath)
Indicates the Facebook application, if any, for the given navigation path.java.io.File
getHomeDirectory()
Returns the home directory shared by all sessions of this application.java.io.InputStream
getInputStream(com.globalmentor.net.URIPath path)
Retrieves an input stream to the entity at the given path.java.io.InputStream
getInputStream(java.net.URI uri)
Retrieves an input stream to the entity at the given URI.java.lang.String
getLocaleResourcePath(java.lang.String resourceBasePath, java.util.Locale locale)
Determines the locale-sensitive path of the given resource path.java.util.List<java.util.Locale>
getLocales()
java.io.File
getLogDirectory()
Returns the log directory shared by all sessions of this application.java.io.Writer
getLogWriter(java.lang.String baseFilename, com.globalmentor.io.IOOperation<java.io.Writer> initializer, com.globalmentor.io.IOOperation<java.io.Writer> uninitializer)
Retrieves a writer suitable for recording log information for the application.java.util.Map<?,?>
getMailProperties()
Returns the properties of the mail manager.java.util.Queue<javax.mail.Message>
getMailSendQueue()
Retrieves the queue used to send mail.javax.mail.Session
getMailSession()
Retrieves the current mail session.com.globalmentor.net.URIPath
getNavigationPath(java.net.URI depictionURI)
Determines the logical navigation path based upon a requested depiction URI.java.io.OutputStream
getOutputStream(com.globalmentor.net.URIPath path)
Retrieves an output stream to the entity at the given path.java.io.OutputStream
getOutputStream(java.net.URI uri)
Retrieves an output stream to the entity at the given URI.protected char[]
getPassword(java.security.Principal principal)
Looks up the corresponding password for the given principal.protected java.security.Principal
getPrincipal(java.lang.String id)
Looks up a principal from the given ID.protected java.lang.String
getRealm(com.globalmentor.net.URIPath applicationPath)
Determines the realm applicable for the resource indicated by the given application path.java.lang.String
getResourceBundleBaseName()
java.io.InputStream
getResourceInputStream(java.lang.String resourcePath)
Retrieves an input stream to the resource at the given path.protected com.globalmentor.io.IO<java.util.Map<java.lang.Object,java.lang.Object>>
getResourcesIO()
GuiseSession
getSession(java.util.UUID uuid)
Retrieves a Guise session for the given UUID.java.net.URI
getStyleURI()
java.util.Set<java.util.Locale>
getSupportedLocales()
java.io.File
getTempDirectory()
Returns the temporary directory shared by all sessions of this application.com.globalmentor.io.IO<Theme>
getThemeIO()
java.net.URI
getThemeURI()
java.net.URI
getURI()
boolean
hasAsset(com.globalmentor.net.URIPath path)
Determines whether this application has an asset at the given path.boolean
hasDestination(com.globalmentor.net.URIPath path)
Determines if there is a destination associated with the given application context-relative path.boolean
hasResource(java.lang.String resourcePath)
Determines if the application has a resource available stored at the given resource path.void
install(AbstractGuiseContainer container, java.net.URI baseURI, java.io.File homeDirectory, java.io.File logDirectory, java.io.File tempDirectory)
Installs the application into the given container at the given base URI.protected boolean
isAuthorized(com.globalmentor.net.URIPath applicationPath, java.security.Principal principal, java.lang.String realm)
Checks whether the given principal is authorized to access the resource at the given application path.boolean
isDebug()
boolean
isInstalled()
The hash code, which we'll update after installation.boolean
isThemed()
java.util.Properties
loadProperties(java.lang.String propertiesPath)
Loads properties from a file in the home directory.java.util.ResourceBundle
loadResourceBundle(Theme theme, java.util.Locale locale)
Retrieves a resource bundle for the given theme in the given locale.protected java.util.ResourceBundle
loadResourceBundle(Theme theme, java.util.Locale locale, java.util.ResourceBundle parentResourceBundle)
Retrieves a resource bundle from this theme and its resolving parents, if any.protected java.util.ResourceBundle
loadResourceBundle(java.net.URI resourceBundleURI, java.util.ResourceBundle parentResourceBundle)
Loads a resource bundle from the given URI.Theme
loadTheme(java.net.URI themeURI)
Loads a theme from the given URI.void
registerSession(GuiseSession guiseSession)
Registers a session with this application.com.globalmentor.net.URIPath
relativizePath(com.globalmentor.net.URIPath path)
Changes an absolute path to an application-relative path.com.globalmentor.net.URIPath
relativizeURI(java.net.URI uri)
Changes a URI to an application-relative path.protected <C extends io.csar.Concern>
java.util.Optional<C>removeConfiguration(java.lang.Class<C> configurationClass)
Removes a configuration of the given type.com.globalmentor.net.URIPath
resolvePath(com.globalmentor.net.URIPath path)
Resolves a relative or absolute path against the application base path.java.net.URI
resolveURI(java.net.URI uri)
Resolves a URI against the application base path.void
setBaseURI(java.net.URI baseURI)
Sets the base URI of the application.protected <C extends io.csar.Concern>
java.util.Optional<C>setConfiguration(C configuration)
Sets the given configuration, associating it with its class.protected <C extends io.csar.Concern>
java.util.Optional<C>setConfiguration(java.lang.Class<C> configurationClass, C configuration)
Sets the given configuration.protected void
setConfigurations(io.csar.Concern... configurations)
Sets the given configurations, associating them with their respective classes.void
setDCSID(java.lang.String dcsID)
Sets the Data Collection Server log identifier.void
setDebug(boolean debug)
Enables or disables debug mode in the application.void
setDestinations(java.util.List<Destination> destinations)
Associates multiple destinations with application context-relative paths or path patterns.void
setEnvironment(Environment newEnvironment)
Sets the application local environment.void
setLocales(java.util.List<java.util.Locale> newLocales)
Sets the list of supported locales.void
setLogLevel(com.globalmentor.log.Log.Level level)
Sets the log level that will be logged.void
setMailProperties(java.util.Map<?,?> mailProperties)
Sets properties of the mail manager.void
setResourceBundleBaseName(java.lang.String newResourceBundleBaseName)
Changes the resource bundle base name.void
setStyleURI(java.net.URI newStyle)
Sets the URI of the style of the application.void
setThemed(boolean newThemed)
Sets whether the application applies themes.void
setThemeURI(java.net.URI newThemeURI)
Sets the URI of the application theme.void
uninstall(GuiseContainer container)
Uninstalls the application from the given container.void
unregisterSession(GuiseSession guiseSession)
Unregisters a session from this application.-
Methods inherited from class com.globalmentor.beans.BoundPropertyObject
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, createPostponedPropertyChangeEvent, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getForwardPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getRepeatPropertyChangeListener, getRepeatVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, getVetoableChangeSupport, hasPropertyChangeListeners, hasVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
-
-
-
-
Constructor Detail
-
AbstractGuiseApplication
public AbstractGuiseApplication(java.net.URI uri)
URI constructor. The URI identifier may or may not be the URI at which the application can be accessed This implementation sets the locale to the JVM default.- Parameters:
uri
- The URI for the application, ornull
if there is no identifier is not known.
-
-
Method Detail
-
isDebug
public boolean isDebug()
- Specified by:
isDebug
in interfaceGuiseApplication
- Returns:
- Whether this application is in debug mode.
-
setDebug
public void setDebug(boolean debug)
Description copied from interface:GuiseApplication
Enables or disables debug mode in the application. In debug mode the application will present more information to the user, such as non-compressed JavaScript source code on the web platform.- Specified by:
setDebug
in interfaceGuiseApplication
- Parameters:
debug
- Whether debug mode should be enabled.
-
getResourcesIO
protected com.globalmentor.io.IO<java.util.Map<java.lang.Object,java.lang.Object>> getResourcesIO()
- Returns:
- I/O for loading resources.
-
getThemeIO
public com.globalmentor.io.IO<Theme> getThemeIO()
- Returns:
- I/O for loading themes.
-
setConfigurations
protected void setConfigurations(io.csar.Concern... configurations)
Sets the given configurations, associating them with their respective classes.- Parameters:
configurations
- The configurations to set.
-
setConfiguration
protected <C extends io.csar.Concern> java.util.Optional<C> setConfiguration(C configuration)
Sets the given configuration, associating it with its class.- Type Parameters:
C
- The type of configuration being set.- Parameters:
configuration
- The configuration to set.- Returns:
- The configuration previously associated with the same class, or
null
if there was no previous configuration for that class. - Throws:
java.lang.NullPointerException
- if the given configuration isnull
.
-
setConfiguration
protected <C extends io.csar.Concern> java.util.Optional<C> setConfiguration(java.lang.Class<C> configurationClass, C configuration)
Sets the given configuration.- Type Parameters:
C
- The type of configuration being set.- Parameters:
configurationClass
- The class with which to associate the configuration.configuration
- The configuration to set.- Returns:
- The configuration previously associated with the given class, or
null
if there was no previous configuration for that class.
-
findConcern
public <C extends io.csar.Concern> java.util.Optional<C> findConcern(java.lang.Class<C> configurationClass)
- Specified by:
findConcern
in interfaceio.csar.Concerned
-
removeConfiguration
protected <C extends io.csar.Concern> java.util.Optional<C> removeConfiguration(java.lang.Class<C> configurationClass)
Removes a configuration of the given type. If no configuration is associated with the specified type, no action occurs.- Type Parameters:
C
- The type of configuration being removed.- Parameters:
configurationClass
- The class with which the configuration is associated.- Returns:
- The configuration previously associated with the given class, or
null
if there was no previous configuration for that class.
-
getURI
public java.net.URI getURI()
This URI may be but is not guaranteed to be the URI at which the application can be accessed.
- Specified by:
getURI
in interfacecom.globalmentor.net.Resource
-
getContainer
public GuiseContainer getContainer()
- Specified by:
getContainer
in interfaceGuiseApplication
- Returns:
- The Guise container into which this application is installed, or
null
if the application is not yet installed.
-
getEnvironment
public Environment getEnvironment()
- Specified by:
getEnvironment
in interfaceGuiseApplication
- Returns:
- The application local environment.
-
setEnvironment
public void setEnvironment(Environment newEnvironment)
Description copied from interface:GuiseApplication
Sets the application local environment. This method will not normally be called directly from applications. This is a bound property.- Specified by:
setEnvironment
in interfaceGuiseApplication
- Parameters:
newEnvironment
- The new application local environment.- See Also:
GuiseApplication.ENVIRONMENT_PROPERTY
-
getMailProperties
public java.util.Map<?,?> getMailProperties()
Description copied from interface:GuiseApplication
Returns the properties of the mail manager. This method is guaranteed to return a non-null
value after the application is installed.- Specified by:
getMailProperties
in interfaceGuiseApplication
- Returns:
- The properties of the mail manager.
-
setMailProperties
public void setMailProperties(java.util.Map<?,?> mailProperties)
Description copied from interface:GuiseApplication
Sets properties of the mail manager.- Specified by:
setMailProperties
in interfaceGuiseApplication
- Parameters:
mailProperties
- The new properties of the mail manager
-
getMailSession
public javax.mail.Session getMailSession()
Description copied from interface:GuiseApplication
Retrieves the current mail session.- Specified by:
getMailSession
in interfaceGuiseApplication
- Returns:
- This application's mail session.
-
getMailSendQueue
public java.util.Queue<javax.mail.Message> getMailSendQueue()
Description copied from interface:GuiseApplication
Retrieves the queue used to send mail. Mail added to this queue will be sent use the application's configured mail protocols.- Specified by:
getMailSendQueue
in interfaceGuiseApplication
- Returns:
- The queue used for to send mail.
-
isThemed
public boolean isThemed()
- Specified by:
isThemed
in interfaceGuiseApplication
- Returns:
- Whether the application applies themes.
-
setThemed
public void setThemed(boolean newThemed)
Description copied from interface:GuiseApplication
Sets whether the application applies themes. This is a bound property of typeBoolean
.- Specified by:
setThemed
in interfaceGuiseApplication
- Parameters:
newThemed
-true
if the application should apply themes, elsefalse
.- See Also:
GuiseApplication.THEMED_PROPERTY
-
getNavigationPath
public com.globalmentor.net.URIPath getNavigationPath(java.net.URI depictionURI)
Determines the logical navigation path based upon a requested depiction URI. This method must preserve paths beginning withGuiseApplication.GUISE_RESERVED_BASE_PATH
.This version returns the relative path to the application unmodified.
- Specified by:
getNavigationPath
in interfaceGuiseApplication
- Parameters:
depictionURI
- The plain absolute depict URI.- Returns:
- The application-relative logical navigation path.
- See Also:
GuiseApplication.GUISE_RESERVED_BASE_PATH
-
getDepictionURI
public final java.net.URI getDepictionURI(java.net.URI depictionRootURI, com.globalmentor.net.URIPath navigationPath)
Determines the depiction URI based upon a navigation path.The requested navigation path is allowed to be in three forms:
- An absolute path, such as
/full/path/file.ext
, which is typically resolved to the root depiction URI. - A path relative to the application, such as
path/file.ext
, which is typically transformed if needed based upon hosts configured for sub-paths.
This implementation delegates to
getDepictionURI(URI, URI)
.- Specified by:
getDepictionURI
in interfaceGuiseApplication
- Parameters:
depictionRootURI
- The plain, absolute, root URI depiction currently in use.navigationPath
- The logical navigation path, either relative to the application, or absolute to the host.- Returns:
- A URI suitable for depiction, resolved to the application base path.
- An absolute path, such as
-
getDepictionURI
public java.net.URI getDepictionURI(java.net.URI depictionRootURI, java.net.URI navigationURI)
Determines the depiction URI based upon a navigation URI.The requested navigation URI is allowed to be in three forms:
- An absolute URI, such as
http://www.cnn.com/
, which is typically returned unmodified. - A relative URI with an absolute path, such as
/full/path/file.ext
, which is typically resolved to the root depiction URI. - A relative URI with a path relative to the application, such as
path/file.ext
, which is typically transformed if needed based upon hosts configured for sub-paths.
This version resolves the navigation URI to the base path, but otherwise returns the navigation URI unmodified.
- Specified by:
getDepictionURI
in interfaceGuiseApplication
- Parameters:
depictionRootURI
- The plain, absolute, root URI depiction currently in use.navigationURI
- The logical navigation URI, either absolute, relative to the application, or absolute to the host.- Returns:
- A URI suitable for depiction, resolved to the application base path.
- An absolute URI, such as
-
createSession
public GuiseSession createSession(Platform platform)
Creates a new session for the application on the given platform.This version creates and returns a default session.
- Specified by:
createSession
in interfaceGuiseApplication
- Parameters:
platform
- The platform on which this session's objects are depicted.- Returns:
- A new session for the application
-
registerSession
public void registerSession(GuiseSession guiseSession)
Description copied from interface:GuiseApplication
Registers a session with this application. The Guise session has not yet been initialized when this method is called.- Specified by:
registerSession
in interfaceGuiseApplication
- Parameters:
guiseSession
- The Guise session to register with this Guise application.
-
unregisterSession
public void unregisterSession(GuiseSession guiseSession)
Description copied from interface:GuiseApplication
Unregisters a session from this application. The Guise session has already been uninitialized when this method is called.- Specified by:
unregisterSession
in interfaceGuiseApplication
- Parameters:
guiseSession
- The Guise session to unregister from this Guise application.
-
getSession
public GuiseSession getSession(java.util.UUID uuid)
Description copied from interface:GuiseApplication
Retrieves a Guise session for the given UUID.- Specified by:
getSession
in interfaceGuiseApplication
- Parameters:
uuid
- The UUID of the Guise session to retrieve.- Returns:
- The Guise session associated with the given UUID, or
null
if no Guise session is associated with the given UUID.
-
createApplicationFrame
public ApplicationFrame createApplicationFrame()
Creates a frame for the application.This implementation returns a default application frame.
- Specified by:
createApplicationFrame
in interfaceGuiseApplication
- Returns:
- A new frame for the application.
-
getBaseURI
public java.net.URI getBaseURI()
Reports the base URI where the application is installed. The base URI is an absolute URI that ends with the base path, which ends with a slash ('/').- Returns:
- The base URI representing the Guise application, or
null
if no application base URI has been specified and the application is not yet installed. - See Also:
getBasePath()
-
setBaseURI
public void setBaseURI(java.net.URI baseURI)
Sets the base URI of the application. The base path is also set.- Parameters:
baseURI
- The base URI where the application is installed, which must be an absolute URI with an absolute collection path (e.g.http://www.example.com/path/
).- Throws:
java.lang.NullPointerException
- if the given base URI isnull
.java.lang.IllegalArgumentException
- if the given URI is not absolute or the path of which is not absolute or not a collection.java.lang.IllegalStateException
- if the application is already installed.- See Also:
getBasePath()
-
getBasePath
public com.globalmentor.net.URIPath getBasePath()
Description copied from interface:GuiseApplication
Reports the base path of the application. The base path is an absolute path that ends with a slash ('/'), indicating the base path of the navigation panels.- Specified by:
getBasePath
in interfaceGuiseApplication
- Returns:
- The base path representing the Guise application, or
null
if the application is not yet installed.
-
getHomeDirectory
public java.io.File getHomeDirectory()
Description copied from interface:GuiseApplication
Returns the home directory shared by all sessions of this application. This value is not available before the application is installed.- Specified by:
getHomeDirectory
in interfaceGuiseApplication
- Returns:
- The home directory of the application.
-
getLogDirectory
public java.io.File getLogDirectory()
Description copied from interface:GuiseApplication
Returns the log directory shared by all sessions of this application. This value is not available before the application is installed.- Specified by:
getLogDirectory
in interfaceGuiseApplication
- Returns:
- The log directory of the application.
-
getTempDirectory
public java.io.File getTempDirectory()
Description copied from interface:GuiseApplication
Returns the temporary directory shared by all sessions of this application. This value is not available before the application is installed.- Specified by:
getTempDirectory
in interfaceGuiseApplication
- Returns:
- The temporary directory of the application.
-
getLogWriter
public java.io.Writer getLogWriter(java.lang.String baseFilename, com.globalmentor.io.IOOperation<java.io.Writer> initializer, com.globalmentor.io.IOOperation<java.io.Writer> uninitializer) throws java.io.IOException
Retrieves a writer suitable for recording log information for the application. This implementation returns an asynchronous writer that does not block for information to be written when receiving information. The given base filename is appended with a representation of the current date. If a log writer for the same date is available, it is returned; otherwise, a new log writer is created. If the current date is a different day than that used for the current log writer for a given base filename, a new writer is created for the current date.- Specified by:
getLogWriter
in interfaceGuiseApplication
- Parameters:
baseFilename
- The base filename (e.g. "base.log") that will be used in generating a log file for the current date (e.g. "base 2003-02-01.log").initializer
- The encapsulation of any initialization that should be performed on any new writer, ornull
if no initialization is requested.uninitializer
- The encapsulation of any uninitialization that should be performed on any new writer, ornull
if no uninitialization is requested.- Returns:
- The writer suitable for recording log information for the application.
- Throws:
java.io.IOException
- if there was an error connecting to the entity at the given URI.- See Also:
GuiseApplication.getLogDirectory()
-
isInstalled
public boolean isInstalled()
The hash code, which we'll update after installation. The value is only used after installation, so the initial value is irrelevant.- Specified by:
isInstalled
in interfaceGuiseApplication
- Returns:
- Whether this application has been installed into a container at some base path.
- See Also:
GuiseApplication.getContainer()
,GuiseApplication.getBasePath()
-
checkInstalled
public void checkInstalled()
Description copied from interface:GuiseApplication
Checks to ensure that this application is installed.- Specified by:
checkInstalled
in interfaceGuiseApplication
- See Also:
GuiseApplication.isInstalled()
-
checkNotInstalled
public void checkNotInstalled()
Checks to ensure that this application is not installed.- Throws:
java.lang.IllegalStateException
- if the application is installed.- See Also:
isInstalled()
-
install
public void install(AbstractGuiseContainer container, java.net.URI baseURI, java.io.File homeDirectory, java.io.File logDirectory, java.io.File tempDirectory)
Installs the application into the given container at the given base URI. This method is called byGuiseContainer
and should not be called directly by applications.This implementation configures logging. Mail is enabled if mail properties have been configured using
setMailProperties(Map)
.- Specified by:
install
in interfaceGuiseApplication
- Parameters:
container
- The Guise container into which the application is being installed.baseURI
- The base URI at which the application is being installed.homeDirectory
- The home directory of the application.logDirectory
- The log directory of the application.tempDirectory
- The temporary directory of the application.
-
uninstall
public void uninstall(GuiseContainer container)
Description copied from interface:GuiseApplication
Uninstalls the application from the given container. All log writers are closed. This method is called byGuiseContainer
and should not be called directly by applications.- Specified by:
uninstall
in interfaceGuiseApplication
- Parameters:
container
- The Guise container into which the application is being installed.
-
getDCSID
public java.lang.String getDCSID()
- Specified by:
getDCSID
in interfaceGuiseApplication
- Returns:
- The identifier for logging to a Data Collection System such as WebTrends, or
null
if no DCS ID is known.
-
setDCSID
public void setDCSID(java.lang.String dcsID)
Description copied from interface:GuiseApplication
Sets the Data Collection Server log identifier.- Specified by:
setDCSID
in interfaceGuiseApplication
- Parameters:
dcsID
- The identifier for logging to a Data Collection System such as WebTrends, ornull
if no DCS ID is known.
-
getLocales
public java.util.List<java.util.Locale> getLocales()
- Specified by:
getLocales
in interfaceGuiseApplication
- Returns:
- The read-only non-empty list of locales supported by the application, with the first locale the default used if a new session cannot determine the users's preferred locale.
-
setLocales
public void setLocales(java.util.List<java.util.Locale> newLocales)
Description copied from interface:GuiseApplication
Sets the list of supported locales. This is a bound property.- Specified by:
setLocales
in interfaceGuiseApplication
- Parameters:
newLocales
- The new supported application locales.- See Also:
GuiseApplication.LOCALES_PROPERTY
-
getSupportedLocales
public java.util.Set<java.util.Locale> getSupportedLocales()
- Returns:
- The thread-safe set of locales supported by this application.
-
getResourceBundleBaseName
public java.lang.String getResourceBundleBaseName()
- Specified by:
getResourceBundleBaseName
in interfaceGuiseApplication
- Returns:
- The base name of the resource bundle to use for this application, or
null
if no custom resource bundle is specified for this application.
-
setResourceBundleBaseName
public void setResourceBundleBaseName(java.lang.String newResourceBundleBaseName)
Description copied from interface:GuiseApplication
Changes the resource bundle base name. This is a bound property.- Specified by:
setResourceBundleBaseName
in interfaceGuiseApplication
- Parameters:
newResourceBundleBaseName
- The new base name of the resource bundle, ornull
if no custom resource bundle is specified for this application.- See Also:
GuiseApplication.RESOURCE_BUNDLE_BASE_NAME_PROPERTY
-
getStyleURI
public java.net.URI getStyleURI()
- Specified by:
getStyleURI
in interfaceGuiseApplication
- Returns:
- The absolute or application-relative URI of the application style, or
null
if the default style should be used.
-
setStyleURI
public void setStyleURI(java.net.URI newStyle)
Description copied from interface:GuiseApplication
Sets the URI of the style of the application. This is a bound property.- Specified by:
setStyleURI
in interfaceGuiseApplication
- Parameters:
newStyle
- The URI of the application style, ornull
if the default style should be used.- See Also:
GuiseApplication.STYLE_URI_PROPERTY
-
getThemeURI
public java.net.URI getThemeURI()
- Specified by:
getThemeURI
in interfaceGuiseApplication
- Returns:
- The URI of the application theme, to be resolved against the application base path.
-
setThemeURI
public void setThemeURI(java.net.URI newThemeURI)
Description copied from interface:GuiseApplication
Sets the URI of the application theme. This is a bound property.- Specified by:
setThemeURI
in interfaceGuiseApplication
- Parameters:
newThemeURI
- The URI of the new application theme.- See Also:
GuiseApplication.THEME_URI_PROPERTY
-
setLogLevel
public void setLogLevel(com.globalmentor.log.Log.Level level)
Description copied from interface:GuiseApplication
Sets the log level that will be logged. Any log information at or above the given level will be logged.- Specified by:
setLogLevel
in interfaceGuiseApplication
- Parameters:
level
- The minimum level to be logged.
-
addDestination
public void addDestination(Destination destination)
Description copied from interface:GuiseApplication
Registers a destination so that it can be matched against one or more paths. Any existing destinations for the path or path pattern is replaced. Existing destinations will take priority if a path matches multiple destination path patterns.- Specified by:
addDestination
in interfaceGuiseApplication
- Parameters:
destination
- The description of the destination at the application context-relative path or path pattern.
-
addDestination
public void addDestination(Destination destination, boolean priority)
Description copied from interface:GuiseApplication
Registers a destination so that it can be matched against one or more paths. Any existing destinations for the path or path pattern is replaced.- Specified by:
addDestination
in interfaceGuiseApplication
- Parameters:
destination
- The description of the destination at the application context-relative path or path pattern.priority
- Whether this destination takes priority over other destinations when there are multiple matches; if this destination has no path pattern, this parameter is ignored.
-
setDestinations
public void setDestinations(java.util.List<Destination> destinations)
Description copied from interface:GuiseApplication
Associates multiple destinations with application context-relative paths or path patterns. All destinations are first cleared. Any existing destinations for the given context-relative paths are replaced.- Specified by:
setDestinations
in interfaceGuiseApplication
- Parameters:
destinations
- The destinations to set.
-
getDestination
public java.util.Optional<Destination> getDestination(com.globalmentor.net.URIPath path)
Description copied from interface:GuiseApplication
Determines the destination associated with the given application context-relative path. This method first checks for a destination that matches the exact path as given; if no matching path is found, all destinations with path patterns are searched for a match.- Specified by:
getDestination
in interfaceGuiseApplication
- Parameters:
path
- The address for which a destination should be retrieved.- Returns:
- The destination associated with the given path, which will not be present if no destination is associated with the path.
-
getDestinations
public java.lang.Iterable<Destination> getDestinations()
Description copied from interface:GuiseApplication
Returns an iterable of destinations. Any changes to the iterable will not necessarily be reflected in the destinations available to the application.- Specified by:
getDestinations
in interfaceGuiseApplication
- Returns:
- An iterable to the application's destinations.
-
hasDestination
public boolean hasDestination(com.globalmentor.net.URIPath path)
Description copied from interface:GuiseApplication
Determines if there is a destination associated with the given application context-relative path. This method first checks for a destination that matches the exact path as given; if no matching path is found, all destinations with path patterns are searched for a match.- Specified by:
hasDestination
in interfaceGuiseApplication
- Parameters:
path
- The application context-relative path.- Returns:
true
if there is destination associated with the given path, orfalse
if no destination is associated with the given path.
-
resolvePath
public com.globalmentor.net.URIPath resolvePath(com.globalmentor.net.URIPath path)
Description copied from interface:GuiseApplication
Resolves a relative or absolute path against the application base path. Relative paths will be resolved relative to the application base path. Absolute paths will be be considered already resolved. For an application path "/path/to/application/", resolving "relative/path" will yield "/path/to/application/relative/path", while resolving "/absolute/path" will yield "/absolute/path".- Specified by:
resolvePath
in interfaceGuiseApplication
- Parameters:
path
- The path to be resolved.- Returns:
- The path resolved against the application base path.
- See Also:
GuiseApplication.getBasePath()
,GuiseApplication.resolveURI(URI)
-
resolveURI
public java.net.URI resolveURI(java.net.URI uri)
Description copied from interface:GuiseApplication
Resolves a URI against the application base path. Relative paths and "path" scheme URIs with relative paths will be resolved relative to the application base path. Absolute paths will be considered already resolved, as will absolute URIs. For an application base path "/path/to/application/", resolving "path:relative/path" or "relative/path" will yield "/path/to/application/relative/path", while resolving "path:/absolute/path" or "/absolute/path" will yield "/absolute/path". Resolving "http://example.com/path" will yield "http://example.com/path".- Specified by:
resolveURI
in interfaceGuiseApplication
- Parameters:
uri
- The URI to be resolved.- Returns:
- The URI resolved against the application base path.
- See Also:
GuiseApplication.getBasePath()
,GuiseApplication.resolvePath(URIPath)
-
relativizePath
public com.globalmentor.net.URIPath relativizePath(com.globalmentor.net.URIPath path)
Description copied from interface:GuiseApplication
Changes an absolute path to an application-relative path. For an application base path "/path/to/application/", relativizing "/path/to/application/relative/path" will yield "relative/path"- Specified by:
relativizePath
in interfaceGuiseApplication
- Parameters:
path
- The path to be relativized.- Returns:
- The path relativized to the application base path.
- See Also:
GuiseApplication.getBasePath()
,GuiseApplication.relativizeURI(URI)
-
relativizeURI
public com.globalmentor.net.URIPath relativizeURI(java.net.URI uri)
Description copied from interface:GuiseApplication
Changes a URI to an application-relative path. For an application base path "/path/to/application/", relativizing "http://www.example.com/path/to/application/relative/path" will yield "relative/path"- Specified by:
relativizeURI
in interfaceGuiseApplication
- Parameters:
uri
- The URI to be relativized.- Returns:
- The URI path relativized to the application base path.
- See Also:
GuiseApplication.getBasePath()
,GuiseApplication.relativizePath(URIPath)
-
getLocaleResourcePath
public java.lang.String getLocaleResourcePath(java.lang.String resourceBasePath, java.util.Locale locale)
Description copied from interface:GuiseApplication
Determines the locale-sensitive path of the given resource path. Based upon the provided locale, candidate resource paths are checked in the following order:- resourceBasePath + "_" + language + "_" + country + "_" + variant
- resourceBasePath + "_" + language + "_" + country
- resourceBasePath + "_" + language
- Specified by:
getLocaleResourcePath
in interfaceGuiseApplication
- Parameters:
resourceBasePath
- An application-relative base path to a resource in the application resource storage area.locale
- The locale to use in generating candidate resource names.- Returns:
- The locale-sensitive path to an existing resource based upon the given locale, or
null
if no resource exists at the given resource base path or any of its locale candidates. - See Also:
GuiseApplication.hasResource(String)
-
hasResource
public boolean hasResource(java.lang.String resourcePath)
Determines if the application has a resource available stored at the given resource path. The provided path is first normalized.This implementation uses package access to delegate to
AbstractGuiseContainer.hasResource(String)
.- Specified by:
hasResource
in interfaceGuiseApplication
- Parameters:
resourcePath
- An application-relative path to a resource in the application resource storage area.- Returns:
true
if a resource exists at the given resource path.
-
getResourceInputStream
public java.io.InputStream getResourceInputStream(java.lang.String resourcePath)
Retrieves an input stream to the resource at the given path. The provided path is first normalized.This implementation uses package access to delegate to
AbstractGuiseContainer.getResourceInputStream(String)
.- Specified by:
getResourceInputStream
in interfaceGuiseApplication
- Parameters:
resourcePath
- An application-relative path to a resource in the application resource storage area.- Returns:
- An input stream to the resource at the given resource path, or
null
if no resource exists at the given resource path.
-
getInputStream
public java.io.InputStream getInputStream(java.net.URI uri) throws java.io.IOException
Description copied from interface:GuiseApplication
Retrieves an input stream to the entity at the given URI. The URI is first resolved to the application base path. If the URI represents one of this application's public resources, this implementation will return an input stream directly from that resource if possible rather than issuing a separate server request. This method supports read access to temporary public resources.- Specified by:
getInputStream
in interfaceGuiseApplication
- Parameters:
uri
- A URI to the entity; either absolute or relative to the application.- Returns:
- An input stream to the entity at the given resource URI, or
null
if no entity exists at the given resource path. - Throws:
java.io.IOException
- if there was an error connecting to the entity at the given URI.- See Also:
GuiseApplication.resolveURI(URI)
-
getInputStream
public java.io.InputStream getInputStream(com.globalmentor.net.URIPath path) throws java.io.IOException
Description copied from interface:GuiseApplication
Retrieves an input stream to the entity at the given path. If the URI represents one of this application's public resources, this implementation will return an input stream directly from that resource if possible rather than issuing a separate server request. This method supports read access to temporary public resources.- Specified by:
getInputStream
in interfaceGuiseApplication
- Parameters:
path
- A path that is either relative to the application context path or is absolute.- Returns:
- An input stream to the entity at the given resource path, or
null
if no entity exists at the given resource path. - Throws:
java.io.IOException
- if there was an error connecting to the entity at the given path.- See Also:
GuiseApplication.getInputStream(URI)
-
getOutputStream
public java.io.OutputStream getOutputStream(java.net.URI uri) throws java.io.IOException
Description copied from interface:GuiseApplication
Retrieves an output stream to the entity at the given URI. The URI is first resolved to the application base path. This method supports write access to temporary public resources. Write access to resources other than Guise public temporary files is currently unsupported.- Specified by:
getOutputStream
in interfaceGuiseApplication
- Parameters:
uri
- A URI to the entity; either absolute or relative to the application.- Returns:
- An output stream to the entity at the given resource URI.
- Throws:
java.io.FileNotFoundException
- if a URI to a temporary file was passed before the file was created usingGuiseApplication.createTempAsset(String, String, GuiseSession)
.java.io.IOException
- if there was an error connecting to the entity at the given URI.- See Also:
GuiseApplication.resolveURI(URI)
,GuiseApplication.createTempAsset(String, String, GuiseSession)
-
getOutputStream
public java.io.OutputStream getOutputStream(com.globalmentor.net.URIPath path) throws java.io.IOException
Description copied from interface:GuiseApplication
Retrieves an output stream to the entity at the given path. This method supports write access to temporary public resources. Write access to resources other than Guise public temporary files is currently unsupported.- Specified by:
getOutputStream
in interfaceGuiseApplication
- Parameters:
path
- A path that is either relative to the application context path or is absolute.- Returns:
- An output stream to the entity at the given resource path.
- Throws:
java.io.FileNotFoundException
- if a path to a temporary file was passed before the file was created usingGuiseApplication.createTempAsset(String, String, GuiseSession)
.java.io.IOException
- if there was an error connecting to the entity at the given URI.- See Also:
GuiseApplication.getOutputStream(URI)
,GuiseApplication.createTempAsset(String, String, GuiseSession)
-
createTempAsset
public com.globalmentor.net.URIPath createTempAsset(java.lang.String baseName, java.lang.String extension, GuiseSession restrictionSession) throws java.io.IOException
Description copied from interface:GuiseApplication
Creates a temporary asset available at an application navigation path. The file will be created in the application's temporary file directory. If the asset is restricted to the current Guise session, the asset will be deleted when the current Guise session ends.- Specified by:
createTempAsset
in interfaceGuiseApplication
- Parameters:
baseName
- The base filename to be used in generating the filename.extension
- The extension to use for the temporary file.restrictionSession
- The Guise session to which access access to the temporary file should be restricted, ornull
if there should be no access restriction.- Returns:
- An application navigation path that can be used to access the asset.
- Throws:
java.io.IOException
- if there is a problem creating the temporary asset.- See Also:
GuiseApplication.getTempDirectory()
,GuiseApplication.hasAsset(URIPath)
-
hasAsset
public boolean hasAsset(com.globalmentor.net.URIPath path) throws java.io.IOException
Description copied from interface:GuiseApplication
Determines whether this application has an asset at the given path. The path is first normalized. This method supports Guise assets and temporary application assets.- Specified by:
hasAsset
in interfaceGuiseApplication
- Parameters:
path
- The application-relative path of the asset.- Returns:
true
if an asset exists at the given path.- Throws:
java.io.IOException
- if there was an error accessing the asset.- See Also:
GuiseApplication.createTempAsset(String, String, GuiseSession)
,Guise.hasAsset(String)
-
getAssetURL
public java.net.URL getAssetURL(com.globalmentor.net.URIPath path, GuiseSession guiseSession) throws java.io.IOException
Description copied from interface:GuiseApplication
Returns a URL to the asset at the given path. The path is first normalized. This method supports Guise assets and temporary application assets. The returned URL represents internal access to the asset and should normally not be presented to users.- Specified by:
getAssetURL
in interfaceGuiseApplication
- Parameters:
path
- The application-relative path of the asset.guiseSession
- The Guise session requesting the asset, ornull
if there is no session associated with the request.- Returns:
- A URL to the asset, or
null
if there is no such asset. - Throws:
java.io.IOException
- if there was an error accessing the asset.- See Also:
GuiseApplication.createTempAsset(String, String, GuiseSession)
,Guise.getAssetURL(String)
-
loadResourceBundle
public java.util.ResourceBundle loadResourceBundle(Theme theme, java.util.Locale locale) throws java.io.IOException
Description copied from interface:GuiseApplication
Retrieves a resource bundle for the given theme in the given locale. The resource bundle retrieved will allow hierarchical resolution in the following priority:- Any resource defined by the application.
- Any resource defined by the theme.
- Any resource defined by a parent theme, including the default theme.
- Any resource defined by default by Guise.
- Specified by:
loadResourceBundle
in interfaceGuiseApplication
- Parameters:
theme
- The current theme in effect.locale
- The locale for which resources should be retrieved.- Returns:
- A resolving resource bundle based upon the locale.
- Throws:
java.io.IOException
- if there was an error loading a resource bundle.- See Also:
GuiseApplication.getResourceBundleBaseName()
-
loadResourceBundle
protected java.util.ResourceBundle loadResourceBundle(Theme theme, java.util.Locale locale, java.util.ResourceBundle parentResourceBundle) throws java.io.IOException
Retrieves a resource bundle from this theme and its resolving parents, if any. If multiple resource bundles are specified in this theme, they will be chained in no particular order. For each resource that provides both a reference URI and local definitions, the resources at the reference URI will be used as the resolving parent of the local definitions. If the theme does not specify a resource bundle, the given parent resource bundle will be returned.- Parameters:
theme
- The theme for which to load resources.locale
- The locale for which resources should be retrieved.parentResourceBundle
- The resource bundle to serve as the parent, ornull
if there is no parent resource bundle.- Returns:
- The resource bundle for the theme, with parent resource bundles loaded, or the parent resource bundle if the theme specifies no resources.
- Throws:
java.io.IOException
- if there was an error loading a resource bundle.
-
loadResourceBundle
protected java.util.ResourceBundle loadResourceBundle(java.net.URI resourceBundleURI, java.util.ResourceBundle parentResourceBundle) throws java.io.IOException
Loads a resource bundle from the given URI.- Parameters:
resourceBundleURI
- The URI of the resource bundle to load.parentResourceBundle
- The resource bundle to serve as the parent, ornull
if there is no parent resource bundle.- Returns:
- The loaded resource bundle.
- Throws:
java.io.IOException
- if there was an error loading the resource bundle.
-
loadTheme
public Theme loadTheme(java.net.URI themeURI) throws java.io.IOException
Description copied from interface:GuiseApplication
Loads a theme from the given URI. All relative URIs are considered relative to the application. If the theme specifies no parent theme, the default parent theme will be assigned unless the theme is the default theme.- Specified by:
loadTheme
in interfaceGuiseApplication
- Parameters:
themeURI
- The URI of the theme to load.- Returns:
- A loaded theme with resolving parents loaded as well.
- Throws:
java.io.IOException
- if there is an error loading the theme or one of its parents.
-
loadProperties
public java.util.Properties loadProperties(java.lang.String propertiesPath) throws java.io.IOException
Description copied from interface:GuiseApplication
Loads properties from a file in the home directory. The properties can be stored in XML or in the traditional properties format.- Specified by:
loadProperties
in interfaceGuiseApplication
- Parameters:
propertiesPath
- The path to the properties file, relative to the application home directory.- Returns:
- The properties loaded from the file at the given path.
- Throws:
java.io.IOException
- if there is an error loading the properties.- See Also:
GuiseApplication.getHomeDirectory()
-
getPrincipal
protected java.security.Principal getPrincipal(java.lang.String id)
Looks up a principal from the given ID. This version returnsnull
.- Parameters:
id
- The ID of the principal.- Returns:
- The principal corresponding to the given ID, or
null
if no principal could be determined.
-
getPassword
protected char[] getPassword(java.security.Principal principal)
Looks up the corresponding password for the given principal. This version returnsnull
.- Parameters:
principal
- The principal for which a password should be returned.- Returns:
- The password associated with the given principal, or
null
if no password is associated with the given principal.
-
getRealm
protected java.lang.String getRealm(com.globalmentor.net.URIPath applicationPath)
Determines the realm applicable for the resource indicated by the given application path. This version returns the application base path as the realm for all application paths.- Parameters:
applicationPath
- The relative path of the resource requested.- Returns:
- The realm appropriate for the resource, or
null
if the given resource is not in a known realm.
-
isAuthorized
protected boolean isAuthorized(com.globalmentor.net.URIPath applicationPath, java.security.Principal principal, java.lang.String realm)
Checks whether the given principal is authorized to access the resource at the given application path. This version authorized any principal accessing any application path.- Parameters:
applicationPath
- The relative path of the resource requested.principal
- The principal requesting authentication, ornull
if the principal is not known.realm
- The realm with which the resource is associated, ornull
if the realm is not known.- Returns:
true
if the given principal is authorized to access the resource represented by the given application path.
-
getFacebookAdminIDs
public java.util.Set<java.lang.String> getFacebookAdminIDs()
Indicates the Facebook administrators, if any, for this application.This version returns an empty set.
- Specified by:
getFacebookAdminIDs
in interfaceGuiseApplication
- Returns:
- The IDs of the Facebook administrators, if any, for this application.
-
getFacebookAdminIDs
public java.util.Set<java.lang.String> getFacebookAdminIDs(com.globalmentor.net.URIPath navigationPath)
Indicates the Facebook administrators, if any, for the given navigation path.This version delegates to
getFacebookAdminIDs()
.- Specified by:
getFacebookAdminIDs
in interfaceGuiseApplication
- Parameters:
navigationPath
- The navigation path for which a Facebook application ID should be returned.- Returns:
- The IDs of the Facebook administrators, if any, for the navigation path.
-
getFacebookAppID
public java.lang.String getFacebookAppID()
Indicates the Facebook application, if any.This version returns
null
.- Specified by:
getFacebookAppID
in interfaceGuiseApplication
- Returns:
- The ID of the Facebook application, or
null
if there is no Facebook application.
-
getFacebookAppID
public java.lang.String getFacebookAppID(com.globalmentor.net.URIPath navigationPath)
Indicates the Facebook application, if any, for the given navigation path.This version delegates to
getFacebookAppID()
.- Specified by:
getFacebookAppID
in interfaceGuiseApplication
- Parameters:
navigationPath
- The navigation path for which a Facebook application ID should be returned.- Returns:
- The ID of the Facebook application for the given navigation path, or
null
if there is no Facebook application.
-
-