diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/PingDeviceIdentifier.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/PingDeviceIdentifier.java new file mode 100644 index 00000000000..2b1949dfc48 --- /dev/null +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/PingDeviceIdentifier.java @@ -0,0 +1,14 @@ +package com.sap.sailing.domain.racelog.tracking; + +import java.util.UUID; + +/** + * A device identifier used to identify a non-existent, virtual device, which is used only once as an + * identifier to add a single fix to a track (i.e. pinging the location of that track's item). + * + * @author Fredrik Teschke + * + */ +public interface PingDeviceIdentifier extends DeviceIdentifier { + UUID getId(); +} diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/Activator.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/Activator.java index 4baaca7a080..2e7dfd5b4be 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/Activator.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/Activator.java @@ -52,6 +52,8 @@ public class Activator implements BundleActivator { registrations.add(context.registerService(DeviceIdentifierMongoHandler.class, new SmartphoneImeiMongoHandlerImpl(), getDict(SmartphoneImeiIdentifier.TYPE))); registrations.add(context.registerService(DeviceIdentifierJsonHandler.class, new SmartphoneImeiJsonHandlerImpl(), getDict(SmartphoneImeiIdentifier.TYPE))); + registrations.add(context.registerService(DeviceIdentifierMongoHandler.class, new PingDeviceMongoHandlerImpl(), getDict(PingDeviceIdentifierImpl.TYPE))); + registerGPSFixJsonService(context, new GPSFixJsonDeserializer(), new GPSFixJsonSerializer(), GPSFixJsonDeserializer.TYPE); registerGPSFixJsonService(context, new GPSFixMovingJsonDeserializer(), new GPSFixMovingJsonSerializer(), GPSFixMovingJsonDeserializer.TYPE); registerGPSFixJsonService(context, new GPSFixNmeaDTOJsonDeserializer(), new GPSFixNmeaDTOJsonSerializer(), GPSFixNmeaDTOJsonDeserializer.TYPE); diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceIdentifierImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceIdentifierImpl.java new file mode 100644 index 00000000000..ec7ec08fa0b --- /dev/null +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceIdentifierImpl.java @@ -0,0 +1,44 @@ +package com.sap.sailing.domain.racelog.tracking.impl; + +import java.util.UUID; + +import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.SharedDomainFactory; +import com.sap.sailing.domain.racelog.tracking.PingDeviceIdentifier; + +public class PingDeviceIdentifierImpl implements PingDeviceIdentifier { + private static final long serialVersionUID = -4049961972156611640L; + + public static final String TYPE = "PING"; + + private final UUID id; + + public PingDeviceIdentifierImpl() { + this.id = UUID.randomUUID(); + } + + public PingDeviceIdentifierImpl(UUID id) { + this.id = id; + } + + @Override + public String getIdentifierType() { + return TYPE; + } + + @Override + public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + //No resolving necessary, only relevant on the creating server + return this; + } + + @Override + public UUID getId() { + return id; + } + + @Override + public String getStringRepresentation() { + return id.toString(); + } +} diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceMongoHandlerImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceMongoHandlerImpl.java new file mode 100644 index 00000000000..7e0d82f2dd3 --- /dev/null +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelog/tracking/impl/PingDeviceMongoHandlerImpl.java @@ -0,0 +1,26 @@ +package com.sap.sailing.domain.racelog.tracking.impl; + +import java.util.UUID; + +import com.sap.sailing.domain.common.racelog.tracking.TransformationException; +import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler; +import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sailing.domain.racelog.tracking.PingDeviceIdentifier; + +public class PingDeviceMongoHandlerImpl implements DeviceIdentifierMongoHandler { + private PingDeviceIdentifier castIdentifier(DeviceIdentifier identifier) throws TransformationException { + if (!(identifier instanceof PingDeviceIdentifier)) + throw new TransformationException("Expected a PingDeviceIdentifier, got instead: " + identifier); + return (PingDeviceIdentifier) identifier; + } + + @Override + public Object transformForth(DeviceIdentifier deviceIdentifier) throws TransformationException { + return castIdentifier(deviceIdentifier).getId().toString(); + } + + @Override + public DeviceIdentifier transformBack(Object input) { + return new PingDeviceIdentifierImpl(UUID.fromString((String) input)); + } +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceIdentifier.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceIdentifier.java index 6325bb686af..91eb0a7e90a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceIdentifier.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/DeviceIdentifier.java @@ -19,5 +19,12 @@ public interface DeviceIdentifier extends IsManagedBySharedDomainFactory, Serial * have to register new OSGi service, and not touch the SAP Sailing Analytics code. */ String getIdentifierType(); + + /** + * Create a string representation, that can identify this device. + * The returned values should be unique for this identifier within its {@link #getIdentifierType() type}, + * but need not include the {@link #getIdentifierType() type} itself in the representation. + */ + String getStringRepresentation(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/PlaceHolderDeviceIdentifier.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/PlaceHolderDeviceIdentifier.java new file mode 100644 index 00000000000..89beb01b1f3 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/PlaceHolderDeviceIdentifier.java @@ -0,0 +1,41 @@ +package com.sap.sailing.domain.racelog.tracking; + +import com.sap.sailing.domain.base.IsManagedBySharedDomainFactory; +import com.sap.sailing.domain.base.SharedDomainFactory; + +/** + * If the proper identifier cannot be resolved, for example because the OSGi context is not available + * on the smartphone receiving the {@code DevicieIdentifier} via its {@code RaceLog}, then this + * class can be used as a placeholder, that will at least offer the {@code type} and {@code string representation} + * of the original identifier. + * + * @author Fredrik Teschke + * + */ +public class PlaceHolderDeviceIdentifier implements DeviceIdentifier { + private static final long serialVersionUID = 8642469389180406246L; + + private final String type; + private final String stringRepresentation; + + public PlaceHolderDeviceIdentifier(String type, String stringRepresentation) { + this.type = type; + this.stringRepresentation = stringRepresentation; + } + + @Override + public IsManagedBySharedDomainFactory resolve(SharedDomainFactory domainFactory) { + return this; + } + + @Override + public String getIdentifierType() { + return type; + } + + @Override + public String getStringRepresentation() { + return stringRepresentation; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/SmartphoneImeiIdentifier.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/SmartphoneImeiIdentifier.java index 7e590f727c8..e07ebcceb14 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/SmartphoneImeiIdentifier.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/racelog/tracking/SmartphoneImeiIdentifier.java @@ -51,4 +51,9 @@ public class SmartphoneImeiIdentifier implements DeviceIdentifier { } return false; } + + @Override + public String getStringRepresentation() { + return imei; + } } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/PlaceHolderDeviceIdentifierJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/PlaceHolderDeviceIdentifierJsonDeserializer.java new file mode 100644 index 00000000000..356071696fe --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/PlaceHolderDeviceIdentifierJsonDeserializer.java @@ -0,0 +1,20 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.racelog.tracking.PlaceHolderDeviceIdentifier; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierBaseJsonSerializer; + +public class PlaceHolderDeviceIdentifierJsonDeserializer implements JsonDeserializer { + @Override + public PlaceHolderDeviceIdentifier deserialize(JSONObject object) throws JsonDeserializationException { + String type = (String) object.get(TypeBasedJsonDeserializer.FIELD_TYPE); + String stringRepresentation = (String) object.get(DeviceIdentifierBaseJsonSerializer.FIELD_STRING_REPRESENTATION); + + return new PlaceHolderDeviceIdentifier(type, stringRepresentation); + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogEventDeserializer.java index 7bfe4a7ae2b..661c67d7c2c 100755 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogEventDeserializer.java @@ -4,10 +4,8 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.SharedDomainFactory; -import com.sap.sailing.domain.common.racelog.tracking.SingleTypeBasedServiceFinderImpl; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder; import com.sap.sailing.domain.racelog.RaceLogEvent; -import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.coursedata.impl.ControlPointDeserializer; @@ -40,14 +38,13 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTim import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTrackingEventSerializer; import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogWindFixEventSerializer; import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler; -import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandlerImpl; +import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder; public class RaceLogEventDeserializer implements JsonDeserializer { public static RaceLogEventDeserializer create(SharedDomainFactory domainFactory) { return create(domainFactory, - new SingleTypeBasedServiceFinderImpl( - new SmartphoneImeiJsonHandlerImpl(), SmartphoneImeiIdentifier.TYPE)); + new SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder()); } public static RaceLogEventDeserializer create(SharedDomainFactory domainFactory, diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceIdentifierBaseJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceIdentifierBaseJsonSerializer.java new file mode 100644 index 00000000000..1078c382e6a --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/DeviceIdentifierBaseJsonSerializer.java @@ -0,0 +1,22 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public abstract class DeviceIdentifierBaseJsonSerializer implements JsonSerializer { + public static final String FIELD_STRING_REPRESENTATION = "stringRepresentation"; + + protected abstract JSONObject furtherSerialize(T object, JSONObject result); + + @Override + public JSONObject serialize(T object) { + JSONObject result = new JSONObject(); + result.put(TypeBasedJsonDeserializer.FIELD_TYPE, object.getIdentifierType()); + result.put(FIELD_STRING_REPRESENTATION, object.getStringRepresentation()); + return furtherSerialize(object, result); + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SmartphoneImeiIdentifierJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SmartphoneImeiIdentifierJsonSerializer.java index 3e8bcaaf276..91a4caa0728 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SmartphoneImeiIdentifierJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/SmartphoneImeiIdentifierJsonSerializer.java @@ -3,18 +3,14 @@ package com.sap.sailing.server.gateway.serialization.impl; import org.json.simple.JSONObject; import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier; -import com.sap.sailing.server.gateway.deserialization.TypeBasedJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.SmartphoneImeiIdentifierJsonDeserializer; import com.sap.sailing.server.gateway.serialization.JsonSerializer; -public class SmartphoneImeiIdentifierJsonSerializer implements JsonSerializer { - +public class SmartphoneImeiIdentifierJsonSerializer extends DeviceIdentifierBaseJsonSerializer +implements JsonSerializer { @Override - public JSONObject serialize(SmartphoneImeiIdentifier identifier) { - JSONObject result = new JSONObject(); - - result.put(TypeBasedJsonDeserializer.FIELD_TYPE, SmartphoneImeiIdentifier.TYPE); - result.put(SmartphoneImeiIdentifierJsonDeserializer.FIELD_IMEI, identifier.getImei()); + protected JSONObject furtherSerialize(SmartphoneImeiIdentifier object, JSONObject result) { + result.put(SmartphoneImeiIdentifierJsonDeserializer.FIELD_IMEI, object.getImei()); return result; } } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java index 6b3840c8f33..50a469f2cb5 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java @@ -3,7 +3,6 @@ package com.sap.sailing.server.gateway.serialization.racelog.impl; import org.json.simple.JSONObject; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.racelog.tracking.SingleTypeBasedServiceFinderImpl; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder; import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent; import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent; @@ -22,12 +21,11 @@ import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.RaceLogWindFixEvent; import com.sap.sailing.domain.racelog.RevokeEvent; import com.sap.sailing.domain.racelog.tracking.DefineMarkEvent; -import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; -import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent; import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent; import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent; import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent; -import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier; +import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent; +import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent; import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer; import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer; @@ -37,13 +35,11 @@ import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJson import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler; -import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandlerImpl; +import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder; public class RaceLogEventSerializer implements JsonSerializer, RaceLogEventVisitor { public static JsonSerializer create(JsonSerializer competitorSerializer) { - return create(competitorSerializer, - new SingleTypeBasedServiceFinderImpl( - new SmartphoneImeiJsonHandlerImpl(), SmartphoneImeiIdentifier.TYPE)); + return create(competitorSerializer, new SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder()); } public static JsonSerializer create(JsonSerializer competitorSerializer, TypeBasedServiceFinder deviceServiceFinder) { diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder.java new file mode 100644 index 00000000000..8de6d8c7162 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder.java @@ -0,0 +1,52 @@ +package com.sap.sailing.server.gateway.serialization.racelog.tracking.impl; + +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; +import com.sap.sailing.domain.common.racelog.tracking.SingleTypeBasedServiceFinderImpl; +import com.sap.sailing.domain.common.racelog.tracking.TransformationException; +import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier; +import com.sap.sailing.server.gateway.deserialization.impl.PlaceHolderDeviceIdentifierJsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.DeviceIdentifierBaseJsonSerializer; +import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler; + +public class DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder extends + SingleTypeBasedServiceFinderImpl { + private final DeviceIdentifierJsonHandler placeHolderHandler; + + + public DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder(DeviceIdentifierJsonHandler service, String type) { + super(service, type); + final PlaceHolderDeviceIdentifierJsonDeserializer placeHolderDeserializer = + new PlaceHolderDeviceIdentifierJsonDeserializer(); + final DeviceIdentifierBaseJsonSerializer placeHolderSerializer = + new DeviceIdentifierBaseJsonSerializer() { + @Override + protected JSONObject furtherSerialize(DeviceIdentifier object, JSONObject result) { + return result; + } + }; + + placeHolderHandler = new DeviceIdentifierJsonHandler() { + + @Override + public JSONObject transformForth(DeviceIdentifier object) throws TransformationException { + return placeHolderSerializer.serialize(object); + } + + @Override + public DeviceIdentifier transformBack(JSONObject object) throws TransformationException { + return placeHolderDeserializer.deserialize(object); + } + }; + } + + @Override + public DeviceIdentifierJsonHandler findService(String type) { + try { + return super.findService(type); + } catch (NoCorrespondingServiceRegisteredException e) { + return placeHolderHandler; + } + } +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder.java new file mode 100644 index 00000000000..c50ea78f219 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/racelog/tracking/impl/SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder.java @@ -0,0 +1,12 @@ +package com.sap.sailing.server.gateway.serialization.racelog.tracking.impl; + +import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier; + +public class SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder extends + DeviceIdentifierJsonHandlerFactoryDefaultingToPlaceHolder { + + public SmartphoneImeiJsonHandlerFactoryDefaultingToPlaceHolder() { + super(new SmartphoneImeiJsonHandlerImpl(), SmartphoneImeiIdentifier.TYPE); + } + +}