mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 06:49:56 +00:00
offered an overload of addRace(...) that uses a default RaceTrackingHandler
This commit is contained in:
1 parent
101b4757f3
commit
07ae00f110
15 files changed
+49
-36
No files matched your search
-1
@@ -113,7 +113,6 @@ public class RaceLogRaceTracker extends AbstractRaceTrackerBaseImpl {
|
||||
this.trackedRegatta = regatta;
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
this.raceTrackingHandler = raceTrackingHandler;
|
||||
|
||||
// add log listeners
|
||||
for (AbstractLog<?, ?> log : params.getLogHierarchy()) {
|
||||
if (log instanceof RaceLog) {
|
||||
|
||||
+1
-3
@@ -12,7 +12,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.regattalog.RegattaLogStore;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
|
||||
@@ -30,8 +29,7 @@ public interface SwissTimingAdapter {
|
||||
*/
|
||||
RaceHandle addSwissTimingRace(TrackerManager trackerManager, RegattaIdentifier regattaToAddTo, String raceID,
|
||||
String raceName, String raceDescription, BoatClass boatClass, String hostname, int port,
|
||||
StartList startList, RaceLogStore logStore, RegattaLogStore regattaLogStore, long timeoutInMilliseconds, boolean useInternalMarkPassingAlgorithm, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, String updateURL, String updateUsername, String updatePassword,
|
||||
RaceTrackingHandler raceTrackingHandler)
|
||||
StartList startList, RaceLogStore logStore, RegattaLogStore regattaLogStore, long timeoutInMilliseconds, boolean useInternalMarkPassingAlgorithm, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, String updateURL, String updateUsername, String updatePassword)
|
||||
throws InterruptedException, UnknownHostException, IOException, ParseException, Exception;
|
||||
|
||||
StartList readStartListForRace(String raceId, RegattaResults regattaResults);
|
||||
|
||||
+2
-3
@@ -24,7 +24,6 @@ import com.sap.sailing.domain.swisstimingadapter.StartList;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingAdapter;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sailing.xrr.resultimport.ParserFactory;
|
||||
import com.sap.sailing.xrr.schema.Boat;
|
||||
@@ -71,13 +70,13 @@ public class SwissTimingAdapterImpl implements SwissTimingAdapter {
|
||||
String raceName, String raceDescription, BoatClass boatClass, String hostname, int port,
|
||||
StartList startList, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, long timeoutInMilliseconds,
|
||||
boolean useInternalMarkPassingAlgorithm, boolean trackWind, boolean correctWindDirectionByMagneticDeclination,
|
||||
String updateURL, String updateUsername, String updatePassword, RaceTrackingHandler raceTrackingHandler) throws Exception {
|
||||
String updateURL, String updateUsername, String updatePassword) throws Exception {
|
||||
return trackerManager.addRace(regattaToAddTo,
|
||||
swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port, raceID, raceName,
|
||||
raceDescription, boatClass, startList, DEFAULT_SWISSTIMING_LIVE_DELAY_IN_MILLISECONDS,
|
||||
swissTimingFactory, swissTimingDomainFactory, raceLogStore, regattaLogStore,
|
||||
useInternalMarkPassingAlgorithm, trackWind, correctWindDirectionByMagneticDeclination, updateURL, updateUsername, updatePassword),
|
||||
timeoutInMilliseconds, raceTrackingHandler);
|
||||
timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-3
@@ -13,7 +13,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.regattalog.RegattaLogStore;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.impl.SwissTimingRaceConfig;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
|
||||
@@ -46,8 +45,7 @@ public interface SwissTimingReplayService {
|
||||
*/
|
||||
void loadRaceData(RegattaIdentifier regattaToAddTo, String link, String raceName, String raceID,
|
||||
String boatClassName, TrackerManager trackerManager, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore,
|
||||
RaceTrackingHandler raceTrackingHandler)
|
||||
boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
|
||||
+2
-5
@@ -28,7 +28,6 @@ import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayListener;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayRace;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayService;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sse.util.ByteArrayOutputStreamWithVisibleBuffer;
|
||||
@@ -152,11 +151,9 @@ public class SwissTimingReplayServiceImpl implements SwissTimingReplayService {
|
||||
@Override
|
||||
public void loadRaceData(RegattaIdentifier regattaToAddTo, String link, String raceName, String raceID,
|
||||
String boatClassName, TrackerManager trackerManager, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore,
|
||||
RaceTrackingHandler raceTrackingHandler)
|
||||
boolean useInternalMarkPassingAlgorithm, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception {
|
||||
trackerManager.addRace(regattaToAddTo, new SwissTimingReplayConnectivityParameters(link, raceName, raceID,
|
||||
boatClassName, useInternalMarkPassingAlgorithm, domainFactory, this, raceLogStore, regattaLogStore), /* timeout */ -1,
|
||||
raceTrackingHandler);
|
||||
boatClassName, useInternalMarkPassingAlgorithm, domainFactory, this, raceLogStore, regattaLogStore), /* timeout */ -1);
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -79,8 +79,7 @@ public interface TracTracAdapter {
|
||||
URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint trackingStartTime,
|
||||
TimePoint trackingEndTime, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore,
|
||||
long timeoutForReceivingRaceDefinitionInMilliseconds, Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm,
|
||||
String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination,
|
||||
RaceTrackingHandler raceTrackingHandler)
|
||||
String tracTracUsername, String tracTracPassword, String raceStatus, String raceVisibility, boolean trackWind, boolean correctWindDirectionByMagneticDeclination)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -69,14 +69,14 @@ public class TracTracAdapterImpl implements TracTracAdapter {
|
||||
RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, long timeoutInMilliseconds,
|
||||
Duration offsetToStartTimeOfSimulatedRace, boolean useInternalMarkPassingAlgorithm, String tracTracUsername,
|
||||
String tracTracPassword, String raceStatus, String raceVisibility, boolean trackWind,
|
||||
boolean correctWindDirectionByMagneticDeclination,RaceTrackingHandler raceTrackingHandler) throws Exception {
|
||||
boolean correctWindDirectionByMagneticDeclination) throws Exception {
|
||||
return trackerManager.addRace(
|
||||
regattaToAddTo,
|
||||
getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
||||
courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, raceLogStore, regattaLogStore, tracTracUsername, tracTracPassword,
|
||||
raceStatus, raceVisibility, trackWind, correctWindDirectionByMagneticDeclination, /* preferReplayIfAvailable */ false,
|
||||
(int) timeoutInMilliseconds), timeoutInMilliseconds, raceTrackingHandler);
|
||||
(int) timeoutInMilliseconds), timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,12 +25,28 @@ public interface TrackerManager {
|
||||
* regatta is found, it is used to add the races to, and
|
||||
* {@link #setRegattaForRace(Regatta, RaceDefinition)} is called to remember the association
|
||||
* persistently. Otherwise, a default regatta as described above will be created and used.
|
||||
* @param params
|
||||
* describe the race to be loaded/added and how it is to be loaded
|
||||
* @param timeoutInMilliseconds
|
||||
* if -1 then loading doesn't time out; otherwise, if the {@link RaceDefinition} hasn't been received
|
||||
* after so many milliseconds then the tracker will be {@link RaceTracker#stop(boolean) stopped}.
|
||||
* @param raceTrackingHandler
|
||||
* a mandatory service (must not be {@code null}) that is used to create objects during loading/adding
|
||||
* the race, such as the {@link RaceDefinition}, {@link Boat} and {@link Competitor} objects, and finally
|
||||
* the {@link TrackedRace} object. There is a default implementation available at
|
||||
* {@link RaceTrackingHandler.DefaultRaceTrackingHandler} that simply creates the objects; a more
|
||||
* specialized implementation exists that can handle the security-related aspects. See
|
||||
* {@code PermissionAwareRaceTrackingHandler}.
|
||||
*/
|
||||
RaceHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
* Same as {@link #addRace(RegattaIdentifier, RaceTrackingConnectivityParameters, long, RaceTrackingHandler)} only that
|
||||
* the implementation can choose the {@link RaceTrackingHandler} according to its preferences.
|
||||
*/
|
||||
RaceHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
}
|
||||
+1
-3
@@ -22,7 +22,6 @@ import com.sap.sailing.domain.swisstimingadapter.SwissTimingAdapterFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayService;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.gwt.ui.server.SailingServiceImpl;
|
||||
@@ -76,8 +75,7 @@ public class SailingServiceImplMock extends SailingServiceImpl {
|
||||
public RaceHandle addSwissTimingRace(TrackerManager trackerManager,
|
||||
RegattaIdentifier regattaToAddTo, String raceID, String raceName, String raceDescription,
|
||||
BoatClass boatClass, String hostname, int port, StartList startList, RaceLogStore logStore,
|
||||
RegattaLogStore regattaLogStore, long timeoutInMilliseconds, boolean useInternalMarkPassingAlgorithm, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, String updateURL, String updateUsername, String updatePassword,
|
||||
RaceTrackingHandler raceTrackingHandler) throws InterruptedException,
|
||||
RegattaLogStore regattaLogStore, long timeoutInMilliseconds, boolean useInternalMarkPassingAlgorithm, boolean trackWind, boolean correctWindDirectionByMagneticDeclination, String updateURL, String updateUsername, String updatePassword) throws InterruptedException,
|
||||
UnknownHostException, IOException, ParseException, Exception {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
|
||||
+5
-8
@@ -597,7 +597,6 @@ import com.sap.sailing.server.operationaltransformation.UpdateRaceDelayToLive;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateServerConfiguration;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta;
|
||||
import com.sap.sailing.server.security.PermissionAwareRaceTrackingHandler;
|
||||
import com.sap.sailing.server.security.SailingViewerRole;
|
||||
import com.sap.sailing.server.util.WaitForTrackedRaceUtil;
|
||||
import com.sap.sailing.shared.server.SharedSailingData;
|
||||
@@ -1494,7 +1493,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
getRegattaLogStore(), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
offsetToStartTimeOfSimulatedRace, useInternalMarkPassingAlgorithm, tracTracUsername,
|
||||
tracTracPassword, record.getRaceStatus(), record.getRaceVisibility(), trackWind,
|
||||
correctWindByDeclination, new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
correctWindByDeclination);
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Error trying to load race " + rrs+". Continuing with remaining races...", e);
|
||||
}
|
||||
@@ -3464,8 +3463,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
rr.raceId, rr.getName(), raceDescription, boatClass, hostname, port, startList,
|
||||
getRaceLogStore(), getRegattaLogStore(),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, useInternalMarkPassingAlgorithm, trackWind,
|
||||
correctWindByDeclination, updateURL, updateUsername, updatePassword,
|
||||
new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
correctWindByDeclination, updateURL, updateUsername, updatePassword);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3506,8 +3504,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
boatClassName = null;
|
||||
}
|
||||
getSwissTimingReplayService().loadRaceData(regattaIdentifier, replayRaceDTO.link, replayRaceDTO.getName(),
|
||||
replayRaceDTO.race_id, boatClassName, getService(), getService(), useInternalMarkPassingAlgorithm, getRaceLogStore(), getRegattaLogStore(),
|
||||
new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
replayRaceDTO.race_id, boatClassName, getService(), getService(), useInternalMarkPassingAlgorithm, getRaceLogStore(), getRegattaLogStore());
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Error trying to load SwissTimingReplay race " + replayRaceDTO, e);
|
||||
}
|
||||
@@ -7405,7 +7402,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||
getRaceLogTrackingAdapter().startTracking(getService(), leaderboard, raceColumn, fleet, trackWind, correctWindByDeclination,
|
||||
new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
getService().getPermissionAwareRaceTrackingHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -8994,7 +8991,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
|
||||
try {
|
||||
final RaceHandle raceHandle = getRaceLogTrackingAdapter().startTracking(getService(), regattaLeaderboard,
|
||||
raceColumn, fleet, /* trackWind */ true, /* correctWindDirectionByMagneticDeclination */ true,
|
||||
new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
getService().getPermissionAwareRaceTrackingHandler());
|
||||
|
||||
// wait for the RaceDefinition to be created
|
||||
raceHandle.getRace();
|
||||
|
||||
+1
-2
@@ -139,7 +139,6 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrection;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardScoreCorrectionMetadata;
|
||||
import com.sap.sailing.server.security.PermissionAwareRaceTrackingHandler;
|
||||
import com.sap.sse.InvalidDateException;
|
||||
import com.sap.sse.common.Bearing;
|
||||
import com.sap.sse.common.Distance;
|
||||
@@ -716,7 +715,7 @@ public class LeaderboardsResource extends AbstractLeaderboardsResource {
|
||||
leaderboardAndRaceColumnAndFleetAndResponse.getFleet(),
|
||||
trackWind == null ? true : trackWind,
|
||||
correctWindDirectionByMagneticDeclination == null ? true : correctWindDirectionByMagneticDeclination,
|
||||
new PermissionAwareRaceTrackingHandler(getSecurityService()));
|
||||
getService().getPermissionAwareRaceTrackingHandler());
|
||||
jsonResult.put("regatta", raceHandle.getRegatta().getName());
|
||||
result = Response.ok(jsonResult.toJSONString()).build();
|
||||
} else {
|
||||
|
||||
+7
@@ -82,6 +82,7 @@ import com.sap.sailing.domain.regattalike.LeaderboardThatHasRegattaLike;
|
||||
import com.sap.sailing.domain.resultimport.ResultUrlProvider;
|
||||
import com.sap.sailing.domain.statistics.Statistics;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceListener;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
@@ -921,4 +922,10 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
RaceTrackingConnectivityParameters getConnectivityParametersByRace(RaceDefinition raceDefinition);
|
||||
|
||||
RaceTrackingHandler getPermissionAwareRaceTrackingHandler();
|
||||
|
||||
/**
|
||||
* Uses the {@link #getPermissionAwareRaceTrackingHandler()} as the {@link RaceTrackingHandler}
|
||||
*/
|
||||
@Override
|
||||
RaceHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, long timeoutInMilliseconds) throws Exception;
|
||||
}
|
||||
+1
-3
@@ -61,7 +61,6 @@ import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParametersHandler;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingHandler;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
@@ -623,8 +622,7 @@ public class ImportMasterDataOperation extends
|
||||
for (RaceTrackingConnectivityParameters param : connectivityParametersToRestore) {
|
||||
if (param != null) {
|
||||
final RaceTrackingConnectivityParameters paramToStartTracking = serviceFinder.findService(param.getTypeIdentifier()).resolve(param);
|
||||
final RaceTrackingHandler raceTrackingHandler = toState.getPermissionAwareRaceTrackingHandler();
|
||||
RaceHandle raceHandle = toState.addRace(/* default */ null, paramToStartTracking, /* do not wait */ -1, raceTrackingHandler);
|
||||
RaceHandle raceHandle = toState.addRace(/* default */ null, paramToStartTracking, /* do not wait */ -1);
|
||||
final RaceDefinition race = raceHandle.getRace(RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
if (race != null) {
|
||||
ensureOwnership(raceHandle.getTrackedRegatta().getTrackedRace(race).getIdentifier(), securityService);
|
||||
|
||||
+8
@@ -1819,6 +1819,14 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses the {@link #getPermissionAwareRaceTrackingHandler()} as the {@link RaceTrackingHandler}
|
||||
*/
|
||||
@Override
|
||||
public RaceHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, long timeoutInMilliseconds) throws Exception {
|
||||
return addRace(regattaToAddTo, params, timeoutInMilliseconds, getPermissionAwareRaceTrackingHandler());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler) throws Exception {
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ public class PermissionAwareRaceTrackingHandler extends DefaultRaceTrackingHandl
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if there is already an ownership asssociated to the object identified by the
|
||||
* Check if there is already an ownership associated to the object identified by the
|
||||
* {@link QualifiedObjectIdentifier}. If no ownership exists, one will be created in the context of the current
|
||||
* user.
|
||||
*/
|
||||
|
||||
Reference in new issue
Block a user