Skip to content
This repository has been archived by the owner on Apr 24, 2021. It is now read-only.

Commit

Permalink
Merge pull request #2 from freenet-mobile/sideloaded-plugin-support
Browse files Browse the repository at this point in the history
Support starting and registering pluins sideloaded.
  • Loading branch information
desyncr authored Aug 29, 2020
2 parents 7efb9a6 + d7dfbab commit 9fa8cc6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/freenet/node/NodeStarter.java
Original file line number Diff line number Diff line change
Expand Up @@ -585,9 +585,11 @@ public static Node createTestNode(TestNodeParameters params) throws NodeInitExce
}

// experimental osgi support
public static void start_osgi(String[] args) {
public static Node start_osgi(String[] args) {
nodestarter_osgi = new NodeStarter();
nodestarter_osgi.start(args);

return nodestarter_osgi.node;
}

// experimental osgi support
Expand Down
27 changes: 27 additions & 0 deletions src/freenet/pluginmanager/PluginManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,33 @@ public PluginInfoWrapper startPluginFreenet(final String filename, boolean store
return realStartPlugin(new PluginDownLoaderFreenet(client, node, false), filename, store, false);
}

/**
* Registers an externally loaded plugin.
*
* @param plug Plugin instance.
* @return
*/
public PluginInfoWrapper startPlugin(FredPlugin plug) {
final String filename = plug.getClass().getName();
Logger.normal(this, "Loading plugin: " + filename);
PluginInfoWrapper pi = null;
try {
pi = new PluginInfoWrapper(node, plug, filename, true);
PluginHandler.startPlugin(PluginManager.this, pi);
loadedPlugins.addLoadedPlugin(pi);
loadedPlugins.removeFailedPlugin(filename);
Logger.normal(this, "Plugin loaded: " + filename);
} catch (Throwable e) {
Logger.error(this, "Could not load plugin " + filename + " : " + e, e);
System.err.println("Could not load plugin " + filename + " : " + e);
e.printStackTrace();
System.err.println("Plugin "+filename+" is broken, but we want to retry after next startup");
Logger.error(this, "Plugin "+filename+" is broken, but we want to retry after next startup");
}

return pi;
}

private PluginInfoWrapper realStartPlugin(final PluginDownLoader<?> pdl, final String filename, final boolean store, boolean alwaysDownload) {
if (!enabled) throw new IllegalStateException("Plugins disabled");
if(filename.trim().length() == 0)
Expand Down

0 comments on commit 9fa8cc6

Please sign in to comment.