mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-10 21:02:40 +00:00
Bug 5085: Implemented resolving MarkTemplates in replication to ensure
single instance pattern
This commit is contained in:
1 parent
1b11b14a23
commit
deddadf0bf
2 files changed
+19
-2
No files matched your search
+14
-1
@@ -4,6 +4,8 @@ import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkTemplate.MarkTemplateResolver;
|
||||
import com.sap.sse.common.IsManagedByCache;
|
||||
import com.sap.sse.common.NamedWithUUID;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.QualifiedObjectIdentifier;
|
||||
@@ -19,7 +21,18 @@ import com.sap.sse.security.shared.WithQualifiedObjectIdentifier;
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public interface MarkTemplate extends ControlPointTemplate, NamedWithUUID, CommonMarkProperties, WithQualifiedObjectIdentifier {
|
||||
public interface MarkTemplate extends ControlPointTemplate, NamedWithUUID, CommonMarkProperties,
|
||||
WithQualifiedObjectIdentifier, IsManagedByCache<MarkTemplateResolver> {
|
||||
public interface MarkTemplateResolver {
|
||||
|
||||
MarkTemplate getOrCreate(MarkTemplate markTemplate);
|
||||
}
|
||||
|
||||
@Override
|
||||
default IsManagedByCache<MarkTemplateResolver> resolve(MarkTemplateResolver resolver) {
|
||||
return resolver.getOrCreate(this);
|
||||
}
|
||||
|
||||
public static TypeRelativeObjectIdentifier getTypeRelativeObjectIdentifier(UUID markTemplateUUID) {
|
||||
return new TypeRelativeObjectIdentifier(markTemplateUUID.toString());
|
||||
}
|
||||
|
||||
+5
-1
@@ -26,6 +26,7 @@ import com.sap.sailing.domain.coursetemplate.CourseTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkPropertiesBuilder;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkTemplate.MarkTemplateResolver;
|
||||
import com.sap.sailing.domain.coursetemplate.RepeatablePart;
|
||||
import com.sap.sailing.domain.coursetemplate.WaypointTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.CourseTemplateImpl;
|
||||
@@ -48,6 +49,7 @@ import com.sap.sse.replication.ReplicationMasterDescriptor;
|
||||
import com.sap.sse.replication.ReplicationService;
|
||||
import com.sap.sse.security.SecurityService;
|
||||
import com.sap.sse.util.ClearStateTestSupport;
|
||||
import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache;
|
||||
|
||||
public class SharedSailingDataImpl implements ReplicatingSharedSailingData, ClearStateTestSupport {
|
||||
|
||||
@@ -540,7 +542,9 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea
|
||||
|
||||
@Override
|
||||
public ObjectInputStream createObjectInputStreamResolvingAgainstCache(InputStream is) throws IOException {
|
||||
return new ObjectInputStream(is);
|
||||
return new ObjectInputStreamResolvingAgainstCache<MarkTemplateResolver>(is,
|
||||
mt -> markTemplatesById.computeIfAbsent(mt.getId(), id -> mt), null) {
|
||||
};
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
Reference in new issue
Block a user