diff --git a/pom.xml b/pom.xml
index 9374da88..28c68c81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
17
1.0.77
- 2.2.0
+ 2.3.0
2.3.0.1
2.9.13.2
@@ -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();
+ }
+}
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());