Class 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 Detail

      • pluginTools

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

      • AbstractNodeAmPlugin

        public AbstractNodeAmPlugin()
    • Method Detail

      • setPluginTools

        @Inject
        public void setPluginTools​(PluginTools pluginTools)
        Guice setter for pluginTools.
        Parameters:
        pluginTools - The tools.
      • 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.