Skip to content

Commit 68d928c

Browse files
Merge pull request opentripplanner#7289 from leonardehrenfried/remove-overlay
Remove dependency from `Graph` to `DataOverlay` feature
2 parents 3e61779 + 5d43110 commit 68d928c

11 files changed

Lines changed: 55 additions & 23 deletions

File tree

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,29 @@
11
package org.opentripplanner.ext.dataoverlay;
22

3-
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
43
import org.opentripplanner.ext.dataoverlay.configuration.TimeUnit;
54
import org.opentripplanner.graph_builder.model.GraphBuilderModule;
65
import org.opentripplanner.routing.graph.Graph;
76

87
/**
98
* This class allows updating the graph with the grid data from generic .nc file in accordance with
10-
* provided json configuration
9+
* provided json configuration. The parameter bindings are now provided separately through
10+
* DataOverlayParameterBindingsModule.
1111
*
1212
* @author Simeon Platonov
1313
*/
1414
public class EdgeUpdaterModule implements GraphBuilderModule {
1515

1616
private final GenericDataFile dataFile;
1717
private final TimeUnit timeFormat;
18-
private final DataOverlayParameterBindings parameterBindings;
1918
private final Graph graph;
2019

2120
/**
2221
* Sets the generic grid data file
2322
*/
24-
public EdgeUpdaterModule(
25-
Graph graph,
26-
GenericDataFile dataFile,
27-
TimeUnit timeFormat,
28-
DataOverlayParameterBindings parameterBindings
29-
) {
23+
public EdgeUpdaterModule(Graph graph, GenericDataFile dataFile, TimeUnit timeFormat) {
3024
this.graph = graph;
3125
this.dataFile = dataFile;
3226
this.timeFormat = timeFormat;
33-
this.parameterBindings = parameterBindings;
3427
}
3528

3629
@Override
@@ -41,7 +34,5 @@ public void buildGraph() {
4134
graph.getStreetEdges()
4235
);
4336
genericEdgeUpdater.updateEdges();
44-
// The bindings are needed to build the request context when routing
45-
graph.dataOverlayParameterBindings = this.parameterBindings;
4637
}
4738
}

application/src/ext/java/org/opentripplanner/ext/dataoverlay/configure/DataOverlayFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ public static EdgeUpdaterModule create(Graph graph, DataOverlayConfig config) {
2424
return new EdgeUpdaterModule(
2525
graph,
2626
new GenericDataFile(dataFile, config),
27-
config.getTimeFormat(),
28-
config.getParameterBindings()
27+
config.getTimeFormat()
2928
);
3029
} else {
3130
LOG.error("No data input {} found!", dataFile);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.opentripplanner.ext.dataoverlay.configure;
2+
3+
import dagger.Module;
4+
import dagger.Provides;
5+
import jakarta.inject.Singleton;
6+
import javax.annotation.Nullable;
7+
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
8+
import org.opentripplanner.standalone.config.BuildConfig;
9+
10+
/**
11+
* Dagger module that provides DataOverlayParameterBindings from the build configuration. This
12+
* module is included in both the graph building and runtime Dagger components.
13+
*/
14+
@Module
15+
public class DataOverlayParameterBindingsModule {
16+
17+
@Provides
18+
@Singleton
19+
@Nullable
20+
static DataOverlayParameterBindings provideDataOverlayParameterBindings(BuildConfig config) {
21+
return config.dataOverlay != null ? config.dataOverlay.getParameterBindings() : null;
22+
}
23+
}

application/src/main/java/org/opentripplanner/graph_builder/module/configure/GraphBuilderFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.List;
88
import javax.annotation.Nullable;
99
import org.opentripplanner.ext.dataoverlay.EdgeUpdaterModule;
10+
import org.opentripplanner.ext.dataoverlay.configure.DataOverlayParameterBindingsModule;
1011
import org.opentripplanner.ext.edgenaming.configure.EdgeNamerModule;
1112
import org.opentripplanner.ext.emission.EmissionRepository;
1213
import org.opentripplanner.ext.emission.configure.EmissionGraphBuilderModule;
@@ -53,6 +54,7 @@
5354
@Singleton
5455
@Component(
5556
modules = {
57+
DataOverlayParameterBindingsModule.class,
5658
EdgeNamerModule.class,
5759
EmissionGraphBuilderModule.class,
5860
EmpiricalDelayGraphBuilderModule.class,

application/src/main/java/org/opentripplanner/routing/graph/Graph.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.locationtech.jts.geom.Envelope;
1616
import org.locationtech.jts.geom.Geometry;
1717
import org.opentripplanner.core.model.id.FeedScopedId;
18-
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
1918
import org.opentripplanner.routing.linking.Scope;
2019
import org.opentripplanner.routing.services.notes.StreetNotesService;
2120
import org.opentripplanner.street.geometry.CompactElevationProfile;
@@ -108,12 +107,6 @@ public class Graph implements Serializable {
108107
*/
109108
public long nextSplitNumber = 0;
110109

111-
/**
112-
* DataOverlay Sandbox module parameter bindings configured in the build-config, and needed when
113-
* creating the data overlay context when routing.
114-
*/
115-
public DataOverlayParameterBindings dataOverlayParameterBindings;
116-
117110
@Inject
118111
public Graph(@Nullable OpeningHoursCalendarService openingHoursCalendarService) {
119112
this.openingHoursCalendarService = openingHoursCalendarService;

application/src/main/java/org/opentripplanner/standalone/api/OtpServerRequestContext.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.opentripplanner.apis.transmodel.TransmodelAPIParameters;
1010
import org.opentripplanner.astar.spi.TraverseVisitor;
1111
import org.opentripplanner.ext.carpooling.CarpoolingService;
12+
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
1213
import org.opentripplanner.ext.dataoverlay.routing.DataOverlayContext;
1314
import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayService;
1415
import org.opentripplanner.ext.flex.FlexParameters;
@@ -158,13 +159,16 @@ default GraphFinder graphFinder() {
158159
@Nullable
159160
CarpoolingService carpoolingService();
160161

162+
@Nullable
163+
DataOverlayParameterBindings dataOverlayParameterBindings();
164+
161165
@Nullable
162166
default List<ExtensionRequestContext> listExtensionRequestContexts(RouteRequest request) {
163167
var list = new ArrayList<ExtensionRequestContext>();
164168
if (OTPFeature.DataOverlay.isOn()) {
165169
list.add(
166170
new DataOverlayContext(
167-
graph().dataOverlayParameterBindings,
171+
dataOverlayParameterBindings(),
168172
request.preferences().system().dataOverlay()
169173
)
170174
);

application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.opentripplanner.ext.carpooling.CarpoolingRepository;
1414
import org.opentripplanner.ext.carpooling.CarpoolingService;
1515
import org.opentripplanner.ext.carpooling.configure.CarpoolingModule;
16+
import org.opentripplanner.ext.dataoverlay.configure.DataOverlayParameterBindingsModule;
1617
import org.opentripplanner.ext.emission.EmissionRepository;
1718
import org.opentripplanner.ext.emission.configure.EmissionServiceModule;
1819
import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayRepository;
@@ -77,6 +78,7 @@
7778
CarpoolingModule.class,
7879
ConfigModule.class,
7980
ConstructApplicationModule.class,
81+
DataOverlayParameterBindingsModule.class,
8082
EmissionServiceModule.class,
8183
EmpiricalDelayServiceModule.class,
8284
DeduplicatorServiceModule.class,
@@ -138,6 +140,7 @@ public interface ConstructApplicationFactory {
138140
GraphVisualizer graphVisualizer();
139141

140142
TransitService transitService();
143+
141144
OtpServerRequestContext createServerContext();
142145

143146
MetricsLogging metricsLogging();

application/src/main/java/org/opentripplanner/standalone/configure/ConstructApplicationModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.opentripplanner.apis.transmodel.configure.TransmodelSchema;
1212
import org.opentripplanner.astar.spi.TraverseVisitor;
1313
import org.opentripplanner.ext.carpooling.CarpoolingService;
14+
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
1415
import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayService;
1516
import org.opentripplanner.ext.geocoder.LuceneIndex;
1617
import org.opentripplanner.ext.interactivelauncher.api.LauncherRequestDecorator;
@@ -61,6 +62,7 @@ OtpServerRequestContext providesServerContext(
6162
List<RideHailingService> rideHailingServices,
6263
ViaCoordinateTransferFactory viaTransferResolver,
6364
@Nullable CarpoolingService carpoolingService,
65+
@Nullable DataOverlayParameterBindings dataOverlayParameterBindings,
6466
@Nullable StopConsolidationService stopConsolidationService,
6567
StreetLimitationParametersService streetLimitationParametersService,
6668
@Nullable TraverseVisitor<?, ?> traverseVisitor,
@@ -110,6 +112,7 @@ OtpServerRequestContext providesServerContext(
110112
worldEnvelopeService,
111113
// Optional Sandbox services
112114
carpoolingService,
115+
dataOverlayParameterBindings,
113116
emissionItineraryDecorator,
114117
streetDetailsService,
115118
empiricalDelayService,

application/src/main/java/org/opentripplanner/standalone/server/DefaultServerRequestContext.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.opentripplanner.apis.transmodel.configure.TransmodelSchema;
1111
import org.opentripplanner.astar.spi.TraverseVisitor;
1212
import org.opentripplanner.ext.carpooling.CarpoolingService;
13+
import org.opentripplanner.ext.dataoverlay.configuration.DataOverlayParameterBindings;
1314
import org.opentripplanner.ext.empiricaldelay.EmpiricalDelayService;
1415
import org.opentripplanner.ext.flex.FlexParameters;
1516
import org.opentripplanner.ext.geocoder.LuceneIndex;
@@ -76,6 +77,9 @@ public class DefaultServerRequestContext implements OtpServerRequestContext {
7677
@Nullable
7778
private final CarpoolingService carpoolingService;
7879

80+
@Nullable
81+
private final DataOverlayParameterBindings dataOverlayParameterBindings;
82+
7983
@Nullable
8084
private final ItineraryDecorator emissionItineraryDecorator;
8185

@@ -146,6 +150,7 @@ public DefaultServerRequestContext(
146150
ViaCoordinateTransferFactory viaTransferResolver,
147151
WorldEnvelopeService worldEnvelopeService,
148152
@Nullable CarpoolingService carpoolingService,
153+
@Nullable DataOverlayParameterBindings dataOverlayParameterBindings,
149154
@Nullable ItineraryDecorator emissionItineraryDecorator,
150155
StreetDetailsService streetDetailsService,
151156
@Nullable EmpiricalDelayService empiricalDelayService,
@@ -184,6 +189,7 @@ public DefaultServerRequestContext(
184189

185190
// Optional fields
186191
this.carpoolingService = carpoolingService;
192+
this.dataOverlayParameterBindings = dataOverlayParameterBindings;
187193
this.emissionItineraryDecorator = emissionItineraryDecorator;
188194
this.streetDetailsService = streetDetailsService;
189195
this.empiricalDelayService = empiricalDelayService;
@@ -338,6 +344,12 @@ public CarpoolingService carpoolingService() {
338344
return carpoolingService;
339345
}
340346

347+
@Nullable
348+
@Override
349+
public DataOverlayParameterBindings dataOverlayParameterBindings() {
350+
return dataOverlayParameterBindings;
351+
}
352+
341353
@Nullable
342354
@Override
343355
public LuceneIndex lucenceIndex() {

application/src/test/java/org/opentripplanner/TestServerContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public class TestServerContext {
5757

5858
private TestServerContext() {}
5959

60-
/** Create a context for unit testing using default RoutingRequest.*/
60+
/** Create a context for unit testing using default RoutingRequest. */
6161
public static OtpServerRequestContext createServerContext(
6262
Graph graph,
6363
TimetableRepository timetableRepository,
@@ -142,6 +142,7 @@ public static OtpServerRequestContext createServerContext(
142142
createViaTransferResolver(graph, transitService),
143143
createWorldEnvelopeService(),
144144
null,
145+
null,
145146
createEmissionsItineraryDecorator(),
146147
createStreetDetailsService(),
147148
null,

0 commit comments

Comments
 (0)