@@ -42,6 +42,8 @@ final class OdrdSampleCommands {
4242
4343 private OdrdSampleCommands () {}
4444
45+ private static FleetEngineTokenProvider minter ;
46+
4547 static void createVehicle () throws SignerInitializationException , IOException {
4648 String randomVehicleId = String .format ("vehicle-%s" , UUID .randomUUID ());
4749
@@ -85,7 +87,7 @@ static void createVehicle() throws SignerInitializationException, IOException {
8587
8688 VehicleServiceSettings settings =
8789 new FleetEngineClientSettingsModifier <
88- VehicleServiceSettings , VehicleServiceSettings .Builder >(createMinter ())
90+ VehicleServiceSettings , VehicleServiceSettings .Builder >(getMinter ())
8991 .updateBuilder (VehicleServiceSettings .newBuilder ())
9092 .setEndpoint (OdrdConfiguration .FLEET_ENGINE_ADDRESS )
9193 .build ();
@@ -128,14 +130,16 @@ static void createTrip() throws SignerInitializationException, IOException {
128130
129131 TripServiceSettings settings =
130132 new FleetEngineClientSettingsModifier <TripServiceSettings , TripServiceSettings .Builder >(
131- createMinter ())
133+ getMinter ())
132134 .updateBuilder (TripServiceSettings .newBuilder ())
133135 .setEndpoint (OdrdConfiguration .FLEET_ENGINE_ADDRESS )
134136 .build ();
135137
136- TripServiceClient client = TripServiceClient .create (settings );
137- client .createTrip (request );
138+ try (TripServiceClient client = TripServiceClient .create (settings )) {
139+ client .createTrip (request );
140+ }
138141 System .out .printf ("Trip with id '%s' created\n " , randomTripId );
142+
139143 }
140144
141145 static void listVehicles () throws SignerInitializationException , IOException {
@@ -147,13 +151,15 @@ static void listVehicles() throws SignerInitializationException, IOException {
147151
148152 VehicleServiceSettings settings =
149153 new FleetEngineClientSettingsModifier <
150- VehicleServiceSettings , VehicleServiceSettings .Builder >(createMinter ())
154+ VehicleServiceSettings , VehicleServiceSettings .Builder >(getMinter ())
151155 .updateBuilder (VehicleServiceSettings .newBuilder ())
152156 .setEndpoint (OdrdConfiguration .FLEET_ENGINE_ADDRESS )
153157 .build ();
154158
155- VehicleServiceClient client = VehicleServiceClient .create (settings );
156- ListVehiclesPagedResponse response = client .listVehicles (request );
159+ ListVehiclesPagedResponse response ;
160+ try (VehicleServiceClient client = VehicleServiceClient .create (settings )) {
161+ response = client .listVehicles (request );
162+ }
157163
158164 for (Vehicle vehicle : response .getPage ().getValues ()) {
159165 System .out .printf ("Vehicle Name: %s\n " , vehicle .getName ());
@@ -188,13 +194,15 @@ static void searchVehicles() throws SignerInitializationException, IOException {
188194
189195 VehicleServiceSettings settings =
190196 new FleetEngineClientSettingsModifier <
191- VehicleServiceSettings , VehicleServiceSettings .Builder >(createMinter ())
197+ VehicleServiceSettings , VehicleServiceSettings .Builder >(getMinter ())
192198 .updateBuilder (VehicleServiceSettings .newBuilder ())
193199 .setEndpoint (OdrdConfiguration .FLEET_ENGINE_ADDRESS )
194200 .build ();
195201
196- VehicleServiceClient client = VehicleServiceClient .create (settings );
197- SearchVehiclesResponse response = client .searchVehicles (request );
202+ SearchVehiclesResponse response ;
203+ try (VehicleServiceClient client = VehicleServiceClient .create (settings )) {
204+ response = client .searchVehicles (request );
205+ }
198206 for (VehicleMatch vehicleMatch : response .getMatchesList ()) {
199207 Vehicle vehicle = vehicleMatch .getVehicle ();
200208 System .out .printf ("Vehicle Name: %s\n " , vehicle .getName ());
@@ -216,13 +224,15 @@ static void searchTrips() throws SignerInitializationException, IOException {
216224
217225 TripServiceSettings settings =
218226 new FleetEngineClientSettingsModifier <TripServiceSettings , TripServiceSettings .Builder >(
219- createMinter ())
227+ getMinter ())
220228 .updateBuilder (TripServiceSettings .newBuilder ())
221229 .setEndpoint (OdrdConfiguration .FLEET_ENGINE_ADDRESS )
222230 .build ();
223231
224- TripServiceClient client = TripServiceClient .create (settings );
225- SearchTripsPagedResponse response = client .searchTrips (request );
232+ SearchTripsPagedResponse response ;
233+ try (TripServiceClient client = TripServiceClient .create (settings )) {
234+ response = client .searchTrips (request );
235+ }
226236
227237 for (Trip trip : response .getPage ().getValues ()) {
228238 System .out .printf ("Trip Name: %s\n " , trip .getName ());
@@ -232,20 +242,24 @@ static void searchTrips() throws SignerInitializationException, IOException {
232242 }
233243 }
234244
235- private static FleetEngineTokenProvider createMinter () throws SignerInitializationException {
236- return AuthTokenMinter .builder ()
237- // Only the account for the server signer is needed in this example
238- .setServerSigner (ImpersonatedSigner .create (OdrdConfiguration .SERVER_TOKEN_ACCOUNT ))
239-
240- // When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
241- // This is fine in the vast majority of cases.
242- .setTokenFactory (
243- new FleetEngineTokenFactory (
244- FleetEngineTokenFactorySettings .builder ()
245- .setAudience (OdrdConfiguration .FLEET_ENGINE_AUDIENCE )
246- .build ()))
247-
248- // Build the minter
249- .build ();
245+ private static FleetEngineTokenProvider getMinter () throws SignerInitializationException {
246+ // Only create one minter across all calls to Fleet Engine
247+ if (minter == null ) {
248+ minter = AuthTokenMinter .builder ()
249+ // Only the account for the server signer is needed in this example
250+ .setServerSigner (ImpersonatedSigner .create (OdrdConfiguration .SERVER_TOKEN_ACCOUNT ))
251+
252+ // When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
253+ // This is fine in the vast majority of cases.
254+ .setTokenFactory (
255+ new FleetEngineTokenFactory (
256+ FleetEngineTokenFactorySettings .builder ()
257+ .setAudience (OdrdConfiguration .FLEET_ENGINE_AUDIENCE )
258+ .build ()))
259+
260+ // Build the minter
261+ .build ();
262+ }
263+ return minter ;
250264 }
251265}
0 commit comments