Package com.iizix.server.app
Class AppFactory
java.lang.Object
com.iizix.server.app.AppFactory
- All Implemented Interfaces:
- IAppOwner,- IPropMgrInfoProvider,- IRuntimeReferenceLookup,- IKStringInfoProvider
public final class AppFactory extends Object implements IAppOwner, IRuntimeReferenceLookup, IPropMgrInfoProvider
The application factory contains the application that should be run.
- Author:
- Christopher Mindus
- Constructor SummaryConstructorsConstructorDescription- AppFactory- (String appID, String serverEnvironmentName, IAppLoader loader, File file, AppDefinition definition) Load the application from an Jar file or just creates a development instance.
- Method SummaryModifier and TypeMethodDescription- void- addModuleProject- (ModuleProjectPropCnr project) Adds a Module Project to the application.- final boolean- addUserLoginProhibitedInterval- (TimeInterval timeInterval) Removes a time interval when user login is prohibited.- booleanReturns the projects ready flag.- booleanReturns the projects ready flag.- intAdds the SVG image information as being sent to the client.- createPropMgr- (ServerShell server) Creates the Property Manager with reference resolving to the application static properties.- void- dispose()Disposes of this factory.- booleanGets the flag for adding the reference string in an attribute when editing the KString in a rich text editor.- protected void- finalize()Upon finalize, the factory is disposed of if not previously done.Gets the application definition that loaded the app.Gets the application factory.- static AppFactory- getAppFactory- (GProp<?> anyProp) From a property, virtualized or not, get the AppFactory instance.Gets the information of the application Jar file or the Module projects.- getAppID()Gets the Application ID.Gets the Application Root container that holds all the Module Projects and settings.Gets the class loader for the application used to load the user classes for the application.Gets the unmodifiable map of custom app properties, a map with keys and values.- getCustomizedAppHTML- (ServerShell server, File file, String lang) Gets a customized "iiziApp.html" file for a specific application ID and optional language.- double- getDPR()Gets the device pixel ratio.Gets the environment properties to use.- Map<AuthenticationProvider,- IServiceCreator<? extends AbstractOAuthService>> Gets the map of defined and initialized external authentication providers for the application.- getFileOrResource- (String target) Gets the URL or File resource to a target reference.- getFontFiles- (String fontFamily) Gets the mapping of a font name to the FontFiles instance.Gets the HTTP Server string prefix including port.- getImageTarget- (String ref) Gets the image reference.Gets the Jar file for the Module.- getModuleProject- (String name) Gets the Module project property container.Gets all the Module project containers.Gets the module project settings for the application.Gets the possible languages defined in text files that can be used for the application.- getPreloadClientCacheResources- (ClientSessionGyro clientGyro) Gets the resources that are required to be downloaded to the client if not present or outdated.- GProp<?>Gets the property used for references look-up's.Gets the base reference name for the resource, typically an image, for the Server or the Designer.- getRootFromName- (GProp<?> requestor, String module) Gets the module root for a name.- GProp<?>- getRuntimePropFromReference- (String reference, boolean fallBackToNonVirtualized) Gets a reference for runtime use to get the reference of an item.- getServerApplicationSetup- (String pluginID) Gets the configuration setup's for a plug-in with specified ID.Gets the server configuration environment properties for the current environment name.Returns the name of the server environment to use, e.g.Gets the language code to use.Gets the user authentication UI interface used for the initial login.- final TimeInterval[]Gets the time intervals when user login is prohibited.- getVirtualizedReferenceLookupRetriever- (String reference) Gets the virtuals reference look-up for a reference.- void- initialize- (IServer server) Initializes the factory and application.- boolean- installFont- (String fontFamily) Installs the font families as specified by the font family.- boolean- installFonts- (List<FontFiles> fontList) Installs the font face as specified by the- FontFilesinstance for the Client Session.- booleanIs this factory disposed?- booleanReturns if the application requires user authentication every time it's started.- final booleanChecks if user login is enabled.- final booleanVerifies if the user login is permitted at the current time.- voidCalled when an application is instantiated and started by a user session.- voidCalled when an application is stopped.- int- prepare- (ClassLoader parentClassLoader, Set<File> resources) Prepares the application for use, i.e.- void- registerVirtualizedReferenceLookupRetriever- (String type, IVirtualizedReferenceLookupRetriever retriever) Registers a new virtuals reference look-up retriever for a plug-in.- final void- setUserLoginEnabled- (boolean on) Sets the user login enabled flag.- booleanFlag indicating the "real" resolved string should be returned.- Methods inherited from class java.lang.Object- clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait- Methods inherited from interface com.iizix.text.IKStringInfoProvider- installFonts- Methods inherited from interface com.iizix.server.app.IRuntimeReferenceLookup- getRuntimePropFromReference
- Constructor Details- AppFactorypublic AppFactory- (String appID, String serverEnvironmentName, IAppLoader loader, File file, AppDefinition definition) throws IOException, PropException Load the application from an Jar file or just creates a development instance.- Parameters:
- appID- The application ID.
- serverEnvironmentName- The name of the server environment to use, e.g. "default", "devel" or "prod", null for default.
- loader- The loader.
- file- The Jar file when running in non-development mode.
- definition- The app definition, null for none.
- Throws:
- IOException- For file errors.
- PropException- For property errors.
 
 
- Method Details- getAppFactoryFrom a property, virtualized or not, get the AppFactory instance.- Parameters:
- anyProp- Any property in the tree.
 
- getAppDefinitionGets the application definition that loaded the app.- Returns:
- The application definition, or null if not loaded from a definition.
 
- getAppFileSystemLocationGets the information of the application Jar file or the Module projects. The returned string is typically used for logging purposes.- Returns:
- A descriptive string of the application file system location.
 
- areProjectsLoadedpublic boolean areProjectsLoaded()Returns the projects ready flag.- Returns:
- false if any project is still not loaded, true if all projects are fully loaded.
 
- areProjectsLoadedForReferencespublic boolean areProjectsLoadedForReferences()Returns the projects ready flag.- Returns:
- false if any project is still not loaded, true if all projects are fully loaded.
 
- disposepublic void dispose()Disposes of this factory.
- isDisposedpublic boolean isDisposed()Is this factory disposed?- Returns:
- trueif factory disposed.
 
- onApplicationSessionStartedCalled when an application is instantiated and started by a user session.- Parameters:
- appGyro- The application session.
 
- onApplicationSessionStoppedCalled when an application is stopped.- Parameters:
- appGyro- The application session.
 
- getAppFactoryGets the application factory.- Specified by:
- getAppFactoryin interface- IRuntimeReferenceLookup
- Returns:
- The AppFactory.
 
- finalizeUpon finalize, the factory is disposed of if not previously done. An error is logged if it has not been disposed of.
- getServerEnvironmentNameReturns the name of the server environment to use, e.g. "default", "devel" or "prod".
- getServerConfigEnvPropsGets the server configuration environment properties for the current environment name. If the properties are not found, a SEVERE event is logged and null is returned.- Returns:
- The ServerConfigEnvProps, or null if not found.
 
- getServerApplicationSetupGets the configuration setup's for a plug-in with specified ID. Each plug-in may present several configurations, although most commonly a single one. If the configuration environment is not found, a SEVERE event is logged and null is returned.- Parameters:
- pluginID- The plug-in ID.
- Returns:
- The configuration setup, or null if the server environment configuration or plug-in configuration is not found. If the plug-in is found but no configurations, an empty array is returned.
 
- initializeInitializes the factory and application.- Parameters:
- server- The Server instance.
 
- getJarFileGets the Jar file for the Module. This Jar file can be a Jar-in-Jar file, or null if running in development mode (use getDevelopmentDirectory() instead).- Returns:
- The Jar file or null when running in development mode.
 
- registerVirtualizedReferenceLookupRetrieverpublic void registerVirtualizedReferenceLookupRetriever- (String type, IVirtualizedReferenceLookupRetriever retriever) Registers a new virtuals reference look-up retriever for a plug-in.- Parameters:
- type- The reference type, i.e. the string after the Module model, e.g. "panel" for Panels, "vs" for VirtualSpace, and "screen" for Terminal Screens.
- retriever- The virtuals reference look-up retriever instance for the type.
 
- getVirtualizedReferenceLookupRetrieverGets the virtuals reference look-up for a reference.- Parameters:
- reference- The reference.
- Returns:
- The reference look-up instance, or null if not found.
 
- getCommonClassLoaderGets the class loader for the application used to load the user classes for the application.- Specified by:
- getCommonClassLoaderin interface- IAppOwner
- Returns:
- A class loader.
 
- createPropMgrCreates the Property Manager with reference resolving to the application static properties. The reference resolving is typically used for images, i.e. a- IPropMgrInfoProvideris implemented.- Parameters:
- server- The Server instance.
 
- addModuleProjectAdds a Module Project to the application.- Parameters:
- project- The loaded project.
- Throws:
- PropException- If the project cannot be added.
 
- getModuleProjectGets the Module project property container.- Parameters:
- name- The name of the Module project without alias.
- Returns:
- The container, or null if not found.
 
- getModuleProjectsGets all the Module project containers.- Returns:
- The array of Module project containers.
 
- getModuleSettingsGets the module project settings for the application.- Returns:
- The settings, null if not yet loaded.
 
- getCustomAppMapGets the unmodifiable map of custom app properties, a map with keys and values.- Returns:
- The map, or nullif not defined.
 
- getExternalAuthenticationProviderMappublic Map<AuthenticationProvider,- IServiceCreator<? extends AbstractOAuthService>> getExternalAuthenticationProviderMap()Gets the map of defined and initialized external authentication providers for the application.- Returns:
- An unmodifiable map sorted by Enum.ordinal()with its service creator interface. Note that this map may be empty if no external authentication providers are configured for the application.
 
- getPossibleLanguagesGets the possible languages defined in text files that can be used for the application.- Returns:
- A cached read-only list of possible languages.
 
- preparepublic int prepare- (ClassLoader parentClassLoader, Set<File> resources) throws PropException, IOException Prepares the application for use, i.e. load the user classes, resolves references, etc.- Parameters:
- parentClassLoader- The parent class loader, null for default.
- resources- The list of classpath resources (files and directories) that is filled in.
- Returns:
- The resolve failure count.
- Throws:
- PropException- If a property failed to resolve.
- IOException- For I/O errors.
- IllegalStateException- If already prepared once.
 
- getAppIDGets the Application ID.
- isUserAuthenticationAlwaysRequiredpublic boolean isUserAuthenticationAlwaysRequired()Returns if the application requires user authentication every time it's started.- Returns:
- true for user authentication always required, by password or fingerprint.
 
- getAppRootGets the Application Root container that holds all the Module Projects and settings.- Returns:
- The App root property container.
 
- getFileOrResourceGets the URL or File resource to a target reference.- Specified by:
- getFileOrResourcein interface- IAppOwner
- Parameters:
- target- The target reference as a normal Module reference string "module:/path/resource".
- Returns:
- The FileorResourcefor the resource, null for none.
 
- getFontFilesGets the mapping of a font name to the FontFiles instance.- Parameters:
- fontFamily- The font family.
- Returns:
- The read-only FontFiles List instance, null if not found.
 
- getRuntimePropFromReferenceGets a reference for runtime use to get the reference of an item. The reference must be fully qualified such as "*ALIAS:/type/path" or "MODULE:/type/path" and cannot be relative.- If the flag - fallBackToNonVirtualizedis false, the search will not fallback to searching for the non-virtualized property in the runtime app. The result will only returned virtualized properties, i.e. for a reference as e.g. "module:/vs/someVS", and depending on where this method is called (the client session), also includes other virtualized properties such as panels as e.g. "module:/panel/somePanel".- To always fallback to also searching the runtime app, specify - fallBackToNonVirtualizedto true.- Specified by:
- getRuntimePropFromReferencein interface- IRuntimeReferenceLookup
- Parameters:
- reference- The reference to look-up.
- fallBackToNonVirtualized- Flag indicating a fallback to non-virtualized properties.
- Returns:
- The property found, or null for reference not found.
 
- getEnvironmentGets the environment properties to use.- Specified by:
- getEnvironmentin interface- IRuntimeReferenceLookup
- Returns:
- The environment for the client session, original session or server in that priority order.
 
- getRootFromNameGets the module root for a name. In the Editor, the module is the project, and that root container is returned. In the Server, the module doesn't matter, so the real root returns itself.- When running with assertions, this call throws an assertion error by default, showing that the call is directed to a non-root property container. - Specified by:
- getRootFromNamein interface- IRuntimeReferenceLookup
- Parameters:
- requestor- The requestor property.
- module- The module name (without colon), i.e. the project name in the Designer.
- Returns:
- The root property container, or null if this container is not the root, or if the module name is not found. The default implementation returns null.
 
- getHTTPServerGets the HTTP Server string prefix including port.- Specified by:
- getHTTPServerin interface- IKStringInfoProvider
- Returns:
- The "" because the client loads from relative path.
 
- getImageTargetGets the image reference.- Specified by:
- getImageTargetin interface- IKStringInfoProvider
- Parameters:
- ref- The image definition reference string.
- Returns:
- The Image target interface, or null if not found.
 
- doAddReferencepublic boolean doAddReference()Gets the flag for adding the reference string in an attribute when editing the KString in a rich text editor.- Specified by:
- doAddReferencein interface- IKStringInfoProvider
- Returns:
- Flag to add a special text reference for the rich text editor.
 
- shouldResolvepublic boolean shouldResolve()Flag indicating the "real" resolved string should be returned. This value is true for the runtime client when in "real run mode".- Specified by:
- shouldResolvein interface- IKStringInfoProvider
- Returns:
- Flag to resolve strings or not.
 
- getResolveReferencePropertyGets the property used for references look-up's.- Specified by:
- getResolveReferencePropertyin interface- IKStringInfoProvider
- Returns:
- The property to use for looking up others.
 
- getResourcePrefixGets the base reference name for the resource, typically an image, for the Server or the Designer. This reference is "/$" (the default in this interface) for the Designer, but should be "/$APPID/" for the Server, where APPID is the application being run by the client. The Server must therefore implement this method and return that string instead.- Specified by:
- getResourcePrefixin interface- IKStringInfoProvider
- Returns:
- The resource prefix string: "/$APPID/" for the Server, where APPID is the application being run by the client.
 
- getDPRpublic double getDPR()Gets the device pixel ratio.- Specified by:
- getDPRin interface- IKStringInfoProvider
- Returns:
- The device pixel ratio, default 1.0.
 
- getTargetLanguageCodeGets the language code to use.- Specified by:
- getTargetLanguageCodein interface- IKStringInfoProvider
- Returns:
- The language code, or null for default.
 
- installFontInstalls the font families as specified by the font family.- Specified by:
- installFontin interface- IKStringInfoProvider
- Parameters:
- fontFamily- The font family or families.
- Returns:
- true for success, false if the remote part doesn't support installation, e.g. in a preview browser.
 
- installFontsInstalls the font face as specified by the- FontFilesinstance for the Client Session. Once installed, the font family can be used.- Specified by:
- installFontsin interface- IKStringInfoProvider
- Parameters:
- fontList- The list of font files to install.
- Returns:
- true for success, false if the remote part doesn't support installation, e.g. in a preview browser.
 
- cacheSVGAdds the SVG image information as being sent to the client.- This method is not intended to be called and logs a severe error and returns 1 (one). - Specified by:
- cacheSVGin interface- IPropMgrInfoProvider
- Parameters:
- svgString- The SVG string.
- Returns:
- The cached index value for the SVG string. A negative value indicates that it needs sending to the client, whereas a positive means only the index is required to be sent. A return value of zero is an error and means not to send it to client at all.
 
- getPreloadClientCacheResourcespublic List<PreloadClientCacheResource> getPreloadClientCacheResources- (ClientSessionGyro clientGyro) Gets the resources that are required to be downloaded to the client if not present or outdated.- Parameters:
- clientGyro- The client gyro.
- Returns:
- The list of resources that are relevant for the client in question. The resources relative URLs must be prefixed with Application ID (i.e. getResourcePrefix()
 
- getUserAuthenticationUIGets the user authentication UI interface used for the initial login.- Returns:
- The user authentication interface.
 
- getCustomizedAppHTMLGets a customized "iiziApp.html" file for a specific application ID and optional language.- Parameters:
- server- The server instance.
- file- The compressed iiziApp.html file without customization.
- lang- The language requested, or- nullfor default.
- Returns:
- The customized (and cached) file to send instead of the un-customized one, or nullfor none, i.e. in case of error.
 
- isUserLoginEnabledpublic final boolean isUserLoginEnabled()Checks if user login is enabled.- Returns:
- The user login enabled flag.
 
- setUserLoginEnabledSets the user login enabled flag.- Parameters:
- on- The enabled flag.
- Throws:
- SecurityException- If the caller is not allowed to perform this function.
 
- isUserLoginPermittedNowpublic final boolean isUserLoginPermittedNow()Verifies if the user login is permitted at the current time.- Returns:
- The login permission flag.
 
- getUserLoginProhibitedIntervalsGets the time intervals when user login is prohibited.- Returns:
- The array of time intervals.
 
- addUserLoginProhibitedIntervalpublic final boolean addUserLoginProhibitedInterval- (TimeInterval timeInterval) throws SecurityException Removes a time interval when user login is prohibited.- Parameters:
- timeInterval- The time interval.
- Returns:
- Success flag truemeaning OK,falsemeans no change, or the interval was already present.
- Throws:
- SecurityException- If the caller is not allowed to perform this function.