diff options
author | David Ostrovsky <david@ostrovsky.org> | 2014-03-10 01:50:49 +0100 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-04-10 18:58:09 -0400 |
commit | 84f406bfd20ec2076cf7616e7f396ad480513bc4 (patch) | |
tree | 661045f193871d676c1c06b996b831469cfc067c /src/main/java/com/gitblit/DaggerModule.java | |
parent | 261ddf0fcf9a55fbb5b4e7c6c2cdb4c2f8c860fe (diff) | |
download | gitblit-84f406bfd20ec2076cf7616e7f396ad480513bc4.tar.gz gitblit-84f406bfd20ec2076cf7616e7f396ad480513bc4.zip |
Add plugins/extension infrastructure
Plugins are stored in `${baseFolder}/plugins` and are loaded
during startup by the PluginManager.
A plugin defines it's metadata in META-INF/MANIFEST.MF:
Plugin-Class: com.gitblit.plugins.cookbook.CookbookPlugin
Plugin-Dependencies: foo, bar
Plugin-Id: gitblit-plugin
Plugin-Provider: John Doe
Plugin-Version: 1.0
Plugins can define extension points that can be implemented
by other plugins and they can depend on other plugins:
Plugin-Dependencies: foo, bar
During the load phase, a directed acyclic graph is built and the loading
order of the dependency chain is reversed using a topological sort;
parent followed by children. The parent plugin classloader is the
combined classloader of all parent plugins.
Change-Id: I738821fa2bff02a5dbe339a944cc7e3c4dd8e299
Diffstat (limited to 'src/main/java/com/gitblit/DaggerModule.java')
-rw-r--r-- | src/main/java/com/gitblit/DaggerModule.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java index b109f1db..1805c4ec 100644 --- a/src/main/java/com/gitblit/DaggerModule.java +++ b/src/main/java/com/gitblit/DaggerModule.java @@ -19,9 +19,11 @@ import javax.inject.Singleton; import com.gitblit.manager.AuthenticationManager; import com.gitblit.manager.FederationManager; +import com.gitblit.manager.PluginManager; import com.gitblit.manager.IAuthenticationManager; import com.gitblit.manager.IFederationManager; import com.gitblit.manager.IGitblit; +import com.gitblit.manager.IPluginManager; import com.gitblit.manager.INotificationManager; import com.gitblit.manager.IProjectManager; import com.gitblit.manager.IRepositoryManager; @@ -62,6 +64,7 @@ import dagger.Provides; IRepositoryManager.class, IProjectManager.class, IFederationManager.class, + IPluginManager.class, // the monolithic manager IGitblit.class, @@ -88,6 +91,10 @@ public class DaggerModule { return new UserManager(runtimeManager); } + @Provides @Singleton IPluginManager providePluginManager(IRuntimeManager runtimeManager) { + return new PluginManager(runtimeManager); + } + @Provides @Singleton IAuthenticationManager provideAuthenticationManager( IRuntimeManager runtimeManager, IUserManager userManager) { @@ -161,7 +168,8 @@ public class DaggerModule { IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, - IFederationManager federationManager) { + IFederationManager federationManager, + IPluginManager pluginManager) { return new GitBlit( runtimeManager, @@ -171,7 +179,8 @@ public class DaggerModule { publicKeyManager, repositoryManager, projectManager, - federationManager); + federationManager, + pluginManager); } @Provides @Singleton GitBlitWebApp provideWebApplication( |