Class ModuleProjectPropCnr

java.lang.Object
com.iizix.prop.GProp<GProp<?>[]>
com.iizix.prop.PropCnr
com.iizix.server.app.prop.ModuleProjectPropCnr
All Implemented Interfaces:
EventListener, IGProp<GProp<?>[]>, IInitializePropMgr, IModuleOwner, IModuleProjectPropProvider, IPropCnr, Cloneable
Direct Known Subclasses:
EditorModuleProjectPropCnr

public class ModuleProjectPropCnr extends PropCnr implements IModuleOwner, IInitializePropMgr, IModuleProjectPropProvider
The module root property container.
Author:
Christopher Mindus
  • Constructor Details

    • ModuleProjectPropCnr

      public ModuleProjectPropCnr()
      Creates a Module project property container without a name.

      This constructor sets the project in loading mode, so a call to setLoaded() is required followed by a validation of the references to complete the loading process.

    • ModuleProjectPropCnr

      public ModuleProjectPropCnr(Atom propertyAtom)
      Creates a Module project property container with a name.

      This constructor sets the project in loading mode, so a call to setLoaded() is required followed by a validation of the references to complete the loading process.

      Parameters:
      propertyAtom - The property atom.
    • ModuleProjectPropCnr

      public ModuleProjectPropCnr(Atom propertyAtom, File developmentDir, PropMgr serverPropMgr)
      Creates a Module project property container with a name when loaded from the Server in Development mode.

      This constructor sets the project in loading mode, so a call to setLoaded() is required followed by a validation of the references to complete the loading process.

      Parameters:
      propertyAtom - The property atom.
      developmentDir - The development directory.
      serverPropMgr - The server property manager.
  • Method Details

    • setLoaded

      public void setLoaded() throws SecurityException
      Call to set the project as loaded. Do not call this method, the framework will do so.
      Throws:
      SecurityException - In case caller is not allowed to call this method.
    • onPropDispose

      protected final void onPropDispose()
      Property disposed of. This will close any open class loaders.
      Overrides:
      onPropDispose in class PropCnr
    • initialize

      public final void initialize(PropMgr propMgr)
      Initializes the Property Manager instance for the property.
      Specified by:
      initialize in interface IInitializePropMgr
      Parameters:
      propMgr - The Property Manager.
    • getJarFile

      public final IJarFile getJarFile()
      Gets the Jar file that contains the Module model or null if running in development mode.
      Returns:
      The Jar file or null when running in development mode.
      Throws:
      NullPointerException - When not in the server running mode.
    • getDevelopmentDirectory

      public final File getDevelopmentDirectory()
      Gets the directory of the Module project when running in development mode.
      Returns:
      The directory, or null if not in development mode.
    • getClassPathInfo

      public final JarFilePath getClassPathInfo(IJarFile jar, Set<String> appModules, Set<JarFilePath> externalURLs, Set<File> externalResources, Set<String> dependentModules) throws IOException
      Gets the information to set-up the classpath for the module.
      Parameters:
      jar - The Jar file, null when in development mode.
      appModules - The set of all app modules used in this app.
      externalURLs - Set of URL's that are filled in and required for the module project, filled in by this method.
      externalResources - Set of external resources that must be watched by hot-deploy for changes, filled in by this method.
      dependentModules - Set of modules that this module depends on, filled in by this method.
      Returns:
      The JarFilePath for the module's classes.
      Throws:
      IOException
    • clone

      public final ModuleProjectPropCnr clone() throws CloneNotSupportedException
      Cloning is not supported.
      Overrides:
      clone in class PropCnr
      Throws:
      CloneNotSupportedException - Always!
    • getSettings

      public final ModuleProjectSettings getSettings()
      Gets the settings.
    • isUserAuthenticationAlwaysRequired

      public final 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.
    • isPropRoot

      public final boolean isPropRoot()
      Checks if this is a root property container.
      Specified by:
      isPropRoot in interface IGProp<GProp<?>[]>
      Overrides:
      isPropRoot in class GProp<GProp<?>[]>
      Returns:
      true, always.
    • isPropRootLoading

      public final boolean isPropRootLoading()
      Checks if the root property container is currently loading properties from Jar or files to avoid reference checking until the end.
      Overrides:
      isPropRootLoading in class GProp<GProp<?>[]>
      Returns:
      The loading flag, always false unless overridden by the real root property that handles loading.
    • isPropRootTreeModificationsAllowed

      protected boolean isPropRootTreeModificationsAllowed()
      Checking if a root property is allowed to be modified even after loading has completed.
      Overrides:
      isPropRootTreeModificationsAllowed in class GProp<GProp<?>[]>
      Returns:
      Flag indicating that the tree of properties below this container can be modified.
    • isPropReferenceTreeValid

      public final boolean isPropReferenceTreeValid()
      Verifies if the tree is valid for reference creation. This method is typically overridden in a root property that has a Property Manager owner that in turn is checked for a particular configuration (e.g. Client-related references such as LabelForReference that does not create references when communicating).
      Specified by:
      isPropReferenceTreeValid in interface IGProp<GProp<?>[]>
      Overrides:
      isPropReferenceTreeValid in class GProp<GProp<?>[]>
      Returns:
      true if the root property manager is found, false otherwise.
    • getPropRootPropMgr

      public final PropMgr getPropRootPropMgr()
      Gets the Property Manager used for communication for the root container. If this is not the root container, the parent function is called upwards in tree.
      Specified by:
      getPropRootPropMgr in interface IGProp<GProp<?>[]>
      Overrides:
      getPropRootPropMgr in class GProp<GProp<?>[]>
      Returns:
      The Server Property Manager.
    • getRootName

      public final String getRootName(GProp<?> requestor)
      Gets and checks if this container is the root. The name returned is in the Designer "module:".
      Overrides:
      getRootName in class GProp<GProp<?>[]>
      Parameters:
      requestor - The requestor property.
      Returns:
      The name of the project followed by ':'.
    • getRootFromName

      public final ModuleProjectPropCnr getRootFromName(GProp<?> requestor, String module)
      Gets the module root for a name. As this is the Designer, the module is the project.
      Specified by:
      getRootFromName in interface IModuleProjectPropProvider
      Overrides:
      getRootFromName in class GProp<GProp<?>[]>
      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 the module name is not found.
    • getProjectName

      public final String getProjectName(GProp<?> requestor, String alias)
      Gets the project name from an alias, the alias does NOT begin with "*".
      Specified by:
      getProjectName in interface IModuleProjectPropProvider
      Overrides:
      getProjectName in class GProp<GProp<?>[]>
      Parameters:
      requestor - The requestor property.
      alias - The alias name.
      Returns:
      The project name for the alias, or null if not found.
    • getAliasName

      public final String getAliasName(GProp<?> requestor, String projectName)
      Gets an alias name for a project name, the alias does NOT begin with "*".
      Overrides:
      getAliasName in class GProp<GProp<?>[]>
      Parameters:
      requestor - The requestor property.
      projectName - The project name (without ending ':').
      Returns:
      The alias name without leading '*' for the project name, or null if not found.
    • getPropFromReference

      public final GProp<?> getPropFromReference(GProp<?> requestor, String ref)
      Internal function for getPropFromReference(ref).

      Gets a property from a reference name. This can be called from any property in the property tree, and will direct the request to the root property.

      Overrides:
      getPropFromReference in class GProp<GProp<?>[]>
      Parameters:
      requestor - The requestor property.
      ref - The reference string.
      Returns:
      The property with the reference in question, or null if not found.
    • assignClassLoader

      public final void assignClassLoader(JarClassLoader classLoader)
      Assigns the class loader of the Module project.
      Parameters:
      classLoader - The class loader.
      Throws:
      IllegalStateException - If the class loader is already created.
    • getModuleClassLoader

      public final ClassLoader getModuleClassLoader()
      Gets the class loader of the Module project.
      Specified by:
      getModuleClassLoader in interface IModuleOwner
      Returns:
      A ClassLoader for the user classes.
    • getPossibleLanguages

      public final List<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.
    • getPushProps

      public PushProps getPushProps()
      Gets the Push Notification properties.
      Returns:
      The Push Notifications property container, or null for none.
    • getPWAProps

      public PWAProps getPWAProps()
      Gets the Progressive Web App (PWA) properties.
      Returns:
      The Progressive Web App property container, or null for none.