/*
- * Sone - SonePlugin.java - Copyright © 2010 David Roden
+ * Sone - SonePlugin.java - Copyright © 2010–2013 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import net.pterodactylus.sone.core.Core;
import net.pterodactylus.sone.core.FreenetInterface;
+import net.pterodactylus.sone.core.PostProvider;
+import net.pterodactylus.sone.core.SoneProvider;
+import net.pterodactylus.sone.core.WebOfTrustUpdater;
+import net.pterodactylus.sone.data.PostBuilderFactory;
+import net.pterodactylus.sone.data.PostReplyBuilderFactory;
+import net.pterodactylus.sone.data.impl.DefaultPostBuilderFactory;
+import net.pterodactylus.sone.data.impl.DefaultPostReplyBuilderFactory;
import net.pterodactylus.sone.fcp.FcpInterface;
import net.pterodactylus.sone.freenet.PluginStoreConfigurationBackend;
import net.pterodactylus.sone.freenet.plugin.PluginConnector;
import net.pterodactylus.util.logging.Logging;
import net.pterodactylus.util.logging.LoggingListener;
import net.pterodactylus.util.version.Version;
+
+import com.google.common.eventbus.EventBus;
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Singleton;
+import com.google.inject.TypeLiteral;
+import com.google.inject.matcher.Matchers;
+import com.google.inject.name.Names;
+import com.google.inject.spi.InjectionListener;
+import com.google.inject.spi.TypeEncounter;
+import com.google.inject.spi.TypeListener;
+
import freenet.client.async.DatabaseDisabledException;
import freenet.l10n.BaseL10n.LANGUAGE;
import freenet.l10n.PluginL10n;
+import freenet.node.Node;
import freenet.pluginmanager.FredPlugin;
import freenet.pluginmanager.FredPluginBaseL10n;
import freenet.pluginmanager.FredPluginFCP;
Class<?> loggerClass = Logging.getLoggerClass(logRecord.getLoggerName());
int recordLevel = logRecord.getLevel().intValue();
if (recordLevel < Level.FINE.intValue()) {
- freenet.support.Logger.debug(loggerClass, String.format(logRecord.getMessage(), logRecord.getParameters()), logRecord.getThrown());
+ freenet.support.Logger.debug(loggerClass, logRecord.getMessage(), logRecord.getThrown());
} else if (recordLevel < Level.INFO.intValue()) {
- freenet.support.Logger.minor(loggerClass, String.format(logRecord.getMessage(), logRecord.getParameters()), logRecord.getThrown());
+ freenet.support.Logger.minor(loggerClass, logRecord.getMessage(), logRecord.getThrown());
} else if (recordLevel < Level.WARNING.intValue()) {
- freenet.support.Logger.normal(loggerClass, String.format(logRecord.getMessage(), logRecord.getParameters()), logRecord.getThrown());
+ freenet.support.Logger.normal(loggerClass, logRecord.getMessage(), logRecord.getThrown());
} else if (recordLevel < Level.SEVERE.intValue()) {
- freenet.support.Logger.warning(loggerClass, String.format(logRecord.getMessage(), logRecord.getParameters()), logRecord.getThrown());
+ freenet.support.Logger.warning(loggerClass, logRecord.getMessage(), logRecord.getThrown());
} else {
- freenet.support.Logger.error(loggerClass, String.format(logRecord.getMessage(), logRecord.getParameters()), logRecord.getThrown());
+ freenet.support.Logger.error(loggerClass, logRecord.getMessage(), logRecord.getThrown());
}
}
});
}
/** The version. */
- public static final Version VERSION = new Version(0, 7, 5);
+ public static final Version VERSION = new Version(0, 8, 4);
/** The logger. */
private static final Logger logger = Logging.getLogger(SonePlugin.class);
/** The web of trust connector. */
private WebOfTrustConnector webOfTrustConnector;
- /** The identity manager. */
- private IdentityManager identityManager;
-
//
// ACCESSORS
//
}
}
- boolean startupFailed = true;
- try {
- /* create freenet interface. */
- FreenetInterface freenetInterface = new FreenetInterface(pluginRespirator.getNode());
+ final Configuration startConfiguration = oldConfiguration;
+ final EventBus eventBus = new EventBus();
- /* create web of trust connector. */
- PluginConnector pluginConnector = new PluginConnector(pluginRespirator);
- webOfTrustConnector = new WebOfTrustConnector(pluginConnector);
- identityManager = new IdentityManager(webOfTrustConnector);
- identityManager.setContext("Sone");
+ /* Freenet injector configuration. */
+ AbstractModule freenetModule = new AbstractModule() {
- /* create core. */
- core = new Core(oldConfiguration, freenetInterface, identityManager);
+ @Override
+ @SuppressWarnings("synthetic-access")
+ protected void configure() {
+ bind(PluginRespirator.class).toInstance(SonePlugin.this.pluginRespirator);
+ bind(Node.class).toInstance(SonePlugin.this.pluginRespirator.getNode());
+ }
+ };
+ /* Sone injector configuration. */
+ AbstractModule soneModule = new AbstractModule() {
- /* create the web interface. */
- webInterface = new WebInterface(this);
- core.addCoreListener(webInterface);
+ @Override
+ protected void configure() {
+ bind(EventBus.class).toInstance(eventBus);
+ bind(Configuration.class).toInstance(startConfiguration);
+ bind(FreenetInterface.class).in(Singleton.class);
+ bind(PluginConnector.class).in(Singleton.class);
+ bind(WebOfTrustConnector.class).in(Singleton.class);
+ bind(WebOfTrustUpdater.class).in(Singleton.class);
+ bind(IdentityManager.class).in(Singleton.class);
+ bind(String.class).annotatedWith(Names.named("WebOfTrustContext")).toInstance("Sone");
+ bind(SonePlugin.class).toInstance(SonePlugin.this);
+ bind(FcpInterface.class).in(Singleton.class);
+ bind(PostBuilderFactory.class).to(DefaultPostBuilderFactory.class).in(Singleton.class);
+ bind(PostReplyBuilderFactory.class).to(DefaultPostReplyBuilderFactory.class).in(Singleton.class);
+ bind(SoneProvider.class).to(Core.class).in(Singleton.class);
+ bind(PostProvider.class).to(Core.class).in(Singleton.class);
+ bindListener(Matchers.any(), new TypeListener() {
+
+ @Override
+ public <I> void hear(TypeLiteral<I> typeLiteral, TypeEncounter<I> typeEncounter) {
+ typeEncounter.register(new InjectionListener<I>() {
+
+ @Override
+ public void afterInjection(I injectee) {
+ eventBus.register(injectee);
+ }
+ });
+ }
+ });
+ }
+
+ };
+ Injector injector = Guice.createInjector(freenetModule, soneModule);
+ core = injector.getInstance(Core.class);
- /* create FCP interface. */
- fcpInterface = new FcpInterface(core);
- core.setFcpInterface(fcpInterface);
+ /* create web of trust connector. */
+ webOfTrustConnector = injector.getInstance(WebOfTrustConnector.class);
- /* create the identity manager. */
- identityManager.addIdentityListener(core);
+ /* create FCP interface. */
+ fcpInterface = injector.getInstance(FcpInterface.class);
+ core.setFcpInterface(fcpInterface);
+
+ /* create the web interface. */
+ webInterface = injector.getInstance(WebInterface.class);
+
+ boolean startupFailed = true;
+ try {
/* start core! */
core.start();
webInterface.start();
webInterface.setFirstStart(firstStart);
webInterface.setNewConfig(newConfig);
- identityManager.start();
startupFailed = false;
} finally {
if (startupFailed) {
/* stop the core. */
core.stop();
- /* stop the identity manager. */
- identityManager.stop();
-
/* stop the web of trust connector. */
webOfTrustConnector.stop();
} catch (Throwable t1) {