From 76174fecad55fb95ca0172375e84cbd7d48573a3 Mon Sep 17 00:00:00 2001 From: anhefti Date: Thu, 12 Dec 2019 19:47:20 +0100 Subject: [PATCH] fixes --- .../ch/ethz/seb/sebserver/SEBServerInit.java | 55 +++++++++++++++++++ .../ch/ethz/seb/sebserver/gui/GuiInit.java | 20 ++++--- .../gui/content/MonitoringRunningExam.java | 24 ++++++-- .../remote/webservice/api/RestCall.java | 4 +- .../sebserver/webservice/WebserviceInit.java | 39 +++---------- .../ch/ethz/seb/sebserver/HTTPClientBot.java | 11 +++- src/test/resources/logback-test.xml | 2 + 7 files changed, 110 insertions(+), 45 deletions(-) create mode 100644 src/main/java/ch/ethz/seb/sebserver/SEBServerInit.java diff --git a/src/main/java/ch/ethz/seb/sebserver/SEBServerInit.java b/src/main/java/ch/ethz/seb/sebserver/SEBServerInit.java new file mode 100644 index 00000000..c40dbe68 --- /dev/null +++ b/src/main/java/ch/ethz/seb/sebserver/SEBServerInit.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2019 ETH Zürich, Educational Development and Technology (LET) + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package ch.ethz.seb.sebserver; + +import java.util.Arrays; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Lazy; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +import ch.ethz.seb.sebserver.webservice.WebserviceInfo; + +@Lazy +@Component +public class SEBServerInit { + + private static final Logger INIT_LOGGER = LoggerFactory.getLogger("SEB SERVER INIT"); + + private final Environment environment; + private final WebserviceInfo webserviceInfo; + + private boolean initialized = false; + + protected SEBServerInit(final Environment environment, final WebserviceInfo webserviceInfo) { + this.environment = environment; + this.webserviceInfo = webserviceInfo; + } + + public void init() { + + if (!this.initialized) { + INIT_LOGGER.info("----> ___ ___ ___ ___ "); + INIT_LOGGER.info("----> / __|| __|| _ ) / __| ___ _ _ __ __ ___ _ _ "); + INIT_LOGGER.info("----> \\__ \\| _| | _ \\ \\__ \\/ -_)| '_|\\ V // -_)| '_|"); + INIT_LOGGER.info("----> |___/|___||___/ |___/\\___||_| \\_/ \\___||_| "); + INIT_LOGGER.info("---->"); + INIT_LOGGER.info("---->"); + INIT_LOGGER.info("----> Version: {}", this.webserviceInfo.getSebServerVersion()); + INIT_LOGGER.info("---->"); + INIT_LOGGER.info("----> Active profiles: {}", Arrays.toString(this.environment.getActiveProfiles())); + INIT_LOGGER.info("---->"); + + this.initialized = true; + } + } + +} diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/GuiInit.java b/src/main/java/ch/ethz/seb/sebserver/gui/GuiInit.java index 07f98705..a0f8f07c 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/GuiInit.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/GuiInit.java @@ -14,6 +14,7 @@ import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; +import ch.ethz.seb.sebserver.SEBServerInit; import ch.ethz.seb.sebserver.gbl.profile.GuiProfile; @Component @@ -22,16 +23,21 @@ public class GuiInit implements ApplicationListener { static final Logger INIT_LOGGER = LoggerFactory.getLogger("SEB SERVER INIT"); + private final SEBServerInit sebServerInit; + + protected GuiInit(final SEBServerInit sebServerInit) { + this.sebServerInit = sebServerInit; + } + @Override public void onApplicationEvent(final ApplicationReadyEvent event) { - INIT_LOGGER.info("----> ___ ___ ___ ___ "); - INIT_LOGGER.info("----> / __|| __|| _ ) / __| ___ _ _ __ __ ___ _ _ "); - INIT_LOGGER.info("----> \\__ \\| _| | _ \\ \\__ \\/ -_)| '_|\\ V // -_)| '_|"); - INIT_LOGGER.info("----> |___/|___||___/ |___/\\___||_| \\_/ \\___||_| "); - INIT_LOGGER.info("---->"); - INIT_LOGGER.info("----> **** GUI Service ****"); - INIT_LOGGER.info("---->"); + this.sebServerInit.init(); + + INIT_LOGGER.info("---->"); + INIT_LOGGER.info("----> **** GUI Service starting up... ****"); + + INIT_LOGGER.info("---->"); INIT_LOGGER.info("----> GUI Service sucessfully successfully started up!"); INIT_LOGGER.info("---->"); } diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringRunningExam.java b/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringRunningExam.java index 490674ed..aa9ac9e2 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringRunningExam.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/content/MonitoringRunningExam.java @@ -22,17 +22,21 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import ch.ethz.seb.sebserver.gbl.api.API; +import ch.ethz.seb.sebserver.gbl.api.EntityType; +import ch.ethz.seb.sebserver.gbl.model.Domain; import ch.ethz.seb.sebserver.gbl.model.EntityKey; import ch.ethz.seb.sebserver.gbl.model.exam.Exam; import ch.ethz.seb.sebserver.gbl.model.exam.Indicator; import ch.ethz.seb.sebserver.gbl.model.session.ClientConnectionData; import ch.ethz.seb.sebserver.gbl.model.user.UserRole; import ch.ethz.seb.sebserver.gbl.profile.GuiProfile; +import ch.ethz.seb.sebserver.gbl.util.Tuple; import ch.ethz.seb.sebserver.gbl.util.Utils; import ch.ethz.seb.sebserver.gui.content.action.ActionDefinition; import ch.ethz.seb.sebserver.gui.service.ResourceService; import ch.ethz.seb.sebserver.gui.service.i18n.LocTextKey; import ch.ethz.seb.sebserver.gui.service.page.PageContext; +import ch.ethz.seb.sebserver.gui.service.page.PageMessageException; import ch.ethz.seb.sebserver.gui.service.page.PageService; import ch.ethz.seb.sebserver.gui.service.page.PageService.PageActionBuilder; import ch.ethz.seb.sebserver.gui.service.page.TemplateComposer; @@ -129,10 +133,22 @@ public class MonitoringRunningExam implements TemplateComposer { actionBuilder .newAction(ActionDefinition.MONITOR_CLIENT_CONNECTION) .withParentEntityKey(entityKey) - .withSelect( - clientTable::getSelection, - PageAction::applySingleSelectionAsEntityKey, - EMPTY_SELECTION_TEXT_KEY) + .withExec(pageAction -> { + final Tuple singleSelection = clientTable.getSingleSelection(); + if (singleSelection == null) { + throw new PageMessageException(EMPTY_SELECTION_TEXT_KEY); + } + + final PageAction copyOfPageAction = PageAction.copyOf(pageAction); + copyOfPageAction.withEntityKey(new EntityKey( + singleSelection._1, + EntityType.CLIENT_CONNECTION)); + copyOfPageAction.withAttribute( + Domain.CLIENT_CONNECTION.ATTR_CONNECTION_TOKEN, + singleSelection._2); + + return copyOfPageAction; + }) .publishIf(() -> currentUser.get().hasRole(UserRole.EXAM_SUPPORTER)); } diff --git a/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/api/RestCall.java b/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/api/RestCall.java index a13cbaed..068fcda4 100644 --- a/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/api/RestCall.java +++ b/src/main/java/ch/ethz/seb/sebserver/gui/service/remote/webservice/api/RestCall.java @@ -117,7 +117,9 @@ public abstract class RestCall { if (responseEntity.getStatusCode() == HttpStatus.OK) { - log.info("************* {}" + responseEntity.getBody()); + if (log.isTraceEnabled()) { + log.trace("response body --> {}" + responseEntity.getBody()); + } return Result.of(RestCall.this.jsonMapper.readValue( responseEntity.getBody(), diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/WebserviceInit.java b/src/main/java/ch/ethz/seb/sebserver/webservice/WebserviceInit.java index 78ad3f91..4fbf33a4 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/WebserviceInit.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/WebserviceInit.java @@ -23,6 +23,7 @@ import org.springframework.context.annotation.Import; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; +import ch.ethz.seb.sebserver.SEBServerInit; import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile; import ch.ethz.seb.sebserver.webservice.servicelayer.session.impl.EventHandlingInit; @@ -33,17 +34,20 @@ public class WebserviceInit implements ApplicationListener ___ ___ ___ ___ "); - INIT_LOGGER.info("----> / __|| __|| _ ) / __| ___ _ _ __ __ ___ _ _ "); - INIT_LOGGER.info("----> \\__ \\| _| | _ \\ \\__ \\/ -_)| '_|\\ V // -_)| '_|"); - INIT_LOGGER.info("----> |___/|___||___/ |___/\\___||_| \\_/ \\___||_| "); - INIT_LOGGER.info("---->"); - } - - INIT_LOGGER.info("----> **** Webservice ****"); - INIT_LOGGER.info("---->"); - INIT_LOGGER.info("----> Starting up..."); + INIT_LOGGER.info("----> **** Webservice starting up... ****"); INIT_LOGGER.info("----> "); INIT_LOGGER.info("----> Init Database with flyway..."); @@ -76,12 +71,12 @@ public class WebserviceInit implements ApplicationListener "); INIT_LOGGER.info("----> Start Services..."); INIT_LOGGER.info("----> "); - this.applicationEventPublisher.publishEvent(new EventHandlingInit(this)); - INIT_LOGGER.info("----> "); + this.applicationEventPublisher.publishEvent(new EventHandlingInit(this)); + + INIT_LOGGER.info("----> "); INIT_LOGGER.info("----> SEB Server successfully started up!"); INIT_LOGGER.info("---->"); - INIT_LOGGER.info("----> Version: {}", this.webserviceInfo.getSebServerVersion()); try { INIT_LOGGER.info("----> Server address: {}", this.environment.getProperty("server.address")); @@ -115,20 +110,4 @@ public class WebserviceInit implements ApplicationListener= HTTPClientBot.this.pingInterval) { + if (currentTime - lastPingTime >= HTTPClientBot.this.pingInterval && + !(currentTime > pingPauseStart && currentTime < pingPauseEnd)) { + pingHeader.next(); sendPing(pingHeader); lastPingTime = currentTime; diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 5cd394dd..e16b86d6 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -9,4 +9,6 @@ + + \ No newline at end of file