From cf4004e8d64399f6fc722fcb313eaaae6a65fa20 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 17 Apr 2014 18:08:12 -0400
Subject: [PATCH] Add plugin (un)install lifecycle methods

---
 src/main/java/com/gitblit/extensions/GitblitPlugin.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gitblit/extensions/GitblitPlugin.java b/src/main/java/com/gitblit/extensions/GitblitPlugin.java
index 129f584..d0603eb 100644
--- a/src/main/java/com/gitblit/extensions/GitblitPlugin.java
+++ b/src/main/java/com/gitblit/extensions/GitblitPlugin.java
@@ -17,11 +17,45 @@
 
 import ro.fortsoft.pf4j.Plugin;
 import ro.fortsoft.pf4j.PluginWrapper;
+import ro.fortsoft.pf4j.Version;
 
+/**
+ * Parent class of Gitblit plugins.
+ *
+ * @author James Moger
+ * @since 1.5.0
+ */
 public abstract class GitblitPlugin extends Plugin {
 
 	public GitblitPlugin(PluginWrapper wrapper) {
 		super(wrapper);
 	}
 
+	/**
+	 * Called after a plugin as been loaded but before it is started for the
+	 * first time.  This allows the plugin to install settings or perform any
+	 * other required first-time initialization.
+	 *
+	 * @since 1.5.0
+	 */
+	public abstract void onInstall();
+
+	/**
+	 * Called after an updated plugin has been installed but before the updated
+	 * plugin is started.  The oldVersion is passed as a parameter in the event
+	 * that special processing needs to be executed.
+	 *
+	 * @param oldVersion
+	 * @since 1.5.0
+	 */
+	public abstract void onUpgrade(Version oldVersion);
+
+	/**
+	 * Called before a plugin has been unloaded and deleted from the system.
+	 * This allows a plugin to remove any settings it may have created or
+	 * perform and other necessary cleanup.
+	 *
+	 * @since 1.5.0
+	 */
+	public abstract void onUninstall();
 }

--
Gitblit v1.9.1