moved SharedSailingData interface to com.sap.sailing.shared.server bundle;

made it implement the Replicable interface so it can be waited for using
the FullyInitializedReplicableTracker
This commit is contained in:
Axel Uhl committed 2020-03-11 15:57:44 +01:00
1 parent 101675b41e
commit 1d6526fc91
24 files changed
+82 -109

No files matched your search

@@ -25,7 +25,8 @@ Require-Bundle: org.json.simple;bundle-version="1.1.0",
com.sap.sse.security.common,
com.sap.sse.security.interface,
org.apache.shiro.core,
org.apache.shiro.web
org.apache.shiro.web,
com.sap.sse.replication
Import-Package: com.sap.sse.security.shared,
javax.ws.rs;version="1.1.1",
javax.ws.rs.core;version="1.1.1",
@@ -10,6 +10,8 @@ import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.domain.igtimiadapter.Client;
import com.sap.sailing.domain.igtimiadapter.IgtimiConnectionFactory;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
import com.sap.sse.util.ServiceTrackerFactory;
@@ -26,7 +28,7 @@ import com.sap.sse.util.ServiceTrackerFactory;
public class Activator implements BundleActivator {
private static Activator INSTANCE;
private ServiceTracker<IgtimiConnectionFactory, IgtimiConnectionFactory> igtimiConnectionFactoryTracker;
private ServiceTracker<SecurityService, SecurityService> securityServiceTracker;
private FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
public Activator() throws ClientProtocolException, IllegalStateException, IOException, ParseException {
}
@@ -34,11 +36,11 @@ public class Activator implements BundleActivator {
@Override
public void start(final BundleContext context) throws Exception {
INSTANCE = this;
igtimiConnectionFactoryTracker = ServiceTrackerFactory
.createAndOpen(context, IgtimiConnectionFactory.class);
securityServiceTracker = ServiceTrackerFactory.createAndOpen(context, SecurityService.class);
securityServiceTracker = new FullyInitializedReplicableTracker<SecurityService>(context, SecurityService.class,
/* customizer */ null, ServiceTrackerFactory.createAndOpen(context, ReplicationService.class));
securityServiceTracker.open();
}
public static Activator getInstance() throws ClientProtocolException, IllegalStateException, IOException, ParseException {
@@ -53,7 +55,11 @@ public class Activator implements BundleActivator {
}
public SecurityService getSecurityService() {
return securityServiceTracker.getService();
try {
return securityServiceTracker.getInitializedService(0);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
@@ -13,7 +13,6 @@ import org.apache.http.client.ClientProtocolException;
import org.json.simple.parser.ParseException;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.domain.igtimiadapter.Account;
@@ -23,6 +22,8 @@ import com.sap.sailing.domain.igtimiadapter.persistence.DomainObjectFactory;
import com.sap.sailing.domain.igtimiadapter.persistence.MongoObjectFactory;
import com.sap.sailing.domain.igtimiadapter.persistence.PersistenceFactory;
import com.sap.sailing.domain.tracking.WindTrackerFactory;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
import com.sap.sse.util.ClearStateTestSupport;
import com.sap.sse.util.ServiceTrackerFactory;
@@ -55,7 +56,7 @@ public class Activator implements BundleActivator {
private static final String CLIENT_REDIRECT_PORT_PROPERTY_NAME = "igtimi.client.redirect.port";
private final Future<IgtimiConnectionFactoryImpl> connectionFactory;
private final Future<IgtimiWindTrackerFactory> windTrackerFactory;
private ServiceTracker<SecurityService, SecurityService> securityServiceServiceTracker;
private FullyInitializedReplicableTracker<SecurityService> securityServiceServiceTracker;
private final ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactoryWithPriority(Thread.NORM_PRIORITY, /* daemon */ true));
private SecurityService securityServiceTest;
@@ -106,11 +107,12 @@ public class Activator implements BundleActivator {
}
}
});
securityServiceServiceTracker = ServiceTrackerFactory.createAndOpen(context, SecurityService.class);
securityServiceServiceTracker = new FullyInitializedReplicableTracker<>(context, SecurityService.class, /* customizer */ null,
ServiceTrackerFactory.createAndOpen(context, ReplicationService.class));
securityServiceServiceTracker.open();
new Thread(() -> {
try {
final SecurityService securityService = securityServiceServiceTracker.waitForService(0);
final SecurityService securityService = securityServiceServiceTracker.getInitializedService(0);
IgtimiConnectionFactoryImpl igtimiConnectionFactory = connectionFactory.get();
for (Account account : igtimiConnectionFactory.getAllAccounts()) {
securityService.migrateOwnership(account);
@@ -120,7 +122,6 @@ public class Activator implements BundleActivator {
logger.log(Level.SEVERE, "Exception trying to migrate IgtimiAccounts implementation", e);
}
}, getClass().getName() + " registering connectivity handler").start();
context.registerService(ClearStateTestSupport.class.getName(), new ClearStateTestSupport() {
@Override
public void clearState() throws Exception {
@@ -146,7 +147,11 @@ public class Activator implements BundleActivator {
}
public SecurityService getSecurityService() {
return securityServiceTest == null ? securityServiceServiceTracker.getService() : securityServiceTest;
try {
return securityServiceTest == null ? securityServiceServiceTracker.getInitializedService(0) : securityServiceTest;
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
public IgtimiWindTrackerFactory getWindTrackerFactory() {
@@ -30,7 +30,6 @@ Export-Package: com.sap.sailing.domain.base,
com.sap.sailing.domain.regattalog,
com.sap.sailing.domain.regattalog.impl,
com.sap.sailing.domain.sharding,
com.sap.sailing.domain.sharedsailingdata,
com.sap.sailing.domain.trackfiles,
com.sap.sailing.domain.trackimport,
com.sap.sailing.domain.tracking,
@@ -23,6 +23,8 @@ import com.sap.sse.gwt.dispatch.client.transport.gwtrpc.RequestWrapper;
import com.sap.sse.gwt.dispatch.servlets.AbstractDispatchServlet;
import com.sap.sse.gwt.dispatch.shared.commands.Action;
import com.sap.sse.gwt.dispatch.shared.commands.Result;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
import com.sap.sse.util.ServiceTrackerFactory;
@@ -32,7 +34,7 @@ public class SailingDispatchServlet extends AbstractDispatchServlet<SailingDispa
private final ServiceTracker<RacingEventService, RacingEventService> racingEventServiceTracker;
private final ServiceTracker<WindFinderTrackerFactory, WindFinderTrackerFactory> windFinderTrackerFactory;
private final ServiceTracker<EventNewsService, EventNewsService> eventNewsServiceTracker;
private final ServiceTracker<SecurityService, SecurityService> securityServiceTracker;
private final FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
private final ServiceTracker<TrackedRaceStatisticsCache, TrackedRaceStatisticsCache> trackedRaceStatisticsCacheTracker;
public SailingDispatchServlet() {
@@ -40,7 +42,9 @@ public class SailingDispatchServlet extends AbstractDispatchServlet<SailingDispa
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
windFinderTrackerFactory = ServiceTrackerFactory.createAndOpen(context, WindFinderTrackerFactory.class);
eventNewsServiceTracker = ServiceTrackerFactory.createAndOpen(context, EventNewsService.class);
securityServiceTracker = ServiceTrackerFactory.createAndOpen(context, SecurityService.class);
securityServiceTracker = new FullyInitializedReplicableTracker<SecurityService>(context, SecurityService.class,
/* customizer */ null, ServiceTrackerFactory.createAndOpen(context, ReplicationService.class));
securityServiceTracker.open();
trackedRaceStatisticsCacheTracker = ServiceTrackerFactory.createAndOpen(context, TrackedRaceStatisticsCache.class);
}
@@ -49,6 +49,8 @@ import com.sap.sse.datamining.shared.impl.dto.StoredDataMiningQueryDTOImpl;
import com.sap.sse.datamining.ui.client.DataMiningService;
import com.sap.sse.gwt.server.ProxiedRemoteServiceServlet;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions;
import com.sap.sse.util.ServiceTrackerFactory;
@@ -58,14 +60,16 @@ public class DataMiningServiceImpl extends ProxiedRemoteServiceServlet implement
private final BundleContext context;
private final ServiceTracker<DataMiningServer, DataMiningServer> dataMiningServerTracker;
private final ServiceTracker<SecurityService, SecurityService> securityServiceTracker;
private final FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
private final StoredDataMiningQueryPersister storedDataMiningQueryPersistor;
private final DataMiningDTOFactory dtoFactory;
public DataMiningServiceImpl() {
context = Activator.getDefault();
dataMiningServerTracker = createAndOpenDataMiningServerTracker(context);
securityServiceTracker = ServiceTrackerFactory.createAndOpen(context, SecurityService.class);
securityServiceTracker = new FullyInitializedReplicableTracker<>(context, SecurityService.class,
/* customizer */ null, ServiceTrackerFactory.createAndOpen(context, ReplicationService.class));
securityServiceTracker.open();
storedDataMiningQueryPersistor = new StoredDataMiningQueryPersisterImpl(getSecurityService(),
dataMiningServerTracker);
dtoFactory = new DataMiningDTOFactory();
@@ -393,7 +393,6 @@ import com.sap.sailing.domain.regattalike.IsRegattaLike;
import com.sap.sailing.domain.regattalike.LeaderboardThatHasRegattaLike;
import com.sap.sailing.domain.regattalog.RegattaLogStore;
import com.sap.sailing.domain.sharding.ShardingContext;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.domain.swisstimingadapter.StartList;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingAdapter;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingAdapterFactory;
@@ -602,6 +601,7 @@ 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;
import com.sap.sailing.simulator.Path;
import com.sap.sailing.simulator.PolarDiagram;
import com.sap.sailing.simulator.SimulationResults;
@@ -659,6 +659,7 @@ import com.sap.sse.pairinglist.PairingList;
import com.sap.sse.pairinglist.PairingListTemplate;
import com.sap.sse.pairinglist.impl.PairingListTemplateImpl;
import com.sap.sse.qrcode.QRCodeGenerationUtil;
import com.sap.sse.replication.FullyInitializedReplicableTracker;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicaDescriptor;
import com.sap.sse.replication.Replicable;
@@ -736,9 +737,9 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
private final ServiceTracker<DeviceIdentifierStringSerializationHandler, DeviceIdentifierStringSerializationHandler>
deviceIdentifierStringSerializationHandlerTracker;
private final ServiceTracker<SecurityService, SecurityService> securityServiceTracker;
private final FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
private final ServiceTracker<SharedSailingData, SharedSailingData> sharedSailingDataTracker;
private final FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker;
private final com.sap.sailing.domain.tractracadapter.persistence.MongoObjectFactory tractracMongoObjectFactory;
@@ -781,10 +782,11 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
BundleContext context = Activator.getDefault();
Activator activator = Activator.getInstance();
quickRanksLiveCache = new QuickRanksLiveCache(this);
replicationServiceTracker = ServiceTrackerFactory.createAndOpen(context, ReplicationService.class); // TODO also use FullyInitializedReplicableTracker
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
sharedSailingDataTracker = ServiceTrackerFactory.createAndOpen(context, SharedSailingData.class);
sharedSailingDataTracker = new FullyInitializedReplicableTracker<>(context, SharedSailingData.class,
/* customizer */ null, replicationServiceTracker);
windFinderTrackerFactoryServiceTracker = ServiceTrackerFactory.createAndOpen(context, WindFinderTrackerFactory.class);
replicationServiceTracker = ServiceTrackerFactory.createAndOpen(context, ReplicationService.class);
resultUrlRegistryServiceTracker = ServiceTrackerFactory.createAndOpen(context, ResultUrlRegistry.class);
swissTimingAdapterTracker = ServiceTrackerFactory.createAndOpen(context, SwissTimingAdapterFactory.class);
tractracAdapterTracker = ServiceTrackerFactory.createAndOpen(context, TracTracAdapterFactory.class);
@@ -792,7 +794,8 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet
RaceLogTrackingAdapterFactory.class);
deviceIdentifierStringSerializationHandlerTracker = ServiceTrackerFactory.createAndOpen(context,
DeviceIdentifierStringSerializationHandler.class);
securityServiceTracker = ServiceTrackerFactory.createAndOpen(context, SecurityService.class);
securityServiceTracker = new FullyInitializedReplicableTracker<>(context, SecurityService.class,
/* customizer */ null, replicationServiceTracker);
igtimiAdapterTracker = ServiceTrackerFactory.createAndOpen(context, IgtimiConnectionFactory.class);
baseDomainFactory = getService().getBaseDomainFactory();
mongoObjectFactory = getService().getMongoObjectFactory();
@@ -15,7 +15,8 @@ Require-Bundle: com.sap.sailing.domain.common,
com.sap.sailing.server.gateway.serialization.shared.android,
com.sap.sse.security,
com.sap.sse.security.common,
com.sap.sse.replication
com.sap.sse.replication,
com.sap.sailing.shared.server
Export-Package: com.sap.sailing.server.gateway.deserialization.impl,
com.sap.sailing.server.gateway.serialization,
com.sap.sailing.server.gateway.serialization.impl,
@@ -52,9 +52,9 @@ import com.sap.sailing.domain.coursetemplate.impl.MarkTemplateBasedMarkConfigura
import com.sap.sailing.domain.coursetemplate.impl.RegattaMarkConfigurationImpl;
import com.sap.sailing.domain.coursetemplate.impl.WaypointWithMarkConfigurationImpl;
import com.sap.sailing.domain.racelogtracking.DeviceMappingWithRegattaLogEvent;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.common.TimeRange;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.common.WithID;
@@ -22,10 +22,10 @@ import com.sap.sailing.domain.coursetemplate.MarkConfigurationRequestAnnotation.
import com.sap.sailing.domain.coursetemplate.Positioning;
import com.sap.sailing.domain.coursetemplate.RepeatablePart;
import com.sap.sailing.domain.coursetemplate.impl.MarkConfigurationRequestAnnotationImpl.MarkRoleCreationRequestImpl;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.CourseConfigurationJsonSerializer;
import com.sap.sailing.shared.server.SharedSailingData;
public class CourseConfigurationJsonDeserializer implements JsonDeserializer<CourseConfiguration<MarkConfigurationRequestAnnotation>> {
@@ -20,10 +20,10 @@ import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.common.ScoreCorrectionProvider;
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapter;
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapterFactory;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.interfaces.RacingEventService;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.InvalidDateException;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.TypeBasedServiceFinderFactory;
@@ -7,8 +7,8 @@ import javax.ws.rs.core.Application;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.server.interfaces.RacingEventService;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.datamining.DataMiningServer;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
@@ -36,5 +36,6 @@ Require-Bundle: com.sap.sailing.server,
com.sap.sse.security.common,
com.sun.jersey;bundle-version="1.17.0",
com.sap.sse.security.testsupport,
com.sap.sailing.domain.racelogtrackingadapter
com.sap.sailing.domain.racelogtrackingadapter,
com.sap.sailing.shared.server
Automatic-Module-Name: com.sap.sailing.server.replication.test
@@ -41,7 +41,8 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sse.mail,
com.sap.sailing.server.interface,
org.mongodb.mongo-java-driver;bundle-version="3.6.4",
com.sap.sse.security.common
com.sap.sse.security.common,
com.sap.sailing.shared.server
Bundle-ClassPath: .
Export-Package: com.sap.sailing.server,
com.sap.sailing.server.anniversary,
@@ -53,6 +53,7 @@ import com.sap.sailing.server.notification.impl.SailingNotificationServiceImpl;
import com.sap.sailing.server.security.SailingViewerRole;
import com.sap.sailing.server.statistics.TrackedRaceStatisticsCache;
import com.sap.sailing.server.statistics.TrackedRaceStatisticsCacheImpl;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.MasterDataImportClassLoaderService;
import com.sap.sse.common.TypeBasedServiceFinder;
import com.sap.sse.common.Util;
@@ -112,7 +113,7 @@ public class Activator implements BundleActivator {
private FullyInitializedReplicableTracker<SecurityService> securityServiceTracker;
private FullyInitializedReplicableTracker<ReplicatingSharedSailingData> sharedSailingDataTracker;
private FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker;
private ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker;
@@ -132,7 +133,7 @@ public class Activator implements BundleActivator {
extenderBundleTracker.open();
mailServiceTracker = ServiceTrackerFactory.createAndOpen(context, MailService.class);
replicationServiceTracker = ServiceTrackerFactory.createAndOpen(context, ReplicationService.class);
sharedSailingDataTracker = new FullyInitializedReplicableTracker<>(context, ReplicatingSharedSailingData.class,
sharedSailingDataTracker = new FullyInitializedReplicableTracker<>(context, SharedSailingData.class,
/* customizer */ null, replicationServiceTracker);
sharedSailingDataTracker.open();
securityServiceTracker = new FullyInitializedReplicableTracker<>(context, SecurityService.class,
@@ -143,7 +144,7 @@ public class Activator implements BundleActivator {
public void run() {
try {
// only continue once we have the service, as some of the services require it to start properly
securityServiceTracker.waitForService(0);
securityServiceTracker.getInitializedService(0);
internalStartBundle(context);
} catch (Exception e) {
logger.log(Level.SEVERE, "Could not start RacingEvent service properly", e);
@@ -214,8 +215,8 @@ public class Activator implements BundleActivator {
}
private void internalStartBundle(BundleContext context) throws MalformedURLException, MalformedObjectNameException,
InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException {
assert securityServiceTracker.getService() != null; // callers must call securityServiceTracker.waitForService(0) before calling this method
InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException, InterruptedException {
assert securityServiceTracker.getInitializedService(0) != null; // callers must call securityServiceTracker.waitForService(0) before calling this method
mailQueue = new ExecutorMailQueue(mailServiceTracker);
notificationService = new SailingNotificationServiceImpl(context, mailQueue);
trackedRegattaListener = new OSGiBasedTrackedRegattaListener(context);
@@ -86,10 +86,10 @@ import com.sap.sailing.domain.racelog.tracking.SensorFixStore;
import com.sap.sailing.domain.racelogtracking.DeviceMappingWithRegattaLogEvent;
import com.sap.sailing.domain.racelogtracking.PingDeviceIdentifier;
import com.sap.sailing.domain.racelogtracking.impl.PingDeviceIdentifierImpl;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.deserialization.impl.CourseConfigurationBuilder;
import com.sap.sailing.server.interfaces.CourseAndMarkConfigurationFactory;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Timed;
@@ -102,7 +102,7 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
private static final Logger logger = Logger.getLogger(CourseAndMarkConfigurationFactoryImpl.class.getName());
private final FullyInitializedReplicableTracker<ReplicatingSharedSailingData> sharedSailingDataTracker;
private final FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker;
private final SensorFixStore sensorFixStore;
/**
@@ -116,7 +116,7 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
private final DomainFactory domainFactory;
public CourseAndMarkConfigurationFactoryImpl(
FullyInitializedReplicableTracker<ReplicatingSharedSailingData> sharedSailingDataTracker,
FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker,
SensorFixStore sensorFixStore, RaceLogResolver raceLogResolver, DomainFactory domainFactory) {
this.sharedSailingDataTracker = sharedSailingDataTracker;
this.domainFactory = domainFactory;
@@ -138,7 +138,7 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
}
private SharedSailingData getSharedSailingData() {
ReplicatingSharedSailingData result;
SharedSailingData result;
try {
result = sharedSailingDataTracker.getInitializedService(0);
} catch (InterruptedException e) {
@@ -281,6 +281,7 @@ import com.sap.sailing.server.statistics.StatisticsCalculator;
import com.sap.sailing.server.statistics.TrackedRaceStatisticsCache;
import com.sap.sailing.server.tagging.TaggingServiceFactory;
import com.sap.sailing.server.util.EventUtil;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.ServerInfo;
import com.sap.sse.common.Distance;
import com.sap.sse.common.Duration;
@@ -627,7 +628,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
SailingNotificationService sailingNotificationService,
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
FullyInitializedReplicableTracker<SecurityService> securityServiceTracker,
FullyInitializedReplicableTracker<ReplicatingSharedSailingData> sharedSailingDataTracker, ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker) {
FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker, ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker) {
this((final RaceLogAndTrackedRaceResolver raceLogResolver) -> {
return new ConstructorParameters() {
private final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE
@@ -760,7 +761,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
SailingNotificationService sailingNotificationService,
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
FullyInitializedReplicableTracker<SecurityService> securityServiceTracker,
FullyInitializedReplicableTracker<ReplicatingSharedSailingData> sharedSailingDataTracker,
FullyInitializedReplicableTracker<SharedSailingData> sharedSailingDataTracker,
ServiceTracker<ReplicationService, ReplicationService> replicationServiceTracker) {
logger.info("Created " + this);
this.currentlyFillingFromInitialLoad = false;
@@ -1,51 +0,0 @@
package com.sap.sailing.server.impl;
import java.net.URL;
import java.util.ArrayList;
import java.util.Map;
import java.util.UUID;
import com.sap.sailing.domain.common.DeviceIdentifier;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
import com.sap.sailing.domain.coursetemplate.MarkRole;
import com.sap.sailing.domain.coursetemplate.MarkTemplate;
import com.sap.sailing.domain.coursetemplate.RepeatablePart;
import com.sap.sailing.domain.coursetemplate.WaypointTemplate;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicableWithObjectInputStream;
public interface ReplicatingSharedSailingData extends SharedSailingData,
ReplicableWithObjectInputStream<ReplicatingSharedSailingData, OperationWithResult<ReplicatingSharedSailingData, ?>> {
Void internalCreateMarkRole(UUID idOfNewMarkRole, String name);
Void internalCreateMarkProperties(UUID idOfNewMarkProperties, CommonMarkProperties properties,
Iterable<String> tags);
Void internalUpdateMarkProperties(UUID idOfNewMarkProperties, CommonMarkProperties properties, Position position,
DeviceIdentifier deviceIdentifier, Iterable<String> tags);
Void internalCreateMarkTemplate(UUID idOfNewMarkTemplate, CommonMarkProperties properties);
Void internalCreateCourseTemplate(UUID idOfNewCourseTemplate, String courseTemplateName,
Iterable<MarkTemplate> marks, Iterable<WaypointTemplate> waypoints,
Map<MarkTemplate, MarkRole> associatedRoles, RepeatablePart optionalRepeatablePart, Iterable<String> tags,
URL optionalImageURL, Integer defaultNumberOfLaps);
Void internalSetTrackingDeviceIdentifierForMarkProperties(UUID markPropertiesUUID, DeviceIdentifier deviceIdentifier);
Void internalSetFixedPositionForMarkProperties(UUID markPropertiesUUID, Position position);
Void internalDeleteMarkProperties(UUID markPropertiesUUID);
Void internalDeleteCourseTemplate(UUID courseTemplateUUID);
Void internalRecordUsage(UUID markTemplateId, UUID markPropertiesId);
Void internalRecordUsage(UUID markPropertiesId, MarkRole roleName);
Void internalUpdateCourseTemplate(UUID uuid, String name, URL optionalImageURL, ArrayList<String> tags);
}
@@ -13,10 +13,10 @@ import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.interfaces.RacingEventService;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.InvalidDateException;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.TypeBasedServiceFinderFactory;
@@ -7,8 +7,8 @@ import javax.ws.rs.core.Application;
import org.osgi.framework.BundleContext;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.server.interfaces.RacingEventService;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.replication.ReplicationService;
import com.sap.sse.security.SecurityService;
import com.sun.jersey.spi.container.servlet.ServletContainer;
@@ -7,8 +7,7 @@ Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.sap.sailing.shared.server.impl.Activator
Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.sap.sailing.server.gateway.deserialization,
javax.mail;version="1.4.0",
Import-Package: javax.mail;version="1.4.0",
javax.mail.internet;version="1.4.0",
javax.mail.util;version="1.4.0",
org.json.simple,
@@ -20,12 +19,10 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sse.mongodb,
com.sap.sailing.domain.common,
com.sap.sailing.domain.shared.android,
com.sap.sailing.server.gateway.serialization,
com.sap.sse.common,
com.sap.sse.operationaltransformation,
com.sap.sse.replication.interfaces,
com.sap.sse,
com.sap.sailing.server.gateway.serialization.shared.android,
com.sap.sse.shared.android,
com.sap.sse.security,
com.sap.sse.security.common,
@@ -33,12 +30,12 @@ Require-Bundle: com.sap.sailing.domain,
org.apache.shiro.core;bundle-version="1.2.2",
javax.servlet;bundle-version="3.1.0",
com.sap.sse.mail,
com.sap.sailing.server.interface,
org.mongodb.mongo-java-driver;bundle-version="3.6.4",
com.sap.sse.security.common,
com.sap.sailing.shared.persistence
Bundle-ClassPath: .
Export-Package: com.sap.sailing.shared.server.impl;
Export-Package: com.sap.sailing.shared.server,
com.sap.sailing.shared.server.impl;
x-friends:="com.sap.sailing.mongodb.test,
com.sap.sailing.server.test,
com.sap.sailing.server.gateway.test,
@@ -1,4 +1,4 @@
package com.sap.sailing.domain.sharedsailingdata;
package com.sap.sailing.shared.server;
import java.net.URL;
import java.util.ArrayList;
@@ -17,8 +17,11 @@ import com.sap.sailing.domain.coursetemplate.MarkTemplate;
import com.sap.sailing.domain.coursetemplate.Positioning;
import com.sap.sailing.domain.coursetemplate.RepeatablePart;
import com.sap.sailing.domain.coursetemplate.WaypointTemplate;
import com.sap.sailing.shared.server.impl.ReplicatingSharedSailingData;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicableWithObjectInputStream;
import com.sap.sse.security.SecurityService;
import com.sap.sse.security.shared.HasPermissions.DefaultActions;
import com.sap.sse.security.shared.impl.UserGroup;
@@ -42,7 +45,7 @@ import com.sap.sse.security.shared.impl.UserGroup;
* @author Axel Uhl (D043530)
*
*/
public interface SharedSailingData {
public interface SharedSailingData extends ReplicableWithObjectInputStream<ReplicatingSharedSailingData, OperationWithResult<ReplicatingSharedSailingData, ?>> {
Iterable<MarkProperties> getAllMarkProperties(Iterable<String> tagsToFilterFor);
@@ -10,8 +10,8 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sailing.shared.persistence.PersistenceFactory;
import com.sap.sailing.shared.server.SharedSailingData;
import com.sap.sse.osgi.CachedOsgiTypeBasedServiceFinderFactory;
import com.sap.sse.replication.Replicable;
import com.sap.sse.security.SecurityService;
@@ -11,12 +11,9 @@ import com.sap.sailing.domain.coursetemplate.MarkTemplate;
import com.sap.sailing.domain.coursetemplate.Positioning;
import com.sap.sailing.domain.coursetemplate.RepeatablePart;
import com.sap.sailing.domain.coursetemplate.WaypointTemplate;
import com.sap.sailing.domain.sharedsailingdata.SharedSailingData;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicableWithObjectInputStream;
import com.sap.sailing.shared.server.SharedSailingData;
public interface ReplicatingSharedSailingData extends SharedSailingData,
ReplicableWithObjectInputStream<ReplicatingSharedSailingData, OperationWithResult<ReplicatingSharedSailingData, ?>> {
public interface ReplicatingSharedSailingData extends SharedSailingData {
Void internalCreateMarkRole(UUID idOfNewMarkRole, String name, String shortName);