All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.standalone.server.DefaultServerRequestContext Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.standalone.server;

import graphql.schema.GraphQLSchema;
import io.micrometer.core.instrument.MeterRegistry;
import java.util.List;
import java.util.Locale;
import javax.annotation.Nullable;
import org.opentripplanner.astar.spi.TraverseVisitor;
import org.opentripplanner.ext.emissions.EmissionsService;
import org.opentripplanner.ext.flex.FlexParameters;
import org.opentripplanner.ext.geocoder.LuceneIndex;
import org.opentripplanner.ext.ridehailing.RideHailingService;
import org.opentripplanner.ext.sorlandsbanen.SorlandsbanenNorwayService;
import org.opentripplanner.ext.stopconsolidation.StopConsolidationService;
import org.opentripplanner.raptor.api.request.RaptorTuningParameters;
import org.opentripplanner.raptor.configure.RaptorConfig;
import org.opentripplanner.routing.algorithm.raptoradapter.transit.TransitTuningParameters;
import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule;
import org.opentripplanner.routing.api.RoutingService;
import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.routing.service.DefaultRoutingService;
import org.opentripplanner.routing.via.ViaCoordinateTransferFactory;
import org.opentripplanner.service.realtimevehicles.RealtimeVehicleService;
import org.opentripplanner.service.vehicleparking.VehicleParkingService;
import org.opentripplanner.service.vehiclerental.VehicleRentalService;
import org.opentripplanner.service.worldenvelope.WorldEnvelopeService;
import org.opentripplanner.standalone.api.HttpRequestScoped;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
import org.opentripplanner.standalone.config.DebugUiConfig;
import org.opentripplanner.standalone.config.routerconfig.TransitRoutingConfig;
import org.opentripplanner.standalone.config.routerconfig.VectorTileConfig;
import org.opentripplanner.street.service.StreetLimitationParametersService;
import org.opentripplanner.transit.service.TransitService;

@HttpRequestScoped
public class DefaultServerRequestContext implements OtpServerRequestContext {

  // Keep sort order: Main services, optional services and writable/none final fields
  //                  All 3 sections is sorted alphabetically.

  private final DebugUiConfig debugUiConfig;
  private final FlexParameters flexParameters;
  private final Graph graph;
  private final MeterRegistry meterRegistry;
  private final RaptorConfig raptorConfig;
  private final RealtimeVehicleService realtimeVehicleService;
  private final List rideHailingServices;
  private final RouteRequest routeRequestDefaults;
  private final StreetLimitationParametersService streetLimitationParametersService;
  private final TransitRoutingConfig transitRoutingConfig;
  private final TransitService transitService;
  private final VectorTileConfig vectorTileConfig;
  private final VehicleParkingService vehicleParkingService;
  private final VehicleRentalService vehicleRentalService;
  private final ViaCoordinateTransferFactory viaTransferResolver;
  private final WorldEnvelopeService worldEnvelopeService;

  /* Optional fields */

  @Nullable
  private final EmissionsService emissionsService;

  @Nullable
  private final LuceneIndex luceneIndex;

  @Nullable
  private final GraphQLSchema schema;

  @Nullable
  private final SorlandsbanenNorwayService sorlandsbanenService;

  @Nullable
  private final StopConsolidationService stopConsolidationService;

  @Nullable
  private final TraverseVisitor traverseVisitor;

  /* Lazy initialized fields */

  private RouteRequest defaultRouteRequestWithTimeSet = null;

  /**
   * Create a server context valid for one http request only!
   * Make sure all mutable components are copied/cloned before calling this constructor.
   */
  public DefaultServerRequestContext(
    // Keep the same order as in the field declaration
    DebugUiConfig debugUiConfig,
    FlexParameters flexParameters,
    Graph graph,
    MeterRegistry meterRegistry,
    RaptorConfig raptorConfig,
    RealtimeVehicleService realtimeVehicleService,
    List rideHailingServices,
    RouteRequest routeRequestDefaults,
    StreetLimitationParametersService streetLimitationParametersService,
    TransitRoutingConfig transitRoutingConfig,
    TransitService transitService,
    VectorTileConfig vectorTileConfig,
    VehicleParkingService vehicleParkingService,
    VehicleRentalService vehicleRentalService,
    ViaCoordinateTransferFactory viaTransferResolver,
    WorldEnvelopeService worldEnvelopeService,
    @Nullable EmissionsService emissionsService,
    @Nullable LuceneIndex luceneIndex,
    @Nullable GraphQLSchema schema,
    @Nullable SorlandsbanenNorwayService sorlandsbanenService,
    @Nullable StopConsolidationService stopConsolidationService,
    @Nullable TraverseVisitor traverseVisitor
  ) {
    this.debugUiConfig = debugUiConfig;
    this.flexParameters = flexParameters;
    this.graph = graph;
    this.meterRegistry = meterRegistry;
    this.raptorConfig = raptorConfig;
    this.realtimeVehicleService = realtimeVehicleService;
    this.rideHailingServices = rideHailingServices;
    this.routeRequestDefaults = routeRequestDefaults;
    this.streetLimitationParametersService = streetLimitationParametersService;
    this.transitRoutingConfig = transitRoutingConfig;
    this.transitService = transitService;
    this.vectorTileConfig = vectorTileConfig;
    this.vehicleParkingService = vehicleParkingService;
    this.vehicleRentalService = vehicleRentalService;
    this.viaTransferResolver = viaTransferResolver;
    this.worldEnvelopeService = worldEnvelopeService;

    // Optional fields
    this.emissionsService = emissionsService;
    this.luceneIndex = luceneIndex;
    this.schema = schema;
    this.sorlandsbanenService = sorlandsbanenService;
    this.stopConsolidationService = stopConsolidationService;
    this.traverseVisitor = traverseVisitor;
  }

  @Override
  public DebugUiConfig debugUiConfig() {
    return debugUiConfig;
  }

  @Override
  public RouteRequest defaultRouteRequest() {
    // Lazy initialize request-scoped request to avoid doing this when not needed
    if (defaultRouteRequestWithTimeSet == null) {
      defaultRouteRequestWithTimeSet = routeRequestDefaults.copyWithDateTimeNow();
    }
    return defaultRouteRequestWithTimeSet;
  }

  /**
   * Return the default routing request locale(without cloning the request).
   */
  @Override
  public Locale defaultLocale() {
    return routeRequestDefaults.locale();
  }

  @Override
  public RaptorConfig raptorConfig() {
    return raptorConfig;
  }

  @Override
  public Graph graph() {
    return graph;
  }

  @Override
  public TransitService transitService() {
    return transitService;
  }

  @Override
  public RoutingService routingService() {
    return new DefaultRoutingService(this);
  }

  @Override
  public WorldEnvelopeService worldEnvelopeService() {
    return worldEnvelopeService;
  }

  @Override
  public RealtimeVehicleService realtimeVehicleService() {
    return realtimeVehicleService;
  }

  @Override
  public VehicleRentalService vehicleRentalService() {
    return vehicleRentalService;
  }

  @Override
  public VehicleParkingService vehicleParkingService() {
    return vehicleParkingService;
  }

  @Override
  public TransitTuningParameters transitTuningParameters() {
    return transitRoutingConfig;
  }

  @Override
  public RaptorTuningParameters raptorTuningParameters() {
    return transitRoutingConfig;
  }

  @Override
  public List rideHailingServices() {
    return rideHailingServices;
  }

  @Nullable
  @Override
  public GraphQLSchema schema() {
    return schema;
  }

  @Override
  public StopConsolidationService stopConsolidationService() {
    return stopConsolidationService;
  }

  @Override
  public StreetLimitationParametersService streetLimitationParametersService() {
    return streetLimitationParametersService;
  }

  @Override
  public MeterRegistry meterRegistry() {
    return meterRegistry;
  }

  @Override
  public TraverseVisitor traverseVisitor() {
    return traverseVisitor;
  }

  @Override
  public FlexParameters flexParameters() {
    return flexParameters;
  }

  @Override
  public VectorTileConfig vectorTileConfig() {
    return vectorTileConfig;
  }

  @Override
  public ViaCoordinateTransferFactory viaTransferResolver() {
    return viaTransferResolver;
  }

  @Nullable
  @Override
  public LuceneIndex lucenceIndex() {
    return luceneIndex;
  }

  @Override
  public EmissionsService emissionsService() {
    return emissionsService;
  }

  @Nullable
  public SorlandsbanenNorwayService sorlandsbanenService() {
    return sorlandsbanenService;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy