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 java.lang.Object implements IAppOwner, IRuntimeReferenceLookup, IPropMgrInfoProvider The application factory contains the application that should be run.- Author:
- Christopher Mindus
 
- Constructor Summary- Constructors - Constructor - Description - AppFactory(java.lang.String appID, java.lang.String serverEnvironmentName, IAppLoader loader, java.io.File file, AppDefinition definition)Load the application from an Jar file or just creates a development instance.
 - Method Summary- All Methods Static Methods Instance Methods Concrete Methods - Modifier and Type - Method - Description - void- addModuleProject(ModuleProjectPropCnr project)Adds a Module Project to the application.- boolean- areProjectsLoaded()Returns the projects ready flag.- int- cacheSVG(java.lang.String svgString)Adds the SVG image information as being sent to the client.- PropMgr- createPropMgr(ServerShell server)Creates the Property Manager with reference resolving to the application static properties.- void- dispose()Disposes of this factory.- boolean- doAddReference()Gets 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.- AppDefinition- getAppDefinition()Gets the application definition that loaded the app.- AppFactory- getAppFactory()Gets the application factory.- static AppFactory- getAppFactory(GProp<?> anyProp)From a property, virtualized or not, get the AppFactory instance.- java.lang.String- getAppFileSystemLocation()Gets the information of the application Jar file or the Module projects.- java.lang.String- getAppID()Gets the Application ID.- AppPropCnr- getAppRoot()Gets the Application Root container that holds all the Module Projects and settings.- java.lang.ClassLoader- getCommonClassLoader()Gets the class loader for the application used to load the user classes for the application.- java.util.Map<java.lang.String,java.lang.String>- getCustomAppMap()Gets the unmodifiable map of custom app properties, a map with keys and values.- java.io.File- getCustomizedAppHTML(ServerShell server, java.io.File file, java.lang.String lang)Gets a customized "iiziApp.html" file for a specific application ID and optional language.- double- getDPR()Gets the device pixel ratio.- EnvProps- getEnvironment()Gets the environment properties to use.- java.util.Map<AuthenticationProvider,IServiceCreator<? extends AbstractOAuthService>>- getExternalAuthenticationProviderMap()Gets the map of defined and initialized external authentication providers for the application.- java.lang.Object- getFileOrResource(java.lang.String target)Gets the URL or File resource to a target reference.- java.util.List<FontFiles>- getFontFiles(java.lang.String fontFamily)Gets the mapping of a font name to the FontFiles instance.- java.lang.String- getHTTPServer()Gets the HTTP Server string prefix including port.- IImageTarget- getImageTarget(java.lang.String ref)Gets the image reference.- IJarFile- getJarFile()Gets the Jar file for the Module.- ModuleProjectPropCnr- getModuleProject(java.lang.String name)Gets the Module project property container.- ModuleProjectPropCnr[]- getModuleProjects()Gets all the Module project containers.- ModuleProjectSettings- getModuleSettings()Gets the module project settings for the application.- java.util.List<java.lang.String>- getPossibleLanguages()Gets the possible languages defined in text files that can be used for the application.- java.util.List<PreloadClientCacheResource>- getPreloadClientCacheResources(ClientSessionGyro clientGyro)Gets the resources that are required to be downloaded to the client if not present or outdated.- GProp<?>- getResolveReferenceProperty()Gets the property used for references look-up's.- java.lang.String- getResourcePrefix()Gets the base reference name for the resource, typically an image, for the Server or the Designer.- PropCnr- getRootFromName(GProp<?> requestor, java.lang.String module)Gets the module root for a name.- GProp<?>- getRuntimePropFromReference(java.lang.String reference, boolean fallBackToNonVirtualized)Gets a reference for runtime use to get the reference of an item.- IServerApplicationSetupPropCnr[]- getServerApplicationSetup(java.lang.String pluginID)Gets the configuration setup's for a plug-in with specified ID.- ServerConfigEnvProps- getServerConfigEnvProps()Gets the server configuration environment properties for the current environment name.- java.lang.String- getServerEnvironmentName()Returns the name of the server environment to use, e.g.- java.lang.String- getTargetLanguageCode()Gets the language code to use.- IUserAuthenticationUI- getUserAuthenticationUI()Gets the user authentication UI interface used for the initial login.- IVirtualizedReferenceLookup- getVirtualizedReferenceLookupRetriever(java.lang.String reference)Gets the virtuals reference look-up for a reference.- void- initialize(IServer server)Initializes the factory and application.- boolean- installFont(java.lang.String fontFamily)Installs the font families as specified by the font family.- boolean- installFonts(java.util.List<FontFiles> fontList)Installs the font face as specified by the- FontFilesinstance for the Client Session.- boolean- isDisposed()Is this factory disposed?- boolean- isUserAuthenticationAlwaysRequired()Returns if the application requires user authentication every time it's started.- void- onApplicationSessionStarted(AppSessionGyro appGyro)Called when an application is instantiated and started by a user session.- void- onApplicationSessionStopped(AppSessionGyro appGyro)Called when an application is stopped.- int- prepare(java.lang.ClassLoader parentClassLoader, java.util.Set<java.io.File> resources)Prepares the application for use, i.e.- void- registerVirtualizedReferenceLookupRetriever(java.lang.String type, IVirtualizedReferenceLookupRetriever retriever)Registers a new virtuals reference look-up retriever for a plug-in.- boolean- shouldResolve()Flag 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 Detail- AppFactory- public AppFactory(java.lang.String appID, java.lang.String serverEnvironmentName, IAppLoader loader, java.io.File file, AppDefinition definition) throws java.io.IOException, PropExceptionLoad 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:
- java.io.IOException- For file errors.
- PropException- For property errors.
 
 
 - Method Detail- getAppFactory- public static AppFactory getAppFactory(GProp<?> anyProp) From a property, virtualized or not, get the AppFactory instance.- Parameters:
- anyProp- Any property in the tree.
 
 - getAppDefinition- public AppDefinition getAppDefinition() Gets the application definition that loaded the app.- Returns:
- The application definition, or null if not loaded from a definition.
 
 - getAppFileSystemLocation- public java.lang.String getAppFileSystemLocation() Gets 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.
 
 - areProjectsLoaded- public boolean areProjectsLoaded() Returns the projects ready flag.- Returns:
- false if any project is still not loaded, true if all projects are fully loaded.
 
 - dispose- public void dispose() Disposes of this factory.
 - isDisposed- public boolean isDisposed() Is this factory disposed?- Returns:
- trueif factory disposed.
 
 - onApplicationSessionStarted- public void onApplicationSessionStarted(AppSessionGyro appGyro) Called when an application is instantiated and started by a user session.- Parameters:
- appGyro- The application session.
 
 - onApplicationSessionStopped- public void onApplicationSessionStopped(AppSessionGyro appGyro) Called when an application is stopped.- Parameters:
- appGyro- The application session.
 
 - getAppFactory- public AppFactory getAppFactory() Gets the application factory.- Specified by:
- getAppFactoryin interface- IRuntimeReferenceLookup
- Returns:
- The AppFactory.
 
 - finalize- protected void finalize() throws java.lang.ThrowableUpon finalize, the factory is disposed of if not previously done. An error is logged if it has not been disposed of.- Overrides:
- finalizein class- java.lang.Object
- Throws:
- java.lang.Throwable- For potential problems.
 
 - getServerEnvironmentName- public java.lang.String getServerEnvironmentName() Returns the name of the server environment to use, e.g. "default", "devel" or "prod".
 - getServerConfigEnvProps- public ServerConfigEnvProps getServerConfigEnvProps() Gets 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.
 
 - getServerApplicationSetup- public IServerApplicationSetupPropCnr[] getServerApplicationSetup(java.lang.String pluginID) Gets 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.
 
 - initialize- public void initialize(IServer server) Initializes the factory and application.- Parameters:
- server- The Server instance.
 
 - getJarFile- public IJarFile getJarFile() Gets 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.
 
 - registerVirtualizedReferenceLookupRetriever- public void registerVirtualizedReferenceLookupRetriever(java.lang.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.
 
 - getVirtualizedReferenceLookupRetriever- public IVirtualizedReferenceLookup getVirtualizedReferenceLookupRetriever(java.lang.String reference) Gets the virtuals reference look-up for a reference.- Parameters:
- reference- The reference.
- Returns:
- The reference look-up instance, or null if not found.
 
 - getCommonClassLoader- public java.lang.ClassLoader getCommonClassLoader() Gets the class loader for the application used to load the user classes for the application.- Specified by:
- getCommonClassLoaderin interface- IAppOwner
- Returns:
- A class loader.
 
 - createPropMgr- public PropMgr createPropMgr(ServerShell server) Creates 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.
 
 - addModuleProject- public void addModuleProject(ModuleProjectPropCnr project) throws PropException Adds a Module Project to the application.- Parameters:
- project- The loaded project.
- Throws:
- PropException- If the project cannot be added.
 
 - getModuleProject- public ModuleProjectPropCnr getModuleProject(java.lang.String name) Gets the Module project property container.- Parameters:
- name- The name of the Module project without alias.
- Returns:
- The container, or null if not found.
 
 - getModuleProjects- public ModuleProjectPropCnr[] getModuleProjects() Gets all the Module project containers.- Returns:
- The array of Module project containers.
 
 - getModuleSettings- public ModuleProjectSettings getModuleSettings() Gets the module project settings for the application.- Returns:
- The settings, null if not yet loaded.
 
 - getCustomAppMap- public java.util.Map<java.lang.String,java.lang.String> getCustomAppMap() Gets the unmodifiable map of custom app properties, a map with keys and values.- Returns:
- The map, or nullif not defined.
 
 - getExternalAuthenticationProviderMap- public java.util.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.
 
 - getPossibleLanguages- public java.util.List<java.lang.String> getPossibleLanguages() Gets the possible languages defined in text files that can be used for the application.- Returns:
- A cached read-only list of possible languages.
 
 - prepare- public int prepare(java.lang.ClassLoader parentClassLoader, java.util.Set<java.io.File> resources) throws PropException, java.io.IOExceptionPrepares 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.
- java.io.IOException- For I/O errors.
- java.lang.IllegalStateException- If already prepared once.
 
 - getAppID- public java.lang.String getAppID() Gets the Application ID.
 - isUserAuthenticationAlwaysRequired- public 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.
 
 - getAppRoot- public AppPropCnr getAppRoot() Gets the Application Root container that holds all the Module Projects and settings.- Returns:
- The App root property container.
 
 - getFileOrResource- public java.lang.Object getFileOrResource(java.lang.String target) Gets 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.
 
 - getFontFiles- public java.util.List<FontFiles> getFontFiles(java.lang.String fontFamily) Gets 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.
 
 - getRuntimePropFromReference- public GProp<?> getRuntimePropFromReference(java.lang.String reference, boolean fallBackToNonVirtualized) Gets 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.
 
 - getEnvironment- public EnvProps getEnvironment() Gets 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.
 
 - getRootFromName- public PropCnr getRootFromName(GProp<?> requestor, java.lang.String module) Gets 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.
 
 - getHTTPServer- public java.lang.String getHTTPServer() Gets the HTTP Server string prefix including port.- Specified by:
- getHTTPServerin interface- IKStringInfoProvider
- Returns:
- The "" because the client loads from relative path.
 
 - getImageTarget- public IImageTarget getImageTarget(java.lang.String ref) Gets 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.
 
 - doAddReference- public 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.
 
 - shouldResolve- public 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.
 
 - getResolveReferenceProperty- public GProp<?> getResolveReferenceProperty() Gets the property used for references look-up's.- Specified by:
- getResolveReferencePropertyin interface- IKStringInfoProvider
- Returns:
- The property to use for looking up others.
 
 - getResourcePrefix- public java.lang.String getResourcePrefix() Gets 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.
 
 - getDPR- public double getDPR() Gets the device pixel ratio.- Specified by:
- getDPRin interface- IKStringInfoProvider
- Returns:
- The device pixel ratio, default 1.0.
 
 - getTargetLanguageCode- public java.lang.String getTargetLanguageCode() Gets the language code to use.- Specified by:
- getTargetLanguageCodein interface- IKStringInfoProvider
- Returns:
- The language code, or null for default.
 
 - installFont- public boolean installFont(java.lang.String fontFamily) Installs 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.
 
 - installFonts- public boolean installFonts(java.util.List<FontFiles> fontList) Installs 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.
 
 - cacheSVG- public int cacheSVG(java.lang.String svgString) Adds 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.
 
 - getPreloadClientCacheResources- public java.util.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()
 
 - getUserAuthenticationUI- public IUserAuthenticationUI getUserAuthenticationUI() Gets the user authentication UI interface used for the initial login.- Returns:
- The user authentication interface.
 
 - getCustomizedAppHTML- public java.io.File getCustomizedAppHTML(ServerShell server, java.io.File file, java.lang.String lang) Gets 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.