Store plugin store when plugin is terminated.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 13 Oct 2010 13:14:59 +0000 (15:14 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 13 Oct 2010 13:14:59 +0000 (15:14 +0200)
src/main/java/net/pterodactylus/sone/main/SonePlugin.java

index 7ac2c83..b253d41 100644 (file)
@@ -41,6 +41,7 @@ import freenet.pluginmanager.FredPluginL10n;
 import freenet.pluginmanager.FredPluginThreadless;
 import freenet.pluginmanager.FredPluginVersioned;
 import freenet.pluginmanager.PluginRespirator;
+import freenet.pluginmanager.PluginStore;
 
 /**
  * This class interfaces with Freenet. It is the class that is loaded by the
@@ -73,6 +74,9 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10
        /** The l10n helper. */
        private PluginL10n l10n;
 
+       /** The plugin store. */
+       private PluginStore pluginStore;
+
        //
        // ACCESSORS
        //
@@ -118,7 +122,7 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10
                /* create a configuration. */
                Configuration configuration;
                try {
-                       configuration = new Configuration(new PluginStoreConfigurationBackend(pluginRespirator.getStore()));
+                       configuration = new Configuration(new PluginStoreConfigurationBackend(pluginStore = pluginRespirator.getStore()));
                } catch (DatabaseDisabledException dde1) {
                        logger.log(Level.WARNING, "Could not load plugin store, using XML files.");
                        try {
@@ -157,6 +161,11 @@ public class SonePlugin implements FredPlugin, FredPluginL10n, FredPluginBaseL10
                core.stop();
 
                /* TODO wait for core to stop? */
+               try {
+                       pluginRespirator.putStore(pluginStore);
+               } catch (DatabaseDisabledException dde1) {
+                       logger.log(Level.WARNING, "Could not store plugin store, database is disabled.", dde1);
+               }
 
                /* shutdown logger. */
                Logging.shutdown();