public class

JiraFailedPluginTracker

extends Object
implements InitializingComponent PluginExceptionInterception
java.lang.Object
   ↳ com.atlassian.jira.plugin.JiraFailedPluginTracker

Class Overview

Plugins form a big part of what Atlassian software does. However we don't do a good job in trying to know what plugins are loaded and importantly which ones have failed to load.

This class is used to track what plugins are expected to be loaded, what did load as expected and what failed to load.

Summary

Nested Classes
class JiraFailedPluginTracker.PluginInfo A simple holder class of plugin information  
class JiraFailedPluginTracker.ServiceDependency Represents a dependency that a plugin has to some other service  
Public Constructors
JiraFailedPluginTracker(PluginEventManager pluginEventManager)
Public Methods
void afterInstantiation()
Iterable<JiraFailedPluginTracker.PluginInfo> getFailedPlugins()
Iterable<JiraFailedPluginTracker.PluginInfo> getUnaccountedForPlugins()
boolean onEnableException(Plugin plugin, Exception pluginException)
void onPluginContainerFailed(PluginContainerFailedEvent event)
Called when the plugin container for the bundle has failed to be created.
void onPluginDisabledEvent(PluginDisabledEvent disabledEvent)
void onPluginEnabledEvent(PluginEnabledEvent enabledEvent)
void onServiceDependencyWaitEnded(PluginServiceDependencyWaitEndedEvent event)
void onServiceDependencyWaitStarting(PluginServiceDependencyWaitStartingEvent event)
void trackLoadingPlugin(Plugin plugin, PluginArtifact pluginArtifact)
This is called then the PluginFactory has decided it can create a plugin BUT it hasn't started it and hence resolved its dependencies
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.atlassian.jira.InitializingComponent
From interface com.atlassian.plugin.exception.PluginExceptionInterception

Public Constructors

public JiraFailedPluginTracker (PluginEventManager pluginEventManager)

Public Methods

public void afterInstantiation ()

Throws
Exception

public Iterable<JiraFailedPluginTracker.PluginInfo> getFailedPlugins ()

Returns
  • the list if plugins that failed to load

public Iterable<JiraFailedPluginTracker.PluginInfo> getUnaccountedForPlugins ()

Returns
  • the list of plugins that loaded as plugin artifacts but never resolved into actual failed or loaded plugins. This list REALLY should be empty once the plugin system has started and the the plugins have been otherwise we have a serious problem.

public boolean onEnableException (Plugin plugin, Exception pluginException)

public void onPluginContainerFailed (PluginContainerFailedEvent event)

Called when the plugin container for the bundle has failed to be created. This means the bundle is still active, but the plugin container is not available, so for our purposes, the plugin shouldn't be enabled.

Parameters
event The plugin container failed event
Throws
IllegalPluginStateException If the plugin key hasn't been set yet

public void onPluginDisabledEvent (PluginDisabledEvent disabledEvent)

public void onPluginEnabledEvent (PluginEnabledEvent enabledEvent)

public void onServiceDependencyWaitEnded (PluginServiceDependencyWaitEndedEvent event)

public void onServiceDependencyWaitStarting (PluginServiceDependencyWaitStartingEvent event)

public void trackLoadingPlugin (Plugin plugin, PluginArtifact pluginArtifact)

This is called then the PluginFactory has decided it can create a plugin BUT it hasn't started it and hence resolved its dependencies

Parameters
plugin the plugin that has been created by the PluginFactory but not resolved
pluginArtifact the artifact used to load this plugin