Class AbstractNodeAmPlugin

java.lang.Object
org.forgerock.openam.auth.node.api.AbstractNodeAmPlugin
All Implemented Interfaces:
AmPlugin
Direct Known Subclasses:
IotPlugin

@SupportedAll public abstract class AbstractNodeAmPlugin extends Object implements AmPlugin

A convenient base class for AmPlugins that provide authentication nodes.

Note on implementing the AmPlugin.getPluginVersion() method:

Nodes extending this class and overriding the AmPlugin.getPluginVersion() may declare themselves as being of version "0.0.0" (PluginTools.DEVELOPMENT_VERSION) The framework will recognise this as meaning the plugin is still in development. This can be utilised to ensure that the SMS is installed fresh after updating a node .jar in the /WEB-INF/lib/ directory to carry over updates to the node's config. Simply shutdown AM, copy over the new .jar and startup AM.

This process will break any instance of the node (and tree containing that node) which already exists as part of a tree. Therefore, nodes whose plugins extend this class using version "0.0.0" should be tested in development trees which should be destroyed and recreated after every restart.

Once ready for release, and for subsequent upgrades, the AmPlugin.getPluginVersion() method should be overridden again to reflect the appropriate release version.

  • Field Details

    • pluginTools

      protected PluginTools pluginTools
      An instance of the PluginTools for use when setting up the plugin.
  • Constructor Details

    • AbstractNodeAmPlugin

      public AbstractNodeAmPlugin()
  • Method Details

    • setPluginTools

      @Inject public void setPluginTools(PluginTools pluginTools)
      Guice setter for pluginTools.
      Parameters:
      pluginTools - The tools.
    • onInstall

      public void onInstall() throws PluginException
      Description copied from interface: AmPlugin
      Handle plugin installation. This method will only be called once, on first AM startup once the plugin is included in the classpath. The AmPlugin.onStartup() method will be called after this one.
      Specified by:
      onInstall in interface AmPlugin
      Throws:
      PluginException
    • onStartup

      public void onStartup(org.forgerock.openam.plugins.StartupType startupType) throws PluginException
      Description copied from interface: AmPlugin
      Handle plugin startup. This method will be called every time AM starts, after AmPlugin.onInstall(), AmPlugin.onAmUpgrade(String, String) and AmPlugin.upgrade(String) have been called (if relevant).
      Specified by:
      onStartup in interface AmPlugin
      Parameters:
      startupType - The type of startup that is taking place.
      Throws:
      PluginException
    • upgrade

      public void upgrade(String fromVersion) throws PluginException
      Description copied from interface: AmPlugin
      This method will be called when the version returned by AmPlugin.getPluginVersion() is higher than the version already installed. This method will be called before the AmPlugin.onStartup() method.
      Specified by:
      upgrade in interface AmPlugin
      Parameters:
      fromVersion - The old version of the plugin that has been installed.
      Throws:
      PluginException
    • getNodesByVersion

      protected Map<String,Iterable<? extends Class<? extends Node>>> getNodesByVersion()
      Retrieve the Map of list of node classes that the plugin is providing. The mappings returned describe which nodes have been introduced in which version of this plugin. For example:
           return ImmutableMap.of(
                   "1.0.0", asList(ChoiceCollectorNode.class),
                   "2.0.0", asList(SetPersistentCookieNode.class));
       
      Tells that this node plugin's 1.0.0 version has introduced the ChoiceCollectorNode, the 2.0.0 version has introduced the SetPersistentCookieNode.
      Returns:
      The list of node classes.
    • getNodes

      @Deprecated protected Iterable<? extends Class<? extends Node>> getNodes() throws UnsupportedOperationException
      Deprecated.
      in favour of getNodesByVersion()
      Specify the list of node classes that the plugin is providing. These will then be installed and registered at the appropriate times in plugin lifecycle.
      Returns:
      The list of node classes.
      Throws:
      UnsupportedOperationException - if called as this method is now deprecated.