From 177e3e0721eceb3b2a11cb7ac5966c2c73d6e3fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Erik=20St=C3=B8wer?= Date: Mon, 23 Oct 2023 10:39:56 +0200 Subject: [PATCH 1/3] Update netex parser --- pom.xml | 2 +- src/main/java/no/entur/mummu/services/NetexObjectFactory.java | 4 +++- src/main/java/no/entur/mummu/updater/StopPlacesUpdater.java | 2 +- .../java/no/entur/mummu/updater/StopPlacesUpdaterTest.java | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 48fdd13c..a5ad1ec8 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ 17 1.0.77 - 2.2.0 + 2.2.1-SNAPSHOT 2.3.0.1 2.9.13.1 diff --git a/src/main/java/no/entur/mummu/services/NetexObjectFactory.java b/src/main/java/no/entur/mummu/services/NetexObjectFactory.java index 0a77c72c..0ffb2a16 100644 --- a/src/main/java/no/entur/mummu/services/NetexObjectFactory.java +++ b/src/main/java/no/entur/mummu/services/NetexObjectFactory.java @@ -26,6 +26,8 @@ public class NetexObjectFactory extends ObjectFactory { public static final String NAMESPACE_URI = "http://www.netex.org.uk/netex"; + + private static final QName _stopPlace_QNAME = new QName(NAMESPACE_URI, "stopPlace"); private static final QName _stopPlaces_QNAME = new QName(NAMESPACE_URI, "stopPlaces"); private static final QName _groupsOfStopPlaces_QNAME = new QName(NAMESPACE_URI, "groupsOfStopPlaces"); private static final QName _fareZones_QNAME = new QName(NAMESPACE_URI, "fareZones"); @@ -40,7 +42,7 @@ public JAXBElement createGroupsOfStopPla } public JAXBElement createStopPlaces(List stopPlaces) { - var stopPlacesInFrame = createStopPlacesInFrame_RelStructure().withStopPlace(stopPlaces); + var stopPlacesInFrame = createStopPlacesInFrame_RelStructure().withStopPlace_(stopPlaces.stream().map(stopPlace -> new JAXBElement<>(_stopPlace_QNAME, StopPlace.class, stopPlace)).collect(Collectors.toList())); return new JAXBElement<>(_stopPlaces_QNAME, StopPlacesInFrame_RelStructure.class, stopPlacesInFrame); } diff --git a/src/main/java/no/entur/mummu/updater/StopPlacesUpdater.java b/src/main/java/no/entur/mummu/updater/StopPlacesUpdater.java index b2c81fbb..53099a1c 100644 --- a/src/main/java/no/entur/mummu/updater/StopPlacesUpdater.java +++ b/src/main/java/no/entur/mummu/updater/StopPlacesUpdater.java @@ -62,7 +62,7 @@ private void delete(String stopPlaceId) { log.info("couldn't find stop place in index {}", stopPlaceId); } else { if (stopPlace.getQuays() != null) { - stopPlace.getQuays().getQuayRefOrQuay().forEach(quay -> netexEntitiesIndex.getQuayIndex().remove(((Quay) quay).getId())); + stopPlace.getQuays().getQuayRefOrQuay().forEach(quay -> netexEntitiesIndex.getQuayIndex().remove(((Quay) quay.getValue()).getId())); } netexEntitiesIndex.getStopPlaceIndex().getLatestVersions().forEach(stop -> { if (stop.getParentSiteRef() != null && stop.getParentSiteRef().getRef().equals(stopPlaceId)) { diff --git a/src/test/java/no/entur/mummu/updater/StopPlacesUpdaterTest.java b/src/test/java/no/entur/mummu/updater/StopPlacesUpdaterTest.java index b8550fa4..8989550a 100644 --- a/src/test/java/no/entur/mummu/updater/StopPlacesUpdaterTest.java +++ b/src/test/java/no/entur/mummu/updater/StopPlacesUpdaterTest.java @@ -51,7 +51,7 @@ void testDelete() { Assertions.assertTrue(netexEntitiesIndex.getStopPlaceIndex().getAllVersions("NSR:StopPlace:4055").size() > 0); Collection quays = netexEntitiesIndex.getStopPlaceIndex().getLatestVersion("NSR:StopPlace:4055").getQuays().getQuayRefOrQuay() .stream() - .map(o -> (Quay) o) + .map(o -> (Quay) o.getValue()) .map(EntityStructure::getId) .collect(Collectors.toList()); From e28608db895855b8c252f5063f10b1ee2b97487c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Erik=20St=C3=B8wer?= Date: Tue, 7 Nov 2023 14:44:56 +0100 Subject: [PATCH 2/3] Draft v2 of json api --- pom.xml | 6 +++++ .../java/no/entur/mummu/config/WebConfig.java | 12 ++++++++-- .../entur/mummu/resources/RestResource.java | 1 + .../mummu/serializers/CustomSerializers.java | 5 +++++ .../serializers/JAXBElementSerializer.java | 9 ++++++++ .../serializers/TariffZoneRefsSerializer.java | 22 +++++++++++++++++++ 6 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/no/entur/mummu/serializers/TariffZoneRefsSerializer.java diff --git a/pom.xml b/pom.xml index 2c60f16f..3e0a1aa6 100644 --- a/pom.xml +++ b/pom.xml @@ -139,6 +139,12 @@ 1.11.3 + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + 2.8.11 + + io.confluent diff --git a/src/main/java/no/entur/mummu/config/WebConfig.java b/src/main/java/no/entur/mummu/config/WebConfig.java index be710d77..863ae781 100644 --- a/src/main/java/no/entur/mummu/config/WebConfig.java +++ b/src/main/java/no/entur/mummu/config/WebConfig.java @@ -4,7 +4,9 @@ import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule; import no.entur.mummu.serializers.CustomSerializers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; @@ -49,18 +51,24 @@ public void configureMessageConverters(List> converters) converters.add(new NetexHttpMessageConverter()); } - @Override + /* @Override public void addFormatters(FormatterRegistry registry) { WebMvcConfigurer.super.addFormatters(registry); registry.addFormatter(new StringToVehicleModeEnumeration()); registry.addFormatter(new StringToStopTypeEnumeration()); - } + }*/ public ObjectMapper jsonObjectMapper() { ArrayList modules = new ArrayList<>(); + var customSerializersModule = new SimpleModule(); customSerializersModule.setSerializers(customSerializers); modules.add(customSerializersModule); + + JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule(); + modules.add(jaxbAnnotationModule); + + return Jackson2ObjectMapperBuilder.json() .serializationInclusion(JsonInclude.Include.NON_EMPTY) .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) diff --git a/src/main/java/no/entur/mummu/resources/RestResource.java b/src/main/java/no/entur/mummu/resources/RestResource.java index 89f92c11..89b8ae34 100644 --- a/src/main/java/no/entur/mummu/resources/RestResource.java +++ b/src/main/java/no/entur/mummu/resources/RestResource.java @@ -28,6 +28,7 @@ import javax.xml.bind.JAXBElement; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; @RestController diff --git a/src/main/java/no/entur/mummu/serializers/CustomSerializers.java b/src/main/java/no/entur/mummu/serializers/CustomSerializers.java index d56a5a2f..1965a992 100644 --- a/src/main/java/no/entur/mummu/serializers/CustomSerializers.java +++ b/src/main/java/no/entur/mummu/serializers/CustomSerializers.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.module.SimpleSerializers; import com.fasterxml.jackson.databind.type.TypeFactory; +import org.rutebanken.netex.model.TariffZoneRefs_RelStructure; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,6 +37,10 @@ public JsonSerializer findSerializer(SerializationConfig config, JavaType typ return new LocalDateTimeWithConstantZoneSerializer(mummuSerializerContext); } + if (type.getRawClass().equals(TariffZoneRefs_RelStructure.class)) { + return new TariffZoneRefsSerializer(); + } + return super.findSerializer(config, type, beanDesc); } diff --git a/src/main/java/no/entur/mummu/serializers/JAXBElementSerializer.java b/src/main/java/no/entur/mummu/serializers/JAXBElementSerializer.java index 2ed04e2b..63c80b71 100644 --- a/src/main/java/no/entur/mummu/serializers/JAXBElementSerializer.java +++ b/src/main/java/no/entur/mummu/serializers/JAXBElementSerializer.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.jsontype.TypeSerializer; import javax.xml.bind.JAXBElement; import java.io.IOException; @@ -17,4 +18,12 @@ public void serialize(JAXBElement jaxbElement, JsonGenerator jsonGenerator, S jsonGenerator.writeObjectField("value", jaxbElement.getValue()); jsonGenerator.writeEndObject(); } + + @Override + public void serializeWithType(JAXBElement jaxbElement, JsonGenerator jsonGenerator, SerializerProvider serializerProvider, TypeSerializer typeSer) throws IOException { + jsonGenerator.writeStartObject(); + jsonGenerator.writeStringField("type", jaxbElement.getName().getLocalPart()); + jsonGenerator.writeObjectField("value", jaxbElement.getValue()); + jsonGenerator.writeEndObject(); + } } \ No newline at end of file diff --git a/src/main/java/no/entur/mummu/serializers/TariffZoneRefsSerializer.java b/src/main/java/no/entur/mummu/serializers/TariffZoneRefsSerializer.java new file mode 100644 index 00000000..cfaffd73 --- /dev/null +++ b/src/main/java/no/entur/mummu/serializers/TariffZoneRefsSerializer.java @@ -0,0 +1,22 @@ +package no.entur.mummu.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import org.rutebanken.netex.model.TariffZoneRefs_RelStructure; + +import java.io.IOException; + +public class TariffZoneRefsSerializer extends JsonSerializer { + @Override + public void serialize(TariffZoneRefs_RelStructure tariffZoneRefsRelStructure, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeStartArray(); + for (var tariffZone :tariffZoneRefsRelStructure.getTariffZoneRef_()) { + jsonGenerator.writeStartObject(); + jsonGenerator.writeStringField("ref", tariffZone.getValue().getRef()); + jsonGenerator.writeObjectField("version", tariffZone.getValue().getVersion()); + jsonGenerator.writeEndObject(); + } + jsonGenerator.writeEndArray(); + } +} From be775a756bb1aa2c04cc8055a6c58b9dff102704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Erik=20St=C3=B8wer?= Date: Tue, 7 Nov 2023 14:47:41 +0100 Subject: [PATCH 3/3] Update netex parser --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3e0a1aa6..28c68c81 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ 17 1.0.77 - 2.2.1-SNAPSHOT + 2.3.0 2.3.0.1 2.9.13.2