diff --git a/java/com.sap.sailing.domain.igtimiadapter.server/src/com/sap/sailing/domain/igtimiadapter/server/riot/impl/RiotServerImpl.java b/java/com.sap.sailing.domain.igtimiadapter.server/src/com/sap/sailing/domain/igtimiadapter/server/riot/impl/RiotServerImpl.java index d3c329f90f7..19e4479868f 100644 --- a/java/com.sap.sailing.domain.igtimiadapter.server/src/com/sap/sailing/domain/igtimiadapter/server/riot/impl/RiotServerImpl.java +++ b/java/com.sap.sailing.domain.igtimiadapter.server/src/com/sap/sailing/domain/igtimiadapter/server/riot/impl/RiotServerImpl.java @@ -273,7 +273,7 @@ public class RiotServerImpl extends AbstractReplicableWithObjectInputStream daws = getDataAccessWindows(Collections.singleton(deviceSerialNumber), messageDataTimeRange); for (final RiotWebsocketHandler webSocketClient : liveWebSocketConnections) { @@ -300,6 +300,10 @@ public class RiotServerImpl extends AbstractReplicableWithObjectInputStream T getFromPrimary(String deviceSerialNumber, Type[] types, MessageLoader resultProvider) throws ParseException, IOException { final int masterPort = getMasterDescriptor().getServletPort(); final String masterHostname = getMasterDescriptor().getHostname(); - final SecurityService securityService = Activator.getInstance().getSecurityService(); + final SecurityService securityService = getSecurityService(); final String currentUserBearerToken = securityService == null ? null : securityService.getAccessToken(securityService.getCurrentUser().getName()); try { final URL baseUrl = new URL(masterPort==443?"https":"http", masterHostname, masterPort, "/"); diff --git a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java index 3c71148de3c..6f6ade2a8d6 100755 --- a/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java +++ b/java/com.sap.sailing.domain.igtimiadapter/src/com/sap/sailing/domain/igtimiadapter/impl/IgtimiWindTracker.java @@ -10,6 +10,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; import com.sap.sailing.declination.DeclinationService; import com.sap.sailing.domain.igtimiadapter.IgtimiConnection; @@ -39,8 +40,9 @@ public class IgtimiWindTracker extends AbstractWindTracker implements WindTracke super(trackedRace); this.windTrackerFactory = windTrackerFactory; liveConnectionsAndDeviceSerialNumber = new HashMap<>(); - new Thread("IgtimiWindTracker start-up thread for race " + trackedRace.getRace().getName()) { - public void run() { + final Subject currentSubject = SecurityUtils.getSubject(); + new Thread( + currentSubject.associateWith(()->{ logger.info("Starting up Igtimi wind tracker for race "+trackedRace.getRace().getName()); // create the connection, preferring default credentials specified at bundle start-up over those we may // extract here from the logged-on user or the tracked race's owner @@ -63,8 +65,8 @@ public class IgtimiWindTracker extends AbstractWindTracker implements WindTracke + getTrackedRace().getRace().getName(), e); } } - } - }.start(); + }), "IgtimiWindTracker start-up thread for race " + trackedRace.getRace().getName()) + .start(); } /** @@ -84,7 +86,7 @@ public class IgtimiWindTracker extends AbstractWindTracker implements WindTracke } else { user = optionalSecurityService.getCurrentUser(); } - return optionalSecurityService.getAccessToken(user.getName()); + return optionalSecurityService.getOrCreateAccessToken(user.getName()); } public static TimePoint getReceivingEndTime(DynamicTrackedRace trackedRace) { diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/wind/WindPanelPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/wind/WindPanelPO.java index a9740571d7d..b99444d9806 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/wind/WindPanelPO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/wind/WindPanelPO.java @@ -51,6 +51,19 @@ public class WindPanelPO extends PageArea { } public void importWindFromRouteconverter(String filename, int timeoutInSeconds) throws InterruptedException { - + importWindFromRouteconverterFileUpload.sendKeys(filename); + importWindFromRouteconverterSubmitButton.click(); + FluentWait wait = createFluentWait("The following number of fixes were imported for the listed races:", timeoutInSeconds, DEFAULT_POLLING_INTERVAL); + wait.until(new Function() { + @Override + public Object apply(String message) { + try { + String statusText = importWindFromRouteconverterResultPanel.getText(); + return statusText.contains(message); + } catch (TimeoutException exception) { + return Boolean.FALSE; + } + } + }); } } diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 6277a40c367..cfd1c0172b9 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -24,7 +24,7 @@ - +