diff --git a/src/main/java/no/rutebanken/anshar/routes/siri/helpers/SiriObjectFactory.java b/src/main/java/no/rutebanken/anshar/routes/siri/helpers/SiriObjectFactory.java index 6bb9d8da7..b693d8c9c 100644 --- a/src/main/java/no/rutebanken/anshar/routes/siri/helpers/SiriObjectFactory.java +++ b/src/main/java/no/rutebanken/anshar/routes/siri/helpers/SiriObjectFactory.java @@ -288,6 +288,16 @@ private static SubscriptionRequest createSituationExchangeSubscriptionRequest(St sxRequest.setVehicleRef((VehicleRef) next); } } + if (filterMap.containsKey(OperatorRefStructure.class)) { + Set operatorRefs = filterMap.get(OperatorRefStructure.class); + for (Object operatorRef : operatorRefs) { + if (operatorRef instanceof String) { + var refStructure = new OperatorRefStructure(); + refStructure.setValue((String) operatorRef); + sxRequest.setOperatorRef(refStructure); + } + } + } } SituationExchangeSubscriptionStructure sxSubscriptionReq = new SituationExchangeSubscriptionStructure(); diff --git a/src/main/resources/subscriptions-example.yml b/src/main/resources/subscriptions-example.yml index 1766b675e..a7b022766 100644 --- a/src/main/resources/subscriptions-example.yml +++ b/src/main/resources/subscriptions-example.yml @@ -95,7 +95,8 @@ anshar: requestorRef: anshar-example-${random.uuid} durationOfSubscriptionHours: 1680 mappingAdapterId: entur - filterPresets: + filterMap: + uk.org.siri.siri21.OperatorRefStructure: "AN_OPERATOR" idMappingPrefixes: active: false diff --git a/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java b/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java index 70681233e..38eed910a 100644 --- a/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java +++ b/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java @@ -15,10 +15,13 @@ package no.rutebanken.anshar.siri; +import java.util.Map; +import java.util.Set; import no.rutebanken.anshar.routes.siri.helpers.SiriObjectFactory; import no.rutebanken.anshar.subscription.SiriDataType; import no.rutebanken.anshar.subscription.SubscriptionSetup; import org.junit.jupiter.api.Test; +import uk.org.siri.siri21.OperatorRefStructure; import uk.org.siri.siri21.EstimatedTimetableRequestStructure; import uk.org.siri.siri21.EstimatedTimetableSubscriptionStructure; import uk.org.siri.siri21.Siri; @@ -101,6 +104,11 @@ public void testCreateSXSubscription(){ SubscriptionSetup.SubscriptionMode.REQUEST_RESPONSE, UUID.randomUUID().toString()); + final String operatorName = "AN_OPERATOR"; + subscriptionSetup.setFilterMap( + Map.of(OperatorRefStructure.class, Set.of(operatorName)) + ); + Siri sxSubscriptionRequest = SiriObjectFactory.createSubscriptionRequest(subscriptionSetup); assertNotNull(sxSubscriptionRequest.getSubscriptionRequest()); @@ -125,8 +133,8 @@ public void testCreateSXSubscription(){ "Initial terminationtime has not been calculated correctly" ); - - + var ref = subscription.getSituationExchangeRequest().getOperatorRef().getValue(); + assertEquals(ref, operatorName); } @Test