mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-07 19:42:17 +00:00
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:
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",
|
||||
|
||||
+11
-5
@@ -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
|
||||
|
||||
+12
-7
@@ -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,
|
||||
|
||||
+6
-2
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+6
-2
@@ -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();
|
||||
|
||||
+9
-6
@@ -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,
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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>> {
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+4
-4
@@ -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) {
|
||||
|
||||
+3
-2
@@ -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;
|
||||
|
||||
-51
@@ -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);
|
||||
|
||||
}
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+5
-2
@@ -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);
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+2
-5
@@ -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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user