Store plugin store when plugin is terminated.
[Sone.git] / 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();