Class PropertyUserStore

All Implemented Interfaces:
EventListener, LifeCycle, PathWatcher.Listener

public class PropertyUserStore extends UserStore implements PathWatcher.Listener

This class monitors a property file of the format mentioned below and notifies registered listeners of the changes to the the given file.

  username: password [,rolename ...]
 

Passwords may be clear text, obfuscated or checksummed. The class Password should be used to generate obfuscated passwords or password checksums.

If DIGEST Authentication is used, the password must be in a recoverable format, either plain text or obfuscated.

  • Field Details

    • LOG

      private static final Logger LOG
    • _configPath

      protected Path _configPath
    • _pathWatcher

      protected PathWatcher _pathWatcher
    • _hotReload

      protected boolean _hotReload
    • _firstLoad

      protected boolean _firstLoad
    • _listeners

      protected List<PropertyUserStore.UserListener> _listeners
  • Constructor Details

    • PropertyUserStore

      public PropertyUserStore()
  • Method Details

    • getConfig

      public String getConfig()
      Get the config (as a string)
      Returns:
      the config path as a string
    • setConfig

      public void setConfig(String config)
      Set the Config Path from a String reference to a file
      Parameters:
      config - the config file
    • getConfigPath

      public Path getConfigPath()
      Get the Config Path reference.
      Returns:
      the config path
    • setConfigPath

      @Deprecated public void setConfigPath(String configFile)
      Deprecated.
      Set the Config Path from a String reference to a file
      Parameters:
      configFile - the config file can a be a file path or a reference to a file within a jar file jar:file:
    • extractPackedFile

      private Path extractPackedFile(JarFileResource configResource) throws IOException
      Throws:
      IOException
    • setConfigPath

      @Deprecated public void setConfigPath(File configFile)
      Deprecated.
      Set the Config Path from a File reference
      Parameters:
      configFile - the config file
    • setConfigFile

      public void setConfigFile(File configFile)
      Set the Config Path from a File reference
      Parameters:
      configFile - the config file
    • setConfigPath

      public void setConfigPath(Path configPath)
      Set the Config Path
      Parameters:
      configPath - the config path
    • getConfigResource

      public Resource getConfigResource()
      Returns:
      the resource associated with the configured properties file, creating it if necessary
    • isHotReload

      public boolean isHotReload()
      Is hot reload enabled on this user store
      Returns:
      true if hot reload was enabled before startup
    • setHotReload

      public void setHotReload(boolean enable)
      Enable Hot Reload of the Property File
      Parameters:
      enable - true to enable, false to disable
    • toString

      public String toString()
      Overrides:
      toString in class AbstractLifeCycle
    • loadUsers

      protected void loadUsers() throws IOException
      Throws:
      IOException
    • doStart

      protected void doStart() throws Exception
      Depending on the value of the refresh interval, this method will either start up a scanner thread that will monitor the properties file for changes after it has initially loaded it. Otherwise the users will be loaded and there will be no active monitoring thread so changes will not be detected.
      Overrides:
      doStart in class AbstractLifeCycle
      Throws:
      Exception
    • onPathWatchEvent

      public void onPathWatchEvent(PathWatcher.PathWatchEvent event)
      Specified by:
      onPathWatchEvent in interface PathWatcher.Listener
    • doStop

      protected void doStop() throws Exception
      Overrides:
      doStop in class AbstractLifeCycle
      Throws:
      Exception
    • notifyUpdate

      private void notifyUpdate(String username, Credential credential, String[] roleArray)
      Notifies the registered listeners of potential updates to a user
      Parameters:
      username - the user that was updated
      credential - the updated credentials
      roleArray - the updated roles
    • notifyRemove

      private void notifyRemove(String username)
      Notifies the registered listeners that a user has been removed.
      Parameters:
      username - the user that was removed
    • registerUserListener

      public void registerUserListener(PropertyUserStore.UserListener listener)
      Registers a listener to be notified of the contents of the property file
      Parameters:
      listener - the user listener