Package org.deckfour.xes.extension
Class XExtensionManager
- java.lang.Object
-
- org.deckfour.xes.extension.XExtensionManager
-
public class XExtensionManager extends java.lang.ObjectThe extension manager is used to access, store, and manage extensions in a system. Extensions can be loaded from their given URI, which should point to the file defining the extension. Also, extensions can be registered locally, which then override any remotely-loaded extensions (which are more generic placeholders). Extension files downloaded from remote sources (which happens when the extension cannot be resolved locally) are cached on the local system, so that the network source of extension files is not put under extensive stress. The extension manager is a singleton, there is no need to instantiate more than one extension manager, which is necessary to avoid states of inconsistency.- Author:
- Christian W. Guenther (christian@deckfour.org)
-
-
Field Summary
Fields Modifier and Type Field Description static longMAX_CACHE_MILLISMaximal time for caching remotely-defined extensions in milliseconds.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcacheExtension(java.net.URI uri)Downloads and caches an extension from its remote definition file.XExtensiongetByIndex(int index)Retrieves an extension by ints index.XExtensiongetByName(java.lang.String name)Retrieves an extension by its name.XExtensiongetByPrefix(java.lang.String prefix)Retrieves an extension by its prefix.XExtensiongetByUri(java.net.URI uri)Retrieves an extension instance by its unique URI.intgetIndex(XExtension extension)Resolves the index of an extension, given that this extension has been previously registered with this manager instance.static XExtensionManagerinstance()Accesses the singleton instance of the extension manager.protected voidloadExtensionCache()Loads all extensions stored in the local cache.voidregister(XExtension extension)Explicitly registers an extension instance with the extension manager.protected voidregisterStandardExtensions()Registers all defined standard extensions with the extension manager before caching.
-
-
-
Field Detail
-
MAX_CACHE_MILLIS
public static final long MAX_CACHE_MILLIS
Maximal time for caching remotely-defined extensions in milliseconds. The default for this value is 30 days.- See Also:
- Constant Field Values
-
-
Method Detail
-
instance
public static XExtensionManager instance()
Accesses the singleton instance of the extension manager.- Returns:
- Singleton extension manager.
-
register
public void register(XExtension extension)
Explicitly registers an extension instance with the extension manager.- Parameters:
extension- The extension to be registered.
-
getByUri
public XExtension getByUri(java.net.URI uri)
Retrieves an extension instance by its unique URI. If the extension has not been registered before, it is looked up in the local cache. If it cannot be found in the cache, the manager attempts to download it from its unique URI, and add it to the set of managed extensions.- Parameters:
uri- The unique URI of the requested extension.- Returns:
- The requested extension.
-
getByName
public XExtension getByName(java.lang.String name)
Retrieves an extension by its name. If no extension by that name can be found, this method returnsnull.- Parameters:
name- The name of the requested extension.- Returns:
- The requested extension (may be
null, if it cannot be found).
-
getByPrefix
public XExtension getByPrefix(java.lang.String prefix)
Retrieves an extension by its prefix. If no extension by that prefix can be found, this method returnsnull.- Parameters:
prefix- The prefix of the requested extension.- Returns:
- The requested extension (may be
null, if it cannot be found).
-
getByIndex
public XExtension getByIndex(int index)
Retrieves an extension by ints index. If no extension with the given index is found, this method returnsnull.- Parameters:
index- The index of the requested extension.- Returns:
- The requested extension (may be
null, if it cannot be found).
-
getIndex
public int getIndex(XExtension extension)
Resolves the index of an extension, given that this extension has been previously registered with this manager instance. If the given index has not been registered previously, this method returns-1.- Parameters:
extension- The extension to look up the index for.- Returns:
- Unique index of the requested extension (positive integer).
-
registerStandardExtensions
protected void registerStandardExtensions()
Registers all defined standard extensions with the extension manager before caching.
-
cacheExtension
protected void cacheExtension(java.net.URI uri)
Downloads and caches an extension from its remote definition file. The extension is subsequently placed in the local cache, so that future loading is accelerated.- Parameters:
uri- Unique URI of the extension which is to be cached.
-
loadExtensionCache
protected void loadExtensionCache()
Loads all extensions stored in the local cache. Cached extensions which exceed the maximum caching age are discarded, and downloaded freshly.
-
-