de.deepamehta.core.impl
Class PluginManager

Show UML class diagram
java.lang.Object
  extended by de.deepamehta.core.impl.PluginManager

 class PluginManager
extends Object

Activates and deactivates plugins and keeps a pool of activated plugins. The pool of activated plugins is a shared resource. All access to it is synchronized.

A PluginManager singleton is hold by the EmbeddedService and is accessed concurrently by all bundle activation threads (as created e.g. by the File Install bundle).


Field Summary
private  Map<String,PluginImpl> activatedPlugins
          The pool of activated plugins.
private  EmbeddedService dms
           
private  Logger logger
           
 
Constructor Summary
PluginManager(EmbeddedService dms)
           
 
Method Summary
private  boolean _isPluginActivated(String pluginUri)
           
(package private)  void activatePlugin(PluginImpl plugin)
          Activates a plugin.
private  void addToActivatedPlugins(PluginImpl plugin)
           
private  boolean checkAllPluginsActivated()
          Checks if all installed plugins are activated.
(package private)  void deactivatePlugin(PluginImpl plugin)
           
(package private)  PluginImpl getPlugin(String pluginUri)
           
(package private)  List<PluginInfo> getPluginInfo()
           
private  boolean isDeepaMehtaPlugin(Bundle bundle)
          Plugin detection: checks if an arbitrary bundle is a DeepaMehta plugin.
(package private)  boolean isPluginActivated(String pluginUri)
           
private  void removeFromActivatedPlugins(String pluginUri)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

activatedPlugins

private Map<String,PluginImpl> activatedPlugins
The pool of activated plugins. Hashed by plugin bundle's symbolic name, e.g. "de.deepamehta.topicmaps".


dms

private EmbeddedService dms

logger

private Logger logger
Constructor Detail

PluginManager

PluginManager(EmbeddedService dms)
Method Detail

activatePlugin

void activatePlugin(PluginImpl plugin)
Activates a plugin. Called once the plugin's requirements are met (see PluginImpl.checkRequirementsForActivation()).

Once the plugin is activated checks if all installed plugins are activated now, and if so, fires the CoreEvent.ALL_PLUGINS_ACTIVE core event.

If the plugin is already activated, nothing is performed. This happens e.g. when a dependent plugin is redeployed.

Note: this method is synchronized. While a plugin is activated no other plugin must be activated. Otherwise the "type introduction" mechanism might miss some types. Consider this unsynchronized scenario: plugin B starts running its migrations just in the moment between plugin A's type introduction and event listener registration. Plugin A might miss some of the types created by plugin B.


deactivatePlugin

void deactivatePlugin(PluginImpl plugin)

isPluginActivated

boolean isPluginActivated(String pluginUri)

getPlugin

PluginImpl getPlugin(String pluginUri)

getPluginInfo

List<PluginInfo> getPluginInfo()

checkAllPluginsActivated

private boolean checkAllPluginsActivated()
Checks if all installed plugins are activated.


isDeepaMehtaPlugin

private boolean isDeepaMehtaPlugin(Bundle bundle)
Plugin detection: checks if an arbitrary bundle is a DeepaMehta plugin.


addToActivatedPlugins

private void addToActivatedPlugins(PluginImpl plugin)

removeFromActivatedPlugins

private void removeFromActivatedPlugins(String pluginUri)

_isPluginActivated

private boolean _isPluginActivated(String pluginUri)


Copyright © 2015. All Rights Reserved.