diff --git a/config-layers/common/io/vertx/ext/mongo/MongoClientInstance.properties b/config-layers/common/io/vertx/ext/mongo/MongoClientInstance.properties new file mode 100644 index 0000000..8897e14 --- /dev/null +++ b/config-layers/common/io/vertx/ext/mongo/MongoClientInstance.properties @@ -0,0 +1,6 @@ +#/io/vertx/ext/mongo/MongoClientInstance +$class=io.vertx.reactivex.ext.mongo.MongoClientInstance + +vertx^=/io/vertx/core/VertxInstance.vertx +config=mongoConfig.json +enable=false diff --git a/config-layers/common/io/vertx/ext/mongo/mongoConfig.json b/config-layers/common/io/vertx/ext/mongo/mongoConfig.json new file mode 100644 index 0000000..e69de29 diff --git a/pom.xml b/pom.xml index 3ace308..b7532cb 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,11 @@ vertx-auth-oauth2 3.5.0 + + io.vertx + vertx-mongo-client + 3.5.0 + UTF-8 diff --git a/src/main/java/in/erail/schedular/SchedulerService.java b/src/main/java/in/erail/schedular/SchedulerService.java new file mode 100644 index 0000000..b8fe168 --- /dev/null +++ b/src/main/java/in/erail/schedular/SchedulerService.java @@ -0,0 +1,88 @@ +package in.erail.schedular; + +import in.erail.glue.annotation.StartService; +import io.reactivex.Observable; +import io.reactivex.Scheduler; +import io.reactivex.schedulers.Schedulers; +import java.util.concurrent.TimeUnit; + +/** + * + * @author vinay + */ +public abstract class SchedulerService { + + private SchedulerType mSchedularType; + private TimeUnit mTimeUnit; + private long mInterval; + private boolean mRecurring; + + @StartService + void start() { + + Scheduler scheduler; + + switch (mSchedularType) { + case COMPUTATION: + scheduler = Schedulers.computation(); + break; + case IO: + scheduler = Schedulers.io(); + break; + case NEWTHREAD: + scheduler = Schedulers.newThread(); + break; + case SINGLE: + scheduler = Schedulers.single(); + break; + default: + scheduler = Schedulers.io(); + } + + if (isRecurring()) { + Observable + .interval(getInterval(), getTimeUnit(), scheduler) + .subscribe(this::performScheduledTask); + } else { + Observable + .timer(getInterval(), getTimeUnit(), scheduler) + .subscribe(this::performScheduledTask); + } + } + + public void performScheduledTask(Long pId) { + } + + public SchedulerType getSchedularType() { + return mSchedularType; + } + + public void setSchedularType(SchedulerType pSchedularType) { + this.mSchedularType = pSchedularType; + } + + public TimeUnit getTimeUnit() { + return mTimeUnit; + } + + public void setTimeUnit(TimeUnit pTimeUnit) { + this.mTimeUnit = pTimeUnit; + } + + public long getInterval() { + return mInterval; + } + + public void setInterval(long pInterval) { + this.mInterval = pInterval; + } + + public boolean isRecurring() { + return mRecurring; + } + + public void setRecurring(boolean pRecurring) { + this.mRecurring = pRecurring; + } + +} diff --git a/src/main/java/in/erail/schedular/SchedulerType.java b/src/main/java/in/erail/schedular/SchedulerType.java new file mode 100644 index 0000000..336373a --- /dev/null +++ b/src/main/java/in/erail/schedular/SchedulerType.java @@ -0,0 +1,12 @@ +package in.erail.schedular; + +/** + * + * @author vinay + */ +public enum SchedulerType { + COMPUTATION, + IO, + NEWTHREAD, + SINGLE; +} diff --git a/src/main/java/io/vertx/reactivex/ext/mongo/MongoClientInstance.java b/src/main/java/io/vertx/reactivex/ext/mongo/MongoClientInstance.java new file mode 100644 index 0000000..f9aa3fe --- /dev/null +++ b/src/main/java/io/vertx/reactivex/ext/mongo/MongoClientInstance.java @@ -0,0 +1,57 @@ +package io.vertx.reactivex.ext.mongo; + +import in.erail.glue.annotation.StartService; +import io.vertx.core.json.JsonObject; +import io.vertx.reactivex.core.Vertx; + +/** + * + * @author vinay + */ +public class MongoClientInstance { + + private MongoClient mMongoClient; + private Vertx mVertx; + private JsonObject mConfig; + private boolean mEnable; + + @StartService + public void start() { + if (isEnable()) { + mMongoClient = MongoClient.createShared(getVertx(), getConfig()); + } + } + + public MongoClient getMongoClient() { + return mMongoClient; + } + + public void setMongoClient(MongoClient pMongoClient) { + this.mMongoClient = pMongoClient; + } + + public Vertx getVertx() { + return mVertx; + } + + public void setVertx(Vertx pVertx) { + this.mVertx = pVertx; + } + + public JsonObject getConfig() { + return mConfig; + } + + public void setConfig(JsonObject pConfig) { + this.mConfig = pConfig; + } + + public boolean isEnable() { + return mEnable; + } + + public void setEnable(boolean pEnable) { + this.mEnable = pEnable; + } + +}