From 5fbcb6344672167e7d1dbf28ecbea3b8f55732fb Mon Sep 17 00:00:00 2001 From: wasala Date: Wed, 18 Apr 2018 15:21:56 +0200 Subject: [PATCH] Implementation for HTTP/HTTPS and endpoints *Added HTTP/HTTPS in spring configuration *Fixing issues with license *Fixing HTTP/HTTPS and logging configuration *Add Webflux in implementation Change-Id: I0a7add391cde010d56dbf352de365b1eba90a9cd Issue-ID: DCAEGEN2-453 Signed-off-by: wasala --- pom.xml | 7 +++ prh-app-server/config/application.yaml | 8 ++- prh-app-server/config/keystore | Bin 0 -> 2196 bytes prh-app-server/pom.xml | 10 +++ .../org/onap/dcaegen2/services/prh/MainApp.java | 2 - .../services/prh/configuration/PrhAppConfig.java | 3 - .../prh/configuration/TomcatHttpConfig.java | 49 +++++++++++++++ .../prh/controllers/HeartbeatController.java | 56 +++++++++++++++++ .../prh/controllers/ScheduleController.java | 70 +++++++++++++++++---- .../src/main/resources/application.properties | 13 ++++ prh-app-server/src/main/resources/keystore.jks | Bin 0 -> 2643 bytes prh-app-server/src/main/resources/keystore.jks.old | Bin 0 -> 2272 bytes .../resources/{logback.xml => logback-spring.xml} | 0 .../src/main/resources/scheduled-context.xml | 2 +- .../services/prh/IT/ScheduledXmlContextITest.java | 5 ++ 15 files changed, 206 insertions(+), 19 deletions(-) create mode 100644 prh-app-server/config/keystore create mode 100644 prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/TomcatHttpConfig.java create mode 100644 prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java create mode 100644 prh-app-server/src/main/resources/application.properties create mode 100644 prh-app-server/src/main/resources/keystore.jks create mode 100644 prh-app-server/src/main/resources/keystore.jks.old rename prh-app-server/src/main/resources/{logback.xml => logback-spring.xml} (100%) diff --git a/pom.xml b/pom.xml index 8c652d46..f4514bf5 100644 --- a/pom.xml +++ b/pom.xml @@ -409,6 +409,13 @@ gson ${immutable.version} + + io.projectreactor + reactor-bom + Bismuth-RELEASE + pom + import + com.spotify docker-maven-plugin diff --git a/prh-app-server/config/application.yaml b/prh-app-server/config/application.yaml index 0baa1f9d..306c94f7 100644 --- a/prh-app-server/config/application.yaml +++ b/prh-app-server/config/application.yaml @@ -2,7 +2,13 @@ spring: profiles: active: prod server: - port: 8100 + port: 8433 + ssl: + key-store-type: PKCS12 + key-store-password: nokiapnf + key-store: classpath:keystore.jks + key-password: nokiapnf + keyAlias: tomcat-localhost logging: level: ROOT: ERROR diff --git a/prh-app-server/config/keystore b/prh-app-server/config/keystore new file mode 100644 index 0000000000000000000000000000000000000000..26a16f756fd2913c9d0e2cff0d9bd1568af72cb1 GIT binary patch literal 2196 zcmchY`#aMQ8^^cVuq0!|sAUVWiO)34`M7D$=Xh3Fk1Q$Xv@b#!b0(v5Duq&x>7*P= z&QT$xoRZV3eN9fG13mg)&vRY<1hb~lg8D7{YyuAkpXp6r>Y8p&%kRgJWm-%K%@tKnUi!m1tb$QC$=)q-ib#0-7 zYPA2RDjo6U_HD}@dBUY3W(B*KNSFI_=#7QI`qp3ZG0|42CN43ZF;;b3Og771NXN=c zI=c0W=j;N!{HcDE(%Usg_?Dk7%W`u(aMDUaeXILn5(|edRvB6BtQnuhkF zWOo@8NDT4C!c678;6X$Wq8S@Ox32OE`k0j_es-dVIrUcALCP8CaU=MN@z7L}2^s3M z)#-Y#H^hxz>L?$txsgR?Y+TME>K~j^Fay8WZ-o{Cdg$Dkw%5oZ3uQzOEY6C9pM(xj zioBW+i({t`ladI^{3XY?`CW_Rxd_bwY|BC(E2(sV3cCl@cFdo?Ck^C@q11Lv`n4>e< zv87kt=6KU1b?f<i=H5$X++A<;55&V~Yjh4Ifp`*)J z{4^qq^G6lOzdLP8yt>f!A%nkR->WiUm%+SO-nAFF@IgpYFGTquYu+mH+fVUdb9UpI z1z1QC+6qB;9-Q2YNC-|eoJd=3>vI*IsyM8}ve|uV&MhLqqy0Kz>HarP9v6BE;|X3h z@AC-=?rb=07Em9fzWnozeyX$hYD^gIIpOMqC80uN%Zlz2V-YKt+jpIVU&vK|_0&P% z9m`p3<_zY9+o>IK>dL&6ipg?toHpX@rkC%pqB~xP2}B?JUO+zDH&&gTJV|ZNWew2O zW^GmPt;7v}r%;cV>XFtlJaTCN`bVGlZ7Tboke{m;gyY}&hhaI(*a&&a(&B{UJd1Zq zw#Aw?>QQ|D-M9VztP6t z+|&j@%Zd|71V9TQ=xPzQv}oIS7$6XI{)_*&J=kFEpAl?72q89D0tB$ZJ0NT@7}Ov+ zkdm9@`l&H=LgGMR0w&tc!YNM7=3>v!@^sH??aZtQQw}w+v zn9HK;g8iBs5}i)s#Rzjs9(=3xuxzq@=|FPdRp#oVp&rg)5Yd_>D0>FY;=-l(or$A- z+G$Mj&X+c2UZYPhJI)kt)wTzr27IC`ZaEvL!ylGSqqRkF$x8&C7XFoqLM#Y%{Vz^^ zSFkRO&>#hhm&ZkR`rprFB{IX~GdS!2Hc)MPjND)Bc``ktgcr-dnm)5E%NKQ^R zsP4=n(hn47>vUG9tdJwiZH=ZQCNp1U2Q7ksveaoDntU@gE$Pt*$eCb>HmxlGVMlpVY-6IIY1#Z@E z_&DeSr+1fJ4=fHd@83UVI0i+l70-6yOThv|SsRHE5#sCP6{LRqz|F{OUa)NL(P5NE zjcdsszJ<6k~|b} zy<=sSLw$CX;kImpUVQ9qYQoY)lR{|eu)tG(V@z9>@UMBAcaZl;NM*cRiYXT9!k9&A zYMgMFL6hXd(@tCejl>%hX*>$+P=jJ>;V;UZS(=nzt#8neRvn$M3Pv2cSCZ#d7}76s Y>gUf*;4OV literal 0 HcmV?d00001 diff --git a/prh-app-server/pom.xml b/prh-app-server/pom.xml index f178d343..e804c3e6 100644 --- a/prh-app-server/pom.xml +++ b/prh-app-server/pom.xml @@ -79,6 +79,7 @@ 8100 + 8433 ${project.version}-SNAPSHOT-${maven.build.timestamp}Z @@ -134,6 +135,10 @@ + + io.projectreactor + reactor-core + org.bouncycastle bcprov-jdk15on @@ -174,6 +179,11 @@ + + io.projectreactor + reactor-test + test + org.junit.jupiter junit-jupiter-engine diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java index fd864483..5d602085 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java @@ -27,7 +27,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.TaskScheduler; -import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; /** @@ -36,7 +35,6 @@ import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; @SpringBootApplication @Configuration @ComponentScan -@EnableScheduling @EnableAutoConfiguration(exclude = {JacksonAutoConfiguration.class}) public class MainApp { diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java index 6f077a36..1bd90eef 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java @@ -19,9 +19,6 @@ */ package org.onap.dcaegen2.services.prh.configuration; -import static org.apache.tomcat.util.file.ConfigFileLoader.getInputStream; - -import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/TomcatHttpConfig.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/TomcatHttpConfig.java new file mode 100644 index 00000000..0e9d7fe6 --- /dev/null +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/TomcatHttpConfig.java @@ -0,0 +1,49 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.dcaegen2.services.prh.configuration; + +import org.apache.catalina.connector.Connector; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.servlet.server.ServletWebServerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author Przemysław Wąsala on 4/18/18 + */ +@Configuration +public class TomcatHttpConfig { + + @Bean + public ServletWebServerFactory servletContainer() { + TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(); + tomcat.addAdditionalTomcatConnectors(getHttpConnector()); + return tomcat; + } + + private Connector getHttpConnector() { + Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL); + connector.setScheme("http"); + connector.setPort(8100); + connector.setSecure(false); + return connector; + } + +} diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java new file mode 100644 index 00000000..95b360e1 --- /dev/null +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/HeartbeatController.java @@ -0,0 +1,56 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.dcaegen2.services.prh.controllers; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Mono; + +/** + * @author Przemysław Wąsala on 4/19/18 + */ +@RestController +public class HeartbeatController { + + private static final Logger logger = LoggerFactory.getLogger(PrhAppConfig.class); + private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + + @RequestMapping(value = "heartbeat", method = RequestMethod.GET) + public Mono> heartbeat() { + logger.debug("Receiving request on on thread={} , time={} ", Thread.currentThread().getName(), + dateTimeFormatter.format( + LocalDateTime.now())); + + return Mono.defer(() -> { + logger.debug("Sending response on thread={} , time={} ", Thread.currentThread().getName(), + dateTimeFormatter.format( + LocalDateTime.now())); + return Mono.just(new ResponseEntity<>("I'm living", HttpStatus.OK)); + }); + } +} diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java index 99516c46..6f08dd8a 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java @@ -19,30 +19,40 @@ */ package org.onap.dcaegen2.services.prh.controllers; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.ScheduledFuture; +import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig; import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.TaskScheduler; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Mono; /** * @author Przemysław Wąsala on 4/5/18 */ -@Controller +@RestController @Component public class ScheduleController { + private static final Logger logger = LoggerFactory.getLogger(PrhAppConfig.class); + private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); private static final int SCHEDULING_DELAY = 20000; + private static volatile List scheduledFutureList = new ArrayList<>(); private final TaskScheduler taskScheduler; private final ScheduledTasks scheduledTask; - private ScheduledFuture scheduledFuture; @Autowired public ScheduleController(TaskScheduler taskScheduler, ScheduledTasks scheduledTask) { @@ -50,18 +60,54 @@ public class ScheduleController { this.scheduledTask = scheduledTask; } + @RequestMapping(value = "start", method = RequestMethod.GET) + public Mono> startTasks() { + logDebug("Starting scheduling worker request on on thread={} , time={} "); + return Mono.fromSupplier(this::tryToStartTask).map(this::createStartTaskResponse); + } + + @RequestMapping(value = "stopPrh", method = RequestMethod.GET) + public Mono> stopTask() { + logDebug("Stopping scheduling worker request on on thread={} , time={} "); + return getResponseFromCancellationOfTasks(); + } - @RequestMapping(value = "preferences", method = RequestMethod.PUT) - public ResponseEntity startTask() { - scheduledFuture = taskScheduler - .scheduleWithFixedDelay(scheduledTask::scheduleMainPrhEventTask, SCHEDULING_DELAY); - return new ResponseEntity<>(HttpStatus.OK); + private synchronized Mono> getResponseFromCancellationOfTasks() { + scheduledFutureList.forEach(x -> x.cancel(false)); + scheduledFutureList.clear(); + return Mono.defer(() -> { + logDebug("Sending success response on stopping task execution thread={} , time={} "); + return Mono.just(new ResponseEntity<>("PRH Service has already been stopped!", HttpStatus.CREATED)); + }); } - @RequestMapping("stopPrh") - public ResponseEntity stopTask() { - scheduledFuture.cancel(false); - return new ResponseEntity<>(HttpStatus.OK); + private synchronized boolean tryToStartTask() { + if (scheduledFutureList.isEmpty()) { + scheduledFutureList.add(taskScheduler + .scheduleWithFixedDelay(scheduledTask::scheduleMainPrhEventTask, SCHEDULING_DELAY)); + return true; + } else { + return false; + } + } + private ResponseEntity createStartTaskResponse(boolean wasScheduled) { + if (wasScheduled) { + logDebug("Sending success response on starting task execution thread={} , time={} "); + return new ResponseEntity<>("PRH Service has been started!", HttpStatus.CREATED); + } else { + logDebug("Sending error response on starting task execution thread={} , time={} "); + return new ResponseEntity<>("PRH Service is still running!", HttpStatus.NOT_ACCEPTABLE); + } + } + + private static void logDebug(String message) { + if (logger.isDebugEnabled()) { + logger.debug(message, + Thread.currentThread().getName(), + dateTimeFormatter.format( + LocalDateTime.now())); + } + } } diff --git a/prh-app-server/src/main/resources/application.properties b/prh-app-server/src/main/resources/application.properties new file mode 100644 index 00000000..53fa9cde --- /dev/null +++ b/prh-app-server/src/main/resources/application.properties @@ -0,0 +1,13 @@ +spring.profiles.active=prod +server.port=8433 +server.ssl.key-store-type=PKCS12 +server.ssl.key-store-password=nokiapnf +server.ssl.key-store=classpath:keystore.jks +server.ssl.key-password=nokiapnf +server.ssl.key-alias=tomcat-localhost +logging.level.root=ERROR +logging.level.org.springframework=ERROR +logging.level.org.springframework.data=ERROR +logging.level.org.onap.dcaegen2.services.prh=INFO +logging.file=logs/log/application.log +app.filepath=config/prh_endpoints.json diff --git a/prh-app-server/src/main/resources/keystore.jks b/prh-app-server/src/main/resources/keystore.jks new file mode 100644 index 0000000000000000000000000000000000000000..cd27cc01b8ca3204d3e93cade05f27fa091786ff GIT binary patch literal 2643 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 jX$Fb_w`*ApC^j literal 0 HcmV?d00001 diff --git a/prh-app-server/src/main/resources/keystore.jks.old b/prh-app-server/src/main/resources/keystore.jks.old new file mode 100644 index 0000000000000000000000000000000000000000..8a2b4f99223e670e986b09801d57e075551d3e2e GIT binary patch literal 2272 zcmc(g*H@DX6UNgiA@l{LhF(PSh9ZK((vgnRn-b|Qkw7S-E(8tTB@jRqq&ETSQltrl zA|ir|g3GQHK>>pjk+QS}&v&u^!FMqizh};zGv}E(Glz^r1_%U#90&MkaEB8@yl~-X zf(c%@V1Ghb_;KRe>{Bx-5C{$d$go3z6TyBO0fvE= zD|k6Q>M->hxycV&u+#J$Yl{f8EGi9GiLbkyWLBM0#u_-h2a^%DEDA3^^Il9qgr*nA zBSLB77Fzn2=&fYREyKmwVKxn~ylg3n%iC?yolNXCGM_{fGovcVoJ{-DdpoZ1WSyGw zrd3@Z)24CZ3i@<<*zggTze|p?aP9L(p*`cmOx^t7D<+f23U>7bq-CSg0o07OV5%m4 zs|oOX85eJxNGYWoZ_heaY6{mq^QZb#6{@08bSm-9IwBNI<|&6e)+3){mM`YyA1uBi zmDmwV)oLP_hU7@|vZvXq=ikZ(1&w1nlRf&cX15D8pv~+ydZQk|D=jq~(-$98i)W!_ z`D1ZP1e-5C9~4JFz7rbS864CV2@uZjA9{DFW`+vXf{=*!14}^V80{Z2%TK+0#}pSZ zR8yYXy&Be3F^+n~s?V_lUmbm}1b{TrowdWgpHr*|2m^>OWkhbUm(4?e3G%O;vw2^xaK=*meyM#}+f|$U>z3=6b76bYsMm~+^46$v1N(GO1y~mH zsQtG}h(_xR{v2BenlA>ib0f&z<4sPMJumNs5}%DbIP;q?vP&Whn_W71P2`DdhBeY6 zlNSLbMj);{t7+ym#$alvvTRosXyNu6XDW%t-r*~@MOxu%cM6s>gKvxfN}VeO@0VHq zG9f&=R=%D$V^C*08{Qa$S1K?(F!YXE&E>LF`c0^HQTdbPAk*4Xiq*J)VIEL!_#C2< zv+(4tTQAx@K(srkdkQBrq7c`#MWd8y+gb|lfYzAipcKd847#|Rjf~Ev0#xbP%QJ9N zRIGFhX>8=f%%f8`B~~da-$?v3>wF;f5t$~PlyRU~vY#kYL_sG-YO76R&Y4{2ztnz5 z*nJZAT|BL|N)a{CjTA^WKvQv6Q_GWb&e~!gVEGlfg8jSQoApw)o=O#Z$ow89C}h=k zEc#L!OA>Hvt1ad>AKT4IJSt^ZU}(BL_)GsBlYpwYxc8)Zmwkyf@P`26eaO!n33pb} z0JK0LXc|CP2q0mR02>1807LLWY%Q_e z$M^FXSov5S@IiP&Bp%BHaGfYD9IQ@6f)|~Pi^OsQ948VxAKco;!b~5_2k@LQl8^l- zqiwA9ZLy+&@QDcJ;Ik#(@Ck_yJ1Ipw4craG1>*p5K@|2JppMl7Gyzpr4Oc;w>It6x zAO64EB7>#=YtZrkfRe#nAb<>JhmgTwP>GEdLAlwEP;?9IXTQpzw3Fi1EU2&cI?&8d z@)I-jnvX;6?GnG3RC$&`dYPLEMb%XuwT$HbkGSWWDw;t=X6>AV6oxH&{~UMERACSI zoIf?NSY}$e0naO#^NRF{$J@1;0_t;`u@!IV^a!8kScWF?g;u<~^GvwHri{jFOp z8buY_8y>=6M^l6x^1fFXC#q>3g~%u@Zjt4K!mN>f+?;b0TB*x{;4B~Jm?8VkzfjNc z<}#B+Bez1w_{*uQ-A4mb^aP{))Qz?PqhG6`W2YYe2srn6aLqa4b?e5P!t%`yRoplh z(JY2PA9}C)kLFCD$LVR?54qgBh9FQd2wWlwNC0BT!xiI%3BdSox5jXRK4-j%71{dT zOSN)4E>y1Rza}1U*|CXWP%88v4d*?M(%!|3x_8|(dN{Jwl6K=6B5@r m=W_2ZGQ_(EVta~0a513KsknEdUfwx#dr6dHc1OLI{(k{C57rX^ literal 0 HcmV?d00001 diff --git a/prh-app-server/src/main/resources/logback.xml b/prh-app-server/src/main/resources/logback-spring.xml similarity index 100% rename from prh-app-server/src/main/resources/logback.xml rename to prh-app-server/src/main/resources/logback-spring.xml diff --git a/prh-app-server/src/main/resources/scheduled-context.xml b/prh-app-server/src/main/resources/scheduled-context.xml index d1c80caf..91919aa2 100644 --- a/prh-app-server/src/main/resources/scheduled-context.xml +++ b/prh-app-server/src/main/resources/scheduled-context.xml @@ -10,7 +10,7 @@ - diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java index c8ed88da..faecec4d 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/ScheduledXmlContextITest.java @@ -23,13 +23,18 @@ import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.FutureTask; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.onap.dcaegen2.services.prh.IT.junit5.mockito.MockitoExtension; import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig; +import org.onap.dcaegen2.services.prh.exceptions.PrhTaskException; import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; -- 2.16.6