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.clogr.Clogged, io.csar.Concerned, GuiseApplication
Direct Known Subclasses:
DefaultGuiseApplication

public abstract class AbstractGuiseApplication extends com.globalmentor.beans.BoundPropertyObject implements GuiseApplication, io.clogr.Clogged
An abstract base class for a Guise application. This implementation only works with Guise containers that descend from AbstractGuiseContainer.
Author:
Garret Wilson
  • Constructor Details

    • AbstractGuiseApplication

      public AbstractGuiseApplication(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, or null if there is no identifier is not known.
  • Method Details

    • isDebug

      public boolean isDebug()
      Specified by:
      isDebug in interface GuiseApplication
      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 interface GuiseApplication
      Parameters:
      debug - Whether debug mode should be enabled.
    • getResourcesIO

      protected com.globalmentor.io.IO<Map<Object,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> 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:
      NullPointerException - if the given configuration is null.
    • setConfiguration

      protected <C extends io.csar.Concern> Optional<C> setConfiguration(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> Optional<C> findConcern(Class<C> configurationClass)
      Specified by:
      findConcern in interface io.csar.Concerned
    • removeConfiguration

      protected <C extends io.csar.Concern> Optional<C> removeConfiguration(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 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 interface com.globalmentor.net.Resource
    • getContainer

      public GuiseContainer getContainer()
      Specified by:
      getContainer in interface GuiseApplication
      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 interface GuiseApplication
      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 interface GuiseApplication
      Parameters:
      newEnvironment - The new application local environment.
      See Also:
    • getMailProperties

      public 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 interface GuiseApplication
      Returns:
      The properties of the mail manager.
    • setMailProperties

      public void setMailProperties(Map<?,?> mailProperties)
      Description copied from interface: GuiseApplication
      Sets properties of the mail manager.
      Specified by:
      setMailProperties in interface GuiseApplication
      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 interface GuiseApplication
      Returns:
      This application's mail session.
    • getMailSendQueue

      public 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 interface GuiseApplication
      Returns:
      The queue used for to send mail.
    • isThemed

      public boolean isThemed()
      Specified by:
      isThemed in interface GuiseApplication
      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 type Boolean.
      Specified by:
      setThemed in interface GuiseApplication
      Parameters:
      newThemed - true if the application should apply themes, else false.
      See Also:
    • getNavigationPath

      public com.globalmentor.net.URIPath getNavigationPath(URI depictionURI)
      Determines the logical navigation path based upon a requested depiction URI. This method must preserve paths beginning with GuiseApplication.GUISE_RESERVED_BASE_PATH.

      This version returns the relative path to the application unmodified.

      Specified by:
      getNavigationPath in interface GuiseApplication
      Parameters:
      depictionURI - The plain absolute depict URI.
      Returns:
      The application-relative logical navigation path.
      See Also:
    • getDepictionURI

      public final URI getDepictionURI(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 interface GuiseApplication
      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.
    • getDepictionURI

      public URI getDepictionURI(URI depictionRootURI, 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 interface GuiseApplication
      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.
    • 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 interface GuiseApplication
      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 interface GuiseApplication
      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 interface GuiseApplication
      Parameters:
      guiseSession - The Guise session to unregister from this Guise application.
    • getSession

      public GuiseSession getSession(UUID uuid)
      Description copied from interface: GuiseApplication
      Retrieves a Guise session for the given UUID.
      Specified by:
      getSession in interface GuiseApplication
      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 interface GuiseApplication
      Returns:
      A new frame for the application.
    • getBaseURI

      public 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:
    • setBaseURI

      public void setBaseURI(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:
      NullPointerException - if the given base URI is null.
      IllegalArgumentException - if the given URI is not absolute or the path of which is not absolute or not a collection.
      IllegalStateException - if the application is already installed.
      See Also:
    • 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 interface GuiseApplication
      Returns:
      The base path representing the Guise application, or null if the application is not yet installed.
    • getHomeDirectory

      public 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 interface GuiseApplication
      Returns:
      The home directory of the application.
    • getLogDirectory

      public 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 interface GuiseApplication
      Returns:
      The log directory of the application.
    • getTempDirectory

      public 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 interface GuiseApplication
      Returns:
      The temporary directory of the application.
    • getLogWriter

      public Writer getLogWriter(String baseFilename, com.globalmentor.io.IOOperation<Writer> initializer, com.globalmentor.io.IOOperation<Writer> uninitializer) throws 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 interface GuiseApplication
      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, or null if no initialization is requested.
      uninitializer - The encapsulation of any uninitialization that should be performed on any new writer, or null if no uninitialization is requested.
      Returns:
      The writer suitable for recording log information for the application.
      Throws:
      IOException - if there was an error connecting to the entity at the given URI.
      See Also:
    • 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 interface GuiseApplication
      Returns:
      Whether this application has been installed into a container at some base path.
      See Also:
    • checkInstalled

      public void checkInstalled()
      Description copied from interface: GuiseApplication
      Checks to ensure that this application is installed.
      Specified by:
      checkInstalled in interface GuiseApplication
      See Also:
    • checkNotInstalled

      public void checkNotInstalled()
      Checks to ensure that this application is not installed.
      Throws:
      IllegalStateException - if the application is installed.
      See Also:
    • install

      public void install(AbstractGuiseContainer container, URI baseURI, File homeDirectory, File logDirectory, File tempDirectory)
      Installs the application into the given container at the given base URI. This method is called by GuiseContainer 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 interface GuiseApplication
      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 by GuiseContainer and should not be called directly by applications.
      Specified by:
      uninstall in interface GuiseApplication
      Parameters:
      container - The Guise container into which the application is being installed.
    • getDCSID

      public String getDCSID()
      Specified by:
      getDCSID in interface GuiseApplication
      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(String dcsID)
      Description copied from interface: GuiseApplication
      Sets the Data Collection Server log identifier.
      Specified by:
      setDCSID in interface GuiseApplication
      Parameters:
      dcsID - The identifier for logging to a Data Collection System such as WebTrends, or null if no DCS ID is known.
    • getLocales

      public List<Locale> getLocales()
      Specified by:
      getLocales in interface GuiseApplication
      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(List<Locale> newLocales)
      Description copied from interface: GuiseApplication
      Sets the list of supported locales. This is a bound property.
      Specified by:
      setLocales in interface GuiseApplication
      Parameters:
      newLocales - The new supported application locales.
      See Also:
    • getSupportedLocales

      public Set<Locale> getSupportedLocales()
      Returns:
      The thread-safe set of locales supported by this application.
    • getResourceBundleBaseName

      public String getResourceBundleBaseName()
      Specified by:
      getResourceBundleBaseName in interface GuiseApplication
      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(String newResourceBundleBaseName)
      Description copied from interface: GuiseApplication
      Changes the resource bundle base name. This is a bound property.
      Specified by:
      setResourceBundleBaseName in interface GuiseApplication
      Parameters:
      newResourceBundleBaseName - The new base name of the resource bundle, or null if no custom resource bundle is specified for this application.
      See Also:
    • getStyleURI

      public URI getStyleURI()
      Specified by:
      getStyleURI in interface GuiseApplication
      Returns:
      The absolute or application-relative URI of the application style, or null if the default style should be used.
    • setStyleURI

      public void setStyleURI(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 interface GuiseApplication
      Parameters:
      newStyle - The URI of the application style, or null if the default style should be used.
      See Also:
    • getThemeURI

      public URI getThemeURI()
      Specified by:
      getThemeURI in interface GuiseApplication
      Returns:
      The URI of the application theme, to be resolved against the application base path.
    • setThemeURI

      public void setThemeURI(URI newThemeURI)
      Description copied from interface: GuiseApplication
      Sets the URI of the application theme. This is a bound property.
      Specified by:
      setThemeURI in interface GuiseApplication
      Parameters:
      newThemeURI - The URI of the new application theme.
      See Also:
    • setLogLevel

      public void setLogLevel(org.slf4j.event.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 interface GuiseApplication
      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 interface GuiseApplication
      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 interface GuiseApplication
      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(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 interface GuiseApplication
      Parameters:
      destinations - The destinations to set.
    • getDestination

      public 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 interface GuiseApplication
      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 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 interface GuiseApplication
      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 interface GuiseApplication
      Parameters:
      path - The application context-relative path.
      Returns:
      true if there is destination associated with the given path, or false 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 interface GuiseApplication
      Parameters:
      path - The path to be resolved.
      Returns:
      The path resolved against the application base path.
      See Also:
    • resolveURI

      public URI resolveURI(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 interface GuiseApplication
      Parameters:
      uri - The URI to be resolved.
      Returns:
      The URI resolved against the application base path.
      See Also:
    • 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 interface GuiseApplication
      Parameters:
      path - The path to be relativized.
      Returns:
      The path relativized to the application base path.
      See Also:
    • relativizeURI

      public com.globalmentor.net.URIPath relativizeURI(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 interface GuiseApplication
      Parameters:
      uri - The URI to be relativized.
      Returns:
      The URI path relativized to the application base path.
      See Also:
    • getLocaleResourcePath

      public String getLocaleResourcePath(String resourceBasePath, 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:
      1. resourceBasePath + "_" + language + "_" + country + "_" + variant
      2. resourceBasePath + "_" + language + "_" + country
      3. resourceBasePath + "_" + language
      Specified by:
      getLocaleResourcePath in interface GuiseApplication
      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:
    • hasResource

      public boolean hasResource(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 interface GuiseApplication
      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 InputStream getResourceInputStream(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 interface GuiseApplication
      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 InputStream getInputStream(URI uri) throws 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 interface GuiseApplication
      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:
      IOException - if there was an error connecting to the entity at the given URI.
      See Also:
    • getInputStream

      public InputStream getInputStream(com.globalmentor.net.URIPath path) throws 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 interface GuiseApplication
      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:
      IOException - if there was an error connecting to the entity at the given path.
      See Also:
    • getOutputStream

      public OutputStream getOutputStream(URI uri) throws 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 interface GuiseApplication
      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:
      FileNotFoundException - if a URI to a temporary file was passed before the file was created using GuiseApplication.createTempAsset(String, String, GuiseSession).
      IOException - if there was an error connecting to the entity at the given URI.
      See Also:
    • getOutputStream

      public OutputStream getOutputStream(com.globalmentor.net.URIPath path) throws 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 interface GuiseApplication
      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:
      FileNotFoundException - if a path to a temporary file was passed before the file was created using GuiseApplication.createTempAsset(String, String, GuiseSession).
      IOException - if there was an error connecting to the entity at the given URI.
      See Also:
    • createTempAsset

      public com.globalmentor.net.URIPath createTempAsset(String baseName, String extension, GuiseSession restrictionSession) throws 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 interface GuiseApplication
      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, or null if there should be no access restriction.
      Returns:
      An application navigation path that can be used to access the asset.
      Throws:
      IOException - if there is a problem creating the temporary asset.
      See Also:
    • hasAsset

      public boolean hasAsset(com.globalmentor.net.URIPath path) throws 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 interface GuiseApplication
      Parameters:
      path - The application-relative path of the asset.
      Returns:
      true if an asset exists at the given path.
      Throws:
      IOException - if there was an error accessing the asset.
      See Also:
    • getAssetURL

      public URL getAssetURL(com.globalmentor.net.URIPath path, GuiseSession guiseSession) throws 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 interface GuiseApplication
      Parameters:
      path - The application-relative path of the asset.
      guiseSession - The Guise session requesting the asset, or null if there is no session associated with the request.
      Returns:
      A URL to the asset, or null if there is no such asset.
      Throws:
      IOException - if there was an error accessing the asset.
      See Also:
    • loadResourceBundle

      public ResourceBundle loadResourceBundle(Theme theme, Locale locale) throws 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:
      1. Any resource defined by the application.
      2. Any resource defined by the theme.
      3. Any resource defined by a parent theme, including the default theme.
      4. Any resource defined by default by Guise.
      Specified by:
      loadResourceBundle in interface GuiseApplication
      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:
      IOException - if there was an error loading a resource bundle.
      See Also:
    • loadResourceBundle

      protected ResourceBundle loadResourceBundle(Theme theme, Locale locale, ResourceBundle parentResourceBundle) throws 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, or null 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:
      IOException - if there was an error loading a resource bundle.
    • loadResourceBundle

      protected ResourceBundle loadResourceBundle(URI resourceBundleURI, ResourceBundle parentResourceBundle) throws 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, or null if there is no parent resource bundle.
      Returns:
      The loaded resource bundle.
      Throws:
      IOException - if there was an error loading the resource bundle.
    • loadTheme

      public Theme loadTheme(URI themeURI) throws 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 interface GuiseApplication
      Parameters:
      themeURI - The URI of the theme to load.
      Returns:
      A loaded theme with resolving parents loaded as well.
      Throws:
      IOException - if there is an error loading the theme or one of its parents.
    • loadProperties

      public Properties loadProperties(String propertiesPath) throws 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 interface GuiseApplication
      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:
      IOException - if there is an error loading the properties.
      See Also:
    • getPrincipal

      protected Principal getPrincipal(String id)
      Looks up a principal from the given ID. This version returns null.
      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(Principal principal)
      Looks up the corresponding password for the given principal. This version returns null.
      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 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, Principal principal, 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, or null if the principal is not known.
      realm - The realm with which the resource is associated, or null 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 Set<String> getFacebookAdminIDs()
      Indicates the Facebook administrators, if any, for this application.

      This version returns an empty set.

      Specified by:
      getFacebookAdminIDs in interface GuiseApplication
      Returns:
      The IDs of the Facebook administrators, if any, for this application.
    • getFacebookAdminIDs

      public Set<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 interface GuiseApplication
      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 String getFacebookAppID()
      Indicates the Facebook application, if any.

      This version returns null.

      Specified by:
      getFacebookAppID in interface GuiseApplication
      Returns:
      The ID of the Facebook application, or null if there is no Facebook application.
    • getFacebookAppID

      public 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 interface GuiseApplication
      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.