
org.opentripplanner.apis.gtfs.datafetchers.placeAtDistanceImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
The newest version!
package org.opentripplanner.apis.gtfs.datafetchers;
import graphql.execution.TypeResolutionParameters;
import graphql.relay.Relay;
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import graphql.schema.DataFetchingEnvironmentImpl;
import graphql.schema.FieldCoordinates;
import graphql.schema.GraphQLInterfaceType;
import graphql.schema.GraphQLObjectType;
import graphql.schema.TypeResolver;
import org.opentripplanner.apis.gtfs.generated.GraphQLDataFetchers;
import org.opentripplanner.routing.graphfinder.PlaceAtDistance;
public class placeAtDistanceImpl implements GraphQLDataFetchers.GraphQLPlaceAtDistance {
@Override
public DataFetcher distance() {
return environment -> (int) getSource(environment).distance();
}
@Override
public DataFetcher id() {
return environment -> {
PlaceAtDistance placeAtDistance = getSource(environment);
Object place = placeAtDistance.place();
TypeResolver typeResolver = new PlaceInterfaceTypeResolver();
GraphQLInterfaceType placeInterface = (GraphQLInterfaceType) environment
.getGraphQLSchema()
.getType("PlaceInterface");
var resolution = new TypeResolutionParameters.Builder()
.value(place)
.argumentValues(environment::getArguments)
.field(environment.getMergedField())
.fieldType(placeInterface)
.schema(environment.getGraphQLSchema())
.graphQLContext(environment.getGraphQlContext())
.build();
GraphQLObjectType placeType = typeResolver.getType(resolution);
Relay.ResolvedGlobalId globalId = (Relay.ResolvedGlobalId) environment
.getGraphQLSchema()
.getCodeRegistry()
.getDataFetcher(
FieldCoordinates.coordinates(placeType.getName(), "id"),
placeInterface.getFieldDefinition("id")
)
.get(
DataFetchingEnvironmentImpl.newDataFetchingEnvironment(environment).source(place).build()
);
return new Relay.ResolvedGlobalId(
"placeAtDistance",
placeAtDistance.distance() +
";" +
new Relay().toGlobalId(globalId.getType(), globalId.getId())
);
};
}
@Override
public DataFetcher
© 2015 - 2025 Weber Informatics LLC | Privacy Policy