use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class ElasticSearchPlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
Feature aFeature = Indexer.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = -9012279234275100528L;
@Override
public Class<?> type() {
return Indexer.class;
}
@Override
public Object get(ApiSpace space, String name) {
String remotePluginName = Json.getString(remote, Spec.RemotePlugin);
String remoteObjectId = Json.getString(remote, Spec.RemoteObject);
if (Lang.isNullOrEmpty(remotePluginName) || Lang.isNullOrEmpty(remoteObjectId)) {
return null;
}
Plugin pRemote = server.getPluginsRegistry().lockup(Json.getString(remote, Spec.RemotePlugin));
if (pRemote == null) {
return null;
}
PackageClassLoader pcl = (PackageClassLoader) pRemote.getClass().getClassLoader();
Remote iRemote = (Remote) pcl.lookupObject(Json.getString(remote, Spec.RemoteObject));
if (iRemote == null) {
return null;
}
// build basic auth and url
String token = buildAuthToken(space, name);
if (Lang.isNullOrEmpty(token)) {
return null;
}
String url = buildUrl(space, name);
if (Lang.isNullOrEmpty(url)) {
return null;
}
return new ElasticSearchIndexer(iRemote, url, token, tracer());
}
@Override
public String provider() {
return ElasticSearchPlugin.this.getName();
}
@Override
public Plugin implementor() {
return ElasticSearchPlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class SmtpMessengerPlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
Feature aFeature = Messenger.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = 3585173809402444745L;
@Override
public Class<?> type() {
return Messenger.class;
}
@Override
public Object get(ApiSpace space, String name) {
return ((RecyclableMessenger) (space.getRecyclable(createKey(name)))).messenger();
}
@Override
public String provider() {
return SmtpMessengerPlugin.this.getName();
}
@Override
public Plugin implementor() {
return SmtpMessengerPlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class FileSystemStoragePlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
Feature aFeature = Storage.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
if (!Lang.isNullOrEmpty(root)) {
fRoot = new File(root);
}
if (!fRoot.exists()) {
fRoot.mkdirs();
}
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = -9012279234275100528L;
@Override
public Class<?> type() {
return Storage.class;
}
@Override
public Object get(ApiSpace space, String name) {
String mount = mounts.get(createStorageKey(name, space));
if (mount == null) {
return null;
}
return new FileSystemStorage(mount, new File(fRoot, mount));
}
@Override
public String provider() {
return FileSystemStoragePlugin.this.getName();
}
@Override
public Plugin implementor() {
return FileSystemStoragePlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class MemCachedPlugin method init.
@Override
public void init(final ApiServer server) throws Exception {
Feature aFeature = Cache.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = 3585173809402444745L;
@Override
public Class<?> type() {
return Cache.class;
}
@Override
public Object get(ApiSpace space, String name) {
return new MemCachedCache(((RecyclableCacheClient) (space.getRecyclable(createKey(name)))).client());
}
@Override
public String provider() {
return MemCachedPlugin.this.getName();
}
@Override
public Plugin implementor() {
return MemCachedPlugin.this;
}
});
}
use of com.bluenimble.platform.plugins.Plugin in project serverless by bluenimble.
the class MongoDatabasePlugin method init.
// private int weight;
@Override
public void init(final ApiServer server) throws Exception {
// weight = server.weight ();
Feature aFeature = Database.class.getAnnotation(Feature.class);
if (aFeature == null || Lang.isNullOrEmpty(aFeature.name())) {
return;
}
feature = aFeature.name();
// add features
server.addFeature(new ServerFeature() {
private static final long serialVersionUID = 2626039344401539390L;
@Override
public Class<?> type() {
return Database.class;
}
@Override
public Object get(ApiSpace space, String name) {
return new MongoDatabaseImpl(MongoDatabasePlugin.this.acquire(space, name), tracer());
}
@Override
public Plugin implementor() {
return MongoDatabasePlugin.this;
}
@Override
public String provider() {
return MongoDatabasePlugin.this.getName();
}
});
codecRegistry = CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(), CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
}
Aggregations