From 472c00002b0d44c0856089aa28003844bf687a1d Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Fri, 28 Apr 2023 13:23:39 +0200 Subject: [PATCH 1/2] Allow setting of OperatorRef in Siri-SX subscription request --- .../routes/siri/helpers/SiriObjectFactory.java | 10 ++++++++++ src/main/resources/subscriptions-example.yml | 3 ++- .../anshar/siri/SiriObjectFactoryTest.java | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) 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..71f526104 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,13 @@ public void testCreateSXSubscription(){ SubscriptionSetup.SubscriptionMode.REQUEST_RESPONSE, UUID.randomUUID().toString()); + final String operatorName = "AN_OPERATOR"; + var operatorRef = new OperatorRefStructure(); + operatorRef.setValue(operatorName); + subscriptionSetup.setFilterMap( + Map.of(OperatorRefStructure.class, Set.of(operatorRef)) + ); + Siri sxSubscriptionRequest = SiriObjectFactory.createSubscriptionRequest(subscriptionSetup); assertNotNull(sxSubscriptionRequest.getSubscriptionRequest()); @@ -125,8 +135,8 @@ public void testCreateSXSubscription(){ "Initial terminationtime has not been calculated correctly" ); - - + var ref = subscription.getSituationExchangeRequest().getOperatorRef().getValue(); + assertEquals(ref, operatorName); } @Test From f85deacbc857bc92abe90de0d066a8feecc0e45b Mon Sep 17 00:00:00 2001 From: Leonard Ehrenfried Date: Fri, 28 Apr 2023 13:37:58 +0200 Subject: [PATCH 2/2] Fix test --- .../java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java b/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java index 71f526104..38eed910a 100644 --- a/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java +++ b/src/test/java/no/rutebanken/anshar/siri/SiriObjectFactoryTest.java @@ -105,10 +105,8 @@ public void testCreateSXSubscription(){ UUID.randomUUID().toString()); final String operatorName = "AN_OPERATOR"; - var operatorRef = new OperatorRefStructure(); - operatorRef.setValue(operatorName); subscriptionSetup.setFilterMap( - Map.of(OperatorRefStructure.class, Set.of(operatorRef)) + Map.of(OperatorRefStructure.class, Set.of(operatorName)) ); Siri sxSubscriptionRequest = SiriObjectFactory.createSubscriptionRequest(subscriptionSetup);