
org.locationtech.geomesa.kafka.confluent.ConfluentGeoMessageSerializer.scala Maven / Gradle / Ivy
The newest version!
/***********************************************************************
* Copyright (c) 2013-2025 Commonwealth Computer Research, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License, Version 2.0
* which accompanies this distribution and is available at
* http://www.opensource.org/licenses/apache2.0.php.
***********************************************************************/
package org.locationtech.geomesa.kafka.confluent
import org.apache.avro.Schema
import org.geotools.api.feature.simple.SimpleFeatureType
import org.locationtech.geomesa.kafka.utils.GeoMessageSerializer.GeoMessageSerializerFactory
import org.locationtech.geomesa.kafka.utils.{GeoMessage, GeoMessageSerializer}
import java.net.URL
class ConfluentGeoMessageSerializer(sft: SimpleFeatureType, serializer: ConfluentFeatureSerializer)
extends GeoMessageSerializer(sft, serializer, null, null, 0) {
override def deserialize(
key: Array[Byte],
value: Array[Byte],
headers: Map[String, Array[Byte]],
timestamp: Long): GeoMessage = {
// by-pass header and old version checks
super.deserialize(key, value, serializer)
}
}
object ConfluentGeoMessageSerializer {
class ConfluentGeoMessageSerializerFactory(schemaRegistryUrl: URL, schemaOverrides: Map[String, Schema])
extends GeoMessageSerializerFactory(null) {
override def apply(sft: SimpleFeatureType): GeoMessageSerializer = {
val serializer =
ConfluentFeatureSerializer.builder(sft, schemaRegistryUrl, schemaOverrides.get(sft.getTypeName))
.withoutId.withUserData.build()
new ConfluentGeoMessageSerializer(sft, serializer)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy