Skip to content

Commit 11bf907

Browse files
renovate[bot]jannebe
authored andcommitted
Update all dependencies
1 parent 4233c54 commit 11bf907

5 files changed

Lines changed: 88 additions & 24 deletions

File tree

src/main/kotlin/fi/hsl/jore4/mapmatching/MapMatchingApplication.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import com.fasterxml.jackson.module.kotlin.KotlinModule
77
import org.geolatte.geom.json.GeolatteGeomModule
88
import org.geolatte.geom.json.Setting
99
import org.springframework.boot.autoconfigure.SpringBootApplication
10-
import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration
1110
import org.springframework.boot.runApplication
11+
import org.springframework.boot.security.autoconfigure.UserDetailsServiceAutoConfiguration
1212
import org.springframework.context.annotation.Bean
1313
import org.springframework.context.annotation.Primary
1414
import org.springframework.transaction.annotation.EnableTransactionManagement

src/main/kotlin/fi/hsl/jore4/mapmatching/config/FlywaySupplementalConfig.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package fi.hsl.jore4.mapmatching.config
2+
3+
import org.geolatte.geom.LineString
4+
import org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer
5+
import org.springframework.context.annotation.Bean
6+
import org.springframework.context.annotation.Configuration
7+
import tools.jackson.core.JsonGenerator
8+
import tools.jackson.databind.SerializationContext
9+
import tools.jackson.databind.SerializationFeature
10+
import tools.jackson.databind.ValueSerializer
11+
import tools.jackson.databind.module.SimpleModule
12+
13+
@Configuration
14+
class JacksonGeoJsonConfig {
15+
@Bean
16+
fun geolatteLineStringJsonCustomizer(): JsonMapperBuilderCustomizer =
17+
JsonMapperBuilderCustomizer { builder ->
18+
val module = SimpleModule("GeoLatteLineStringModule")
19+
@Suppress("UNCHECKED_CAST")
20+
module.addSerializer(
21+
LineString::class.java as Class<LineString<*>>,
22+
GeoLatteLineStringSerializer()
23+
)
24+
25+
builder.addModule(module)
26+
builder.disable(SerializationFeature.FAIL_ON_SELF_REFERENCES)
27+
builder.enable(SerializationFeature.WRITE_SELF_REFERENCES_AS_NULL)
28+
}
29+
30+
private class GeoLatteLineStringSerializer : ValueSerializer<LineString<*>>() {
31+
override fun serialize(
32+
value: LineString<*>,
33+
generator: JsonGenerator,
34+
context: SerializationContext
35+
) {
36+
val positions = value.positions
37+
val coordinateDimension = positions.coordinateDimension
38+
39+
generator.writeStartObject(value)
40+
generator.writeStringProperty("type", "LineString")
41+
generator.writeName("coordinates")
42+
generator.writeStartArray()
43+
44+
val coordinateBuffer = DoubleArray(coordinateDimension)
45+
for (index in 0 until positions.size()) {
46+
positions.getCoordinates(index, coordinateBuffer)
47+
generator.writeStartArray()
48+
for (dimension in 0 until coordinateDimension) {
49+
generator.writeNumber(coordinateBuffer[dimension])
50+
}
51+
generator.writeEndArray()
52+
}
53+
54+
generator.writeEndArray()
55+
generator.writeEndObject()
56+
}
57+
}
58+
}

src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ spring.flyway.locations=classpath:db/migration
1010
spring.flyway.schemas=routing,extensions,flyway
1111
spring.flyway.default-schema=flyway
1212
spring.flyway.create-schemas=true
13+
spring.flyway.init-sqls=SET search_path = extensions, routing;
1314

1415
spring.thymeleaf.cache=@spring.thymeleaf.cache@
1516

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package fi.hsl.jore4.mapmatching.config
2+
3+
import org.geolatte.geom.builder.DSL.c
4+
import org.geolatte.geom.builder.DSL.linestring
5+
import org.geolatte.geom.crs.CrsRegistry
6+
import org.hamcrest.MatcherAssert.assertThat
7+
import org.hamcrest.Matchers.containsString
8+
import org.junit.jupiter.api.Test
9+
import tools.jackson.databind.json.JsonMapper
10+
11+
class JacksonGeoJsonConfigTest {
12+
@Test
13+
fun serializesGeolatteLineStringAsGeoJson() {
14+
val customizer = JacksonGeoJsonConfig().geolatteLineStringJsonCustomizer()
15+
val builder = JsonMapper.builder()
16+
customizer.customize(builder)
17+
val mapper = builder.build()
18+
19+
val epsg3067 = CrsRegistry.getProjectedCoordinateReferenceSystemForEPSG(3067)
20+
val geometry = linestring(epsg3067, c(385795.1, 6672185.2), c(386284.0, 6673127.0))
21+
22+
val payload: Map<String, Any> = mapOf("geometry" to geometry)
23+
val json = mapper.writeValueAsString(payload)
24+
25+
assertThat(json, containsString("\"geometry\":{\"type\":\"LineString\""))
26+
assertThat(json, containsString("\"coordinates\":[[385795.1,6672185.2],[386284.0,6673127.0]]"))
27+
}
28+
}

0 commit comments

Comments
 (0)