use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class ScriptingPlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
if (Lang.isNullOrEmpty(vmArgs)) {
masterEngine = Manager.getScriptEngine(ScriptingPlugin.class.getClassLoader());
} else {
masterEngine = Manager.getScriptEngine(Lang.split(vmArgs, Lang.SPACE, true), ScriptingPlugin.class.getClassLoader());
}
Feature aFeature = ScriptingEngine.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
PackageClassLoader pcl = (PackageClassLoader) ScriptingPlugin.class.getClassLoader();
pcl.registerObject(Registered.ApiSpi, new ScriptableApiSpi());
pcl.registerObject(Registered.ServiceSpi, new ScriptableApiServiceSpi());
File platform = new File(home, "platform");
// load platform
Reader pReader = null;
try {
pReader = new FileReader(new File(platform, "Platform.js"));
Bindings bindings = new SimpleBindings();
bindings.put(Vars.Core, new File(platform, Vars.Core).getAbsolutePath());
bindings.put(Vars.Tools, new File(platform, Vars.Tools).getAbsolutePath());
shared = new DefaultScriptingEngine(this, (ScriptObjectMirror) masterEngine.eval(pReader, bindings), server.getMapProvider());
} finally {
IOUtils.closeQuietly(pReader);
}
// add features
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = 2626039344401539390L;
@Override
public Class<?> type() {
return ScriptingEngine.class;
}
@Override
public Object get(ApiSpace space, String name) {
return shared;
}
@Override
public String provider() {
return ScriptingPlugin.this.getName();
}
@Override
public Plugin implementor() {
return ScriptingPlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class RemotePlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
Feature aFeature = Remote.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
PackageClassLoader pcl = (PackageClassLoader) RemotePlugin.class.getClassLoader();
pcl.registerObject(Protocol.http.name(), new HttpRemote(null));
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = -9012279234275100528L;
@Override
public Class<?> type() {
return Remote.class;
}
@Override
public Object get(ApiSpace space, String name) {
return remotes.get(createRemoteKey(name, space));
}
@Override
public String provider() {
return RemotePlugin.this.getName();
}
@Override
public Plugin implementor() {
return RemotePlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class DefaultPluginsRegistry method uninstall.
@Override
public void uninstall(File pluginFile) throws PluginRegistryException {
String pluginName = references.get(pluginFile.getAbsolutePath());
if (pluginName == null) {
return;
}
Plugin plugin = lockup(pluginName);
if (plugin == null) {
return;
}
uninstall(plugin, false);
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class DefaultPluginsRegistry method start.
@Override
public void start() throws PluginRegistryException {
Iterator<Plugin> ip = plugins.values().iterator();
try {
while (ip.hasNext()) {
Plugin plugin = ip.next();
if (plugin.isInitOnInstall()) {
continue;
}
server.tracer().log(Tracer.Level.Info, "\t Initialize {0}", plugin.getName());
if (plugin.isAsync()) {
new Thread() {
@Override
public void run() {
try {
_init(server, plugin.getHome(), plugin);
} catch (Exception ex) {
server.tracer().log(Tracer.Level.Error, Lang.BLANK, ex);
}
}
}.start();
} else {
_init(server, plugin.getHome(), plugin);
}
}
} catch (Exception e) {
throw new PluginRegistryException(e.getMessage(), e);
}
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class DefaultPluginsRegistry method create.
private Plugin create(String pluginName, File pluginFile, File pluginHome, long timestamp, JsonObject descriptor) throws Exception {
PluginClassLoader pcl = new PluginClassLoader(pluginName, InstallUtils.toUrls(pluginHome, Json.getArray(descriptor, ConfigKeys.Classpath)));
Plugin plugin = (Plugin) BeanUtils.create(pcl, Json.getObject(descriptor, ConfigKeys.Spi), this);
if (plugin == null) {
plugin = new MockPlugin();
}
if (!(plugin instanceof MockPlugin)) {
pcl.setPlugin(plugin);
}
plugin.setName(pluginName);
plugin.setHome(pluginHome);
plugin.setTitle(Json.getString(descriptor, ConfigKeys.Title));
plugin.setDescription(Json.getString(descriptor, ConfigKeys.Description));
System.setProperty(PluginsHomePrefix + plugin.getName() + PluginsHomePostfix, pluginHome.getAbsolutePath());
classLoaders.put(pluginName, pcl);
// init tracer
Tracer plTracer = null;
JsonObject oTracer = Json.getObject(descriptor, ConfigKeys.Tracer);
if (!Json.isNullOrEmpty(oTracer)) {
plTracer = (Tracer) BeanUtils.create(pcl, oTracer, this);
}
if (plTracer == null) {
plTracer = server.tracer();
} else {
plTracer.onInstall(plugin);
}
plugin.setTracer(plTracer);
return plugin;
}
Aggregations