]> source.dussan.org Git - gitblit.git/commit
Add plugins/extension infrastructure
authorDavid Ostrovsky <david@ostrovsky.org>
Mon, 10 Mar 2014 00:50:49 +0000 (01:50 +0100)
committerJames Moger <james.moger@gitblit.com>
Thu, 10 Apr 2014 22:58:09 +0000 (18:58 -0400)
commit84f406bfd20ec2076cf7616e7f396ad480513bc4
tree661045f193871d676c1c06b996b831469cfc067c
parent261ddf0fcf9a55fbb5b4e7c6c2cdb4c2f8c860fe
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
15 files changed:
.classpath
build.moxie
gitblit.iml
src/main/distrib/data/gitblit.properties
src/main/java/WEB-INF/web.xml
src/main/java/com/gitblit/DaggerModule.java
src/main/java/com/gitblit/FederationClient.java
src/main/java/com/gitblit/GitBlit.java
src/main/java/com/gitblit/dagger/DaggerFilter.java
src/main/java/com/gitblit/manager/GitblitManager.java
src/main/java/com/gitblit/manager/IGitblit.java
src/main/java/com/gitblit/manager/IPluginManager.java [new file with mode: 0644]
src/main/java/com/gitblit/manager/PluginManager.java [new file with mode: 0644]
src/main/java/com/gitblit/servlet/GitblitContext.java
src/main/java/com/gitblit/servlet/SyndicationFilter.java