From bc13e8490e6e34799bfb5a25397fd78b0a55c72a Mon Sep 17 00:00:00 2001 From: Vinay Date: Fri, 10 Nov 2017 01:21:31 +0000 Subject: [PATCH 1/9] Added base configuration artificate to be used in other project --- .gitignore | 6 +- pom.xml | 256 +++++++++++++++++++++++-------------------- src/assembly/dep.xml | 15 +++ 3 files changed, 156 insertions(+), 121 deletions(-) create mode 100644 src/assembly/dep.xml diff --git a/.gitignore b/.gitignore index 076a451..7b6bcfd 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,8 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -/target/ \ No newline at end of file +/target/ +.classpath +.project +nbactions.xml +.settings diff --git a/pom.xml b/pom.xml index bf5dfde..3ace308 100644 --- a/pom.xml +++ b/pom.xml @@ -1,124 +1,140 @@ - 4.0.0 - in.erail - api-framwork - 1.0-SNAPSHOT - jar - - - in.erail - glue - 1.0-SNAPSHOT - - - io.vertx - vertx-core - 3.5.0 - - - io.vertx - vertx-rx-java2 - 3.5.0 - - - io.vertx - vertx-unit - 3.5.0 - test - - - io.vertx - vertx-web-api-contract - 3.5.0 - - - junit - junit - 4.12 - test - - - org.hamcrest - hamcrest-core - 1.3 - test - - - io.vertx - vertx-web - 3.5.0 - - - io.vertx - vertx-hazelcast - 3.5.0 - - - io.vertx - vertx-auth-jwt - 3.5.0 - - - io.vertx - vertx-auth-oauth2 - 3.5.0 - - - - UTF-8 - 1.8 - 1.8 - -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4j2LogDelegateFactory -Dglue.layers=${project.basedir}/config-layers/common,${project.basedir}/config-layers/test - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.20.1 - - - org.jacoco - jacoco-maven-plugin - 0.7.9 - - - prepare-agent - - prepare-agent - - - - report - prepare-package - - report - - - - post-unit-test - test - - report - - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + in.erail + api-framwork + 1.0-SNAPSHOT + jar + + + in.erail + glue + 1.0-SNAPSHOT + + + io.vertx + vertx-core + 3.5.0 + + + io.vertx + vertx-rx-java2 + 3.5.0 + + + io.vertx + vertx-web-api-contract + 3.5.0 + + + io.vertx + vertx-unit + 3.5.0 + test + + + junit + junit + 4.12 + test + + + org.hamcrest + hamcrest-core + 1.3 + test + + + io.vertx + vertx-web + 3.5.0 + + + io.vertx + vertx-hazelcast + 3.5.0 + + + io.vertx + vertx-auth-jwt + 3.5.0 + + + io.vertx + vertx-auth-oauth2 + 3.5.0 + + + + UTF-8 + 1.8 + 1.8 + -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4j2LogDelegateFactory -Dglue.layers=${project.basedir}/config-layers/common,${project.basedir}/config-layers/test + + + + + maven-assembly-plugin + 2.5.3 + + src/assembly/dep.xml + + + + create-archive + package + + single + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.20.1 + + + org.jacoco + jacoco-maven-plugin + 0.7.9 + + + prepare-agent + + prepare-agent + + + + report + prepare-package + + report + + + + post-unit-test + test + + report + + + - target/jacoco.exec - - target/jacoco-ut - - - - - - target/jacoco.exec - - - - - - api-framwork + target/jacoco.exec + + target/jacoco-ut + + + + + + target/jacoco.exec + + + + + + api-framwork \ No newline at end of file diff --git a/src/assembly/dep.xml b/src/assembly/dep.xml new file mode 100644 index 0000000..66cab76 --- /dev/null +++ b/src/assembly/dep.xml @@ -0,0 +1,15 @@ + + + config + + zip + + + + ${project.basedir}/config-layers/common + /config + + + \ No newline at end of file From 7efe76d4721a8bbea6574f84f6b12c0f90199785 Mon Sep 17 00:00:00 2001 From: Vinay Date: Fri, 10 Nov 2017 12:17:52 +0000 Subject: [PATCH 2/9] Refactored SockJS Code --- .../in/erail/common/FramworkConstants.java | 5 ++ .../sockjs/DefaultBridgeEventHandler.java | 77 ++++++++++++++++++- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/src/main/java/in/erail/common/FramworkConstants.java b/src/main/java/in/erail/common/FramworkConstants.java index 15b5ef9..655edb1 100644 --- a/src/main/java/in/erail/common/FramworkConstants.java +++ b/src/main/java/in/erail/common/FramworkConstants.java @@ -22,4 +22,9 @@ public static class Json { } } + + public static class SockJS { + public static final String BRIDGE_EVENT_RAW_MESSAGE_ADDRESS = "address"; + } + } diff --git a/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java b/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java index f32e79c..2da1c89 100644 --- a/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java +++ b/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java @@ -1,6 +1,8 @@ package io.vertx.reactivex.ext.web.handler.sockjs; +import in.erail.common.FramworkConstants; import io.vertx.core.Handler; +import io.vertx.core.json.JsonObject; /** * @@ -10,7 +12,80 @@ public class DefaultBridgeEventHandler implements Handler { @Override public void handle(BridgeEvent pEvent) { + + JsonObject rawMessage = pEvent.getRawMessage(); + String address = null; + + if (rawMessage != null) { + address = rawMessage.getString(FramworkConstants.SockJS.BRIDGE_EVENT_RAW_MESSAGE_ADDRESS); + } + + switch (pEvent.type()) { + case PUBLISH: + handlePublish(address, pEvent); + break; + case RECEIVE: + handleRecieve(address, pEvent); + break; + case REGISTER: + handleRegister(address, pEvent); + break; + case SEND: + handleSend(address, pEvent); + break; + case SOCKET_CLOSED: + handleSocketClose(pEvent); + break; + case SOCKET_CREATED: + handleSocketCreated(pEvent); + break; + case SOCKET_IDLE: + handleSocketIdle(pEvent); + break; + case SOCKET_PING: + handleSocketPing(pEvent); + break; + case UNREGISTER: + handleUnregister(address, pEvent); + break; + } + + } + + public void handlePublish(String pAddress, BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleRecieve(String pAddress, BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleRegister(String pAddress, BridgeEvent pEvent) { pEvent.complete(true); } - + + public void handleSend(String pAddress, BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleSocketClose(BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleSocketCreated(BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleSocketIdle(BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleSocketPing(BridgeEvent pEvent) { + pEvent.complete(true); + } + + public void handleUnregister(String pAddress, BridgeEvent pEvent) { + pEvent.complete(true); + } + } From efd2b1e8e5960d8f6a86be36fd26b3a6719bb9b9 Mon Sep 17 00:00:00 2001 From: Vinay Date: Sat, 11 Nov 2017 22:50:40 +0000 Subject: [PATCH 3/9] Minor fix --- .../handler/sockjs/BridgeOptions.properties | 1 + .../web/handler/sockjs/BridgeOptionsExt.java | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeOptions.properties b/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeOptions.properties index bc842d4..ade8678 100644 --- a/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeOptions.properties +++ b/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeOptions.properties @@ -7,3 +7,4 @@ inboundAddressRegex= outboundAddressRegex= inboundRequiredAuthority= outboundRequiredAuthority= +log=true diff --git a/src/main/java/io/vertx/ext/web/handler/sockjs/BridgeOptionsExt.java b/src/main/java/io/vertx/ext/web/handler/sockjs/BridgeOptionsExt.java index 73d87f0..1b72f11 100644 --- a/src/main/java/io/vertx/ext/web/handler/sockjs/BridgeOptionsExt.java +++ b/src/main/java/io/vertx/ext/web/handler/sockjs/BridgeOptionsExt.java @@ -1,7 +1,10 @@ package io.vertx.ext.web.handler.sockjs; +import com.google.common.base.Joiner; +import com.google.common.base.MoreObjects; import in.erail.glue.annotation.StartService; import java.util.List; +import org.apache.logging.log4j.Logger; /** * @@ -9,6 +12,7 @@ */ public class BridgeOptionsExt extends BridgeOptions { + private Logger mLog; private List mInboundAddress; private List mOutboundAddress; @@ -19,7 +23,20 @@ public class BridgeOptionsExt extends BridgeOptions { private List mOutboundRequiredAuthority; @StartService - void start() { + public void start() { + + getLog().debug(() -> { + return MoreObjects + .toStringHelper(BridgeOptionsExt.class.getCanonicalName()) + .add("InboundAddress", Joiner.on(",").join(mInboundAddress)) + .add("OutboundAddress", Joiner.on(",").join(mOutboundAddress)) + .add("InboundAddressRegex", Joiner.on(",").join(mInboundAddressRegex)) + .add("OutboundAddressRegex", Joiner.on(",").join(mOutboundAddressRegex)) + .add("InboundRequiredAuthority", Joiner.on(",").join(mInboundRequiredAuthority)) + .add("OutboundRequiredAuthority", Joiner.on(",").join(mOutboundRequiredAuthority)) + .toString(); + }); + getInboundAddress() .stream() .forEachOrdered((rule) -> { @@ -117,4 +134,12 @@ public void setOutboundRequiredAuthority(List pOutboundRequiredAuthority this.mOutboundRequiredAuthority = pOutboundRequiredAuthority; } + public Logger getLog() { + return mLog; + } + + public void setLog(Logger pLog) { + this.mLog = pLog; + } + } From 5c07267f552ecfa1aa73a201fcf7b4d1d65d2d41 Mon Sep 17 00:00:00 2001 From: Vinay Date: Sat, 11 Nov 2017 23:36:56 +0000 Subject: [PATCH 4/9] Refactored BridgeEventHandler --- .../sockjs/BridgeEventHandler.properties | 5 +- ...ntHandler.java => BridgeEventHandler.java} | 51 +++++++++++++++++-- 2 files changed, 50 insertions(+), 6 deletions(-) rename src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/{DefaultBridgeEventHandler.java => BridgeEventHandler.java} (58%) diff --git a/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeEventHandler.properties b/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeEventHandler.properties index 28f9223..fa51ff2 100644 --- a/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeEventHandler.properties +++ b/config-layers/common/io/vertx/ext/web/handler/sockjs/BridgeEventHandler.properties @@ -1,2 +1,5 @@ #/io/vertx/ext/web/handler/sockjs/BridgeEventHandler -$class=io.vertx.reactivex.ext.web.handler.sockjs.DefaultBridgeEventHandler +$class=io.vertx.reactivex.ext.web.handler.sockjs.BridgeEventHandler + +addressAllowedToRegister= +addressAllowedToRegisterRegex= diff --git a/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java b/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/BridgeEventHandler.java similarity index 58% rename from src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java rename to src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/BridgeEventHandler.java index 2da1c89..76688ad 100644 --- a/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/DefaultBridgeEventHandler.java +++ b/src/main/java/io/vertx/reactivex/ext/web/handler/sockjs/BridgeEventHandler.java @@ -3,12 +3,16 @@ import in.erail.common.FramworkConstants; import io.vertx.core.Handler; import io.vertx.core.json.JsonObject; +import java.util.List; /** * * @author vinay */ -public class DefaultBridgeEventHandler implements Handler { +public class BridgeEventHandler implements Handler { + + private List mAddressAllowedToRegister; + private List mAddressAllowedToRegisterRegex; @Override public void handle(BridgeEvent pEvent) { @@ -52,15 +56,52 @@ public void handle(BridgeEvent pEvent) { } - public void handlePublish(String pAddress, BridgeEvent pEvent) { - pEvent.complete(true); + public void handleRegister(String pAddress, BridgeEvent pEvent) { + if (mAddressAllowedToRegister.isEmpty() && mAddressAllowedToRegisterRegex.isEmpty()) { + pEvent.complete(true); + return; + } + + if (!(matchAddress(pAddress) || matchAddressRegex(pAddress))) { + pEvent.fail("Can't subscribe to topic : " + pAddress); + } else { + pEvent.complete(true); + } } - public void handleRecieve(String pAddress, BridgeEvent pEvent) { + private boolean matchAddress(String pAddress) { + return mAddressAllowedToRegister + .stream() + .anyMatch((allowedAddress) -> (pAddress.equals(allowedAddress))); + } + + private boolean matchAddressRegex(String pAddress) { + return mAddressAllowedToRegisterRegex + .stream() + .anyMatch((allowedAddress) -> (pAddress.matches(allowedAddress))); + } + + public List getAddressAllowedToRegister() { + return mAddressAllowedToRegister; + } + + public void setAddressAllowedToRegister(List pAddressAllowedToRegister) { + this.mAddressAllowedToRegister = pAddressAllowedToRegister; + } + + public List getAddressAllowedToRegisterRegex() { + return mAddressAllowedToRegisterRegex; + } + + public void setAddressAllowedToRegisterRegex(List pAddressAllowedToRegisterRegex) { + this.mAddressAllowedToRegisterRegex = pAddressAllowedToRegisterRegex; + } + + public void handlePublish(String pAddress, BridgeEvent pEvent) { pEvent.complete(true); } - public void handleRegister(String pAddress, BridgeEvent pEvent) { + public void handleRecieve(String pAddress, BridgeEvent pEvent) { pEvent.complete(true); } From 25437e2291ef6d417c1fd4339a2a2ce83889e5e1 Mon Sep 17 00:00:00 2001 From: Vinay Date: Sun, 12 Nov 2017 16:04:51 +0000 Subject: [PATCH 5/9] Glue Code Refactoring --- src/main/java/io/vertx/core/VerticalDeployer.java | 2 +- src/test/java/in/erail/service/BroadcastServiceTest.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/vertx/core/VerticalDeployer.java b/src/main/java/io/vertx/core/VerticalDeployer.java index 1617a2c..96023b9 100644 --- a/src/main/java/io/vertx/core/VerticalDeployer.java +++ b/src/main/java/io/vertx/core/VerticalDeployer.java @@ -19,7 +19,7 @@ public void start() { Arrays .stream(getVerticals()) .forEach((path) -> { - AbstractVerticle av = Glue.instance().resolve(path, AbstractVerticle.class); + AbstractVerticle av = Glue.instance().resolve(path); getVertx().getDelegate().deployVerticle(av, getDeploymentOptions()); }); } diff --git a/src/test/java/in/erail/service/BroadcastServiceTest.java b/src/test/java/in/erail/service/BroadcastServiceTest.java index 4b21a0f..0e77d12 100644 --- a/src/test/java/in/erail/service/BroadcastServiceTest.java +++ b/src/test/java/in/erail/service/BroadcastServiceTest.java @@ -1,7 +1,6 @@ package in.erail.service; import com.google.common.net.HttpHeaders; -import in.erail.common.FramworkConstants; import in.erail.server.Server; import in.erail.test.TestConstants; import org.junit.Test; @@ -30,7 +29,7 @@ public void testProcess(TestContext context) { Async async = context.async(2); - Server server = Glue.instance().resolve("/in/erail/server/Server", Server.class); + Server server = Glue.instance().resolve("/in/erail/server/Server"); //API Reply server.getVertx().eventBus().consumer("testTopic", (event) -> { From edd854461922f4e53ed409fa7a048cc9545fe3d2 Mon Sep 17 00:00:00 2001 From: Vinay Date: Sun, 12 Nov 2017 16:11:10 +0000 Subject: [PATCH 6/9] Minor refactoring --- src/main/java/in/erail/route/OpenAPI3RouteBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java b/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java index 7956e83..da7a8b4 100644 --- a/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java +++ b/src/main/java/in/erail/route/OpenAPI3RouteBuilder.java @@ -56,11 +56,11 @@ public void process(RoutingContext pRequestContext, String pServiceUniqueId) { .setStatusCode(200) .end(reply.result().body().toString()); } else { - getLog().debug(() -> "Error in reply:" + reply.cause().toString()); + getLog().error(() -> "Error in reply:" + reply.cause().toString()); pRequestContext .response() .setStatusCode(400) - .end(); + .end(reply.cause().toString()); } }); From 0fb395383318e645802274d92b4c842b7f014131 Mon Sep 17 00:00:00 2001 From: Vinay Date: Sun, 12 Nov 2017 19:21:32 +0000 Subject: [PATCH 7/9] Added Mongo and Scheduler --- .../ext/mongo/MongoClientInstance.properties | 6 ++ .../io/vertx/ext/mongo/mongoConfig.json | 0 pom.xml | 5 ++ .../in/erail/schedular/SchedulerService.java | 88 +++++++++++++++++++ .../in/erail/schedular/SchedulerType.java | 12 +++ .../ext/mongo/MongoClientInstance.java | 57 ++++++++++++ 6 files changed, 168 insertions(+) create mode 100644 config-layers/common/io/vertx/ext/mongo/MongoClientInstance.properties create mode 100644 config-layers/common/io/vertx/ext/mongo/mongoConfig.json create mode 100644 src/main/java/in/erail/schedular/SchedulerService.java create mode 100644 src/main/java/in/erail/schedular/SchedulerType.java create mode 100644 src/main/java/io/vertx/reactivex/ext/mongo/MongoClientInstance.java 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; + } + +} From 0ae4fc19d67eb67ee4a2ac220d4efb6a371cc5d2 Mon Sep 17 00:00:00 2001 From: Vinay Date: Mon, 13 Nov 2017 16:52:27 +0000 Subject: [PATCH 8/9] Added dataloader component --- .../ext/mongo/LoadMongoDataService.properties | 27 ++++++++ .../common/io/vertx/ext/mongo/data.json | 1 + .../io/vertx/ext/mongo/mongoConfig.json | 4 ++ .../ext/mongo/LoadMongoDataService.java | 67 +++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 config-layers/common/io/vertx/ext/mongo/LoadMongoDataService.properties create mode 100644 config-layers/common/io/vertx/ext/mongo/data.json create mode 100644 src/main/java/io/vertx/reactivex/ext/mongo/LoadMongoDataService.java diff --git a/config-layers/common/io/vertx/ext/mongo/LoadMongoDataService.properties b/config-layers/common/io/vertx/ext/mongo/LoadMongoDataService.properties new file mode 100644 index 0000000..41ff4c5 --- /dev/null +++ b/config-layers/common/io/vertx/ext/mongo/LoadMongoDataService.properties @@ -0,0 +1,27 @@ +#/io/vertx/ext/mongo/LoadMongoDataService +$class=io.vertx.reactivex.ext.mongo.LoadMongoDataService + +#Example Data JSON +#{ +# "test": [ +# { +# "name": "data1" +# }, +# { +# "name": "data2" +# } +# ], +# "test2": [ +# { +# "name": "data1" +# }, +# { +# "name": "data2" +# } +# ] +#} + +enable=false +mongoClient^=/io/vertx/ext/mongo/MongoClientInstance.mongoClient +data=data.json + diff --git a/config-layers/common/io/vertx/ext/mongo/data.json b/config-layers/common/io/vertx/ext/mongo/data.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/config-layers/common/io/vertx/ext/mongo/data.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/config-layers/common/io/vertx/ext/mongo/mongoConfig.json b/config-layers/common/io/vertx/ext/mongo/mongoConfig.json index e69de29..a490406 100644 --- a/config-layers/common/io/vertx/ext/mongo/mongoConfig.json +++ b/config-layers/common/io/vertx/ext/mongo/mongoConfig.json @@ -0,0 +1,4 @@ +{ + "db_name" : "", + "connection_string" : "mongodb://localhost:27017" +} diff --git a/src/main/java/io/vertx/reactivex/ext/mongo/LoadMongoDataService.java b/src/main/java/io/vertx/reactivex/ext/mongo/LoadMongoDataService.java new file mode 100644 index 0000000..1b6c1bf --- /dev/null +++ b/src/main/java/io/vertx/reactivex/ext/mongo/LoadMongoDataService.java @@ -0,0 +1,67 @@ +package io.vertx.reactivex.ext.mongo; + +import in.erail.glue.annotation.StartService; +import io.reactivex.Observable; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import java.util.Set; + +/** + * + * @author vinay + */ +public class LoadMongoDataService { + + private MongoClient mMongoClient; + private JsonObject mData; + private boolean mEnable; + + @StartService + public void start() { + + if (!isEnable()) { + return; + } + + Set collections = mData.fieldNames(); + for (String collection : collections) { + mMongoClient + .rxDropCollection(collection) + .andThen(mMongoClient.rxCreateCollection(collection)) + .blockingAwait(); + + JsonArray data = mData.getJsonArray(collection); + + Observable + .fromIterable(data) + .map(m -> (JsonObject) m) + .doOnNext((t) -> { + mMongoClient.rxSave(collection, t).blockingGet(); + }).blockingSubscribe(); + } + } + + public MongoClient getMongoClient() { + return mMongoClient; + } + + public void setMongoClient(MongoClient pMongoClient) { + this.mMongoClient = pMongoClient; + } + + public JsonObject getData() { + return mData; + } + + public void setData(JsonObject pData) { + this.mData = pData; + } + + public boolean isEnable() { + return mEnable; + } + + public void setEnable(boolean pEnable) { + this.mEnable = pEnable; + } +} From b8dc3fbbdf16c4533aaf45b47888e7c3274edb64 Mon Sep 17 00:00:00 2001 From: Vinay Date: Wed, 22 Nov 2017 17:42:51 +0000 Subject: [PATCH 9/9] Minor Refactoring --- config-layers/common/Initial.properties | 1 + .../java/in/erail/schedular/SchedulerService.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/config-layers/common/Initial.properties b/config-layers/common/Initial.properties index bcf0e32..0c880f0 100644 --- a/config-layers/common/Initial.properties +++ b/config-layers/common/Initial.properties @@ -1,3 +1,4 @@ +#/Initial $class=in.erail.glue.component.Initial initial=\ diff --git a/src/main/java/in/erail/schedular/SchedulerService.java b/src/main/java/in/erail/schedular/SchedulerService.java index b8fe168..b6d4d0a 100644 --- a/src/main/java/in/erail/schedular/SchedulerService.java +++ b/src/main/java/in/erail/schedular/SchedulerService.java @@ -5,6 +5,7 @@ import io.reactivex.Scheduler; import io.reactivex.schedulers.Schedulers; import java.util.concurrent.TimeUnit; +import org.apache.logging.log4j.Logger; /** * @@ -12,13 +13,14 @@ */ public abstract class SchedulerService { + private Logger mLog; private SchedulerType mSchedularType; private TimeUnit mTimeUnit; private long mInterval; private boolean mRecurring; @StartService - void start() { + public void start() { Scheduler scheduler; @@ -85,4 +87,12 @@ public void setRecurring(boolean pRecurring) { this.mRecurring = pRecurring; } + public Logger getLog() { + return mLog; + } + + public void setLog(Logger pLog) { + this.mLog = pLog; + } + }