1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.aiplatform.v1beta1.stub; 18 19 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListBatchPredictionJobsPagedResponse; 20 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListCustomJobsPagedResponse; 21 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListDataLabelingJobsPagedResponse; 22 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListHyperparameterTuningJobsPagedResponse; 23 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListLocationsPagedResponse; 24 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListModelDeploymentMonitoringJobsPagedResponse; 25 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListNasJobsPagedResponse; 26 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.ListNasTrialDetailsPagedResponse; 27 import static com.google.cloud.aiplatform.v1beta1.JobServiceClient.SearchModelDeploymentMonitoringStatsAnomaliesPagedResponse; 28 29 import com.google.api.core.BetaApi; 30 import com.google.api.gax.core.BackgroundResource; 31 import com.google.api.gax.rpc.OperationCallable; 32 import com.google.api.gax.rpc.UnaryCallable; 33 import com.google.cloud.aiplatform.v1beta1.BatchPredictionJob; 34 import com.google.cloud.aiplatform.v1beta1.CancelBatchPredictionJobRequest; 35 import com.google.cloud.aiplatform.v1beta1.CancelCustomJobRequest; 36 import com.google.cloud.aiplatform.v1beta1.CancelDataLabelingJobRequest; 37 import com.google.cloud.aiplatform.v1beta1.CancelHyperparameterTuningJobRequest; 38 import com.google.cloud.aiplatform.v1beta1.CancelNasJobRequest; 39 import com.google.cloud.aiplatform.v1beta1.CreateBatchPredictionJobRequest; 40 import com.google.cloud.aiplatform.v1beta1.CreateCustomJobRequest; 41 import com.google.cloud.aiplatform.v1beta1.CreateDataLabelingJobRequest; 42 import com.google.cloud.aiplatform.v1beta1.CreateHyperparameterTuningJobRequest; 43 import com.google.cloud.aiplatform.v1beta1.CreateModelDeploymentMonitoringJobRequest; 44 import com.google.cloud.aiplatform.v1beta1.CreateNasJobRequest; 45 import com.google.cloud.aiplatform.v1beta1.CustomJob; 46 import com.google.cloud.aiplatform.v1beta1.DataLabelingJob; 47 import com.google.cloud.aiplatform.v1beta1.DeleteBatchPredictionJobRequest; 48 import com.google.cloud.aiplatform.v1beta1.DeleteCustomJobRequest; 49 import com.google.cloud.aiplatform.v1beta1.DeleteDataLabelingJobRequest; 50 import com.google.cloud.aiplatform.v1beta1.DeleteHyperparameterTuningJobRequest; 51 import com.google.cloud.aiplatform.v1beta1.DeleteModelDeploymentMonitoringJobRequest; 52 import com.google.cloud.aiplatform.v1beta1.DeleteNasJobRequest; 53 import com.google.cloud.aiplatform.v1beta1.DeleteOperationMetadata; 54 import com.google.cloud.aiplatform.v1beta1.GetBatchPredictionJobRequest; 55 import com.google.cloud.aiplatform.v1beta1.GetCustomJobRequest; 56 import com.google.cloud.aiplatform.v1beta1.GetDataLabelingJobRequest; 57 import com.google.cloud.aiplatform.v1beta1.GetHyperparameterTuningJobRequest; 58 import com.google.cloud.aiplatform.v1beta1.GetModelDeploymentMonitoringJobRequest; 59 import com.google.cloud.aiplatform.v1beta1.GetNasJobRequest; 60 import com.google.cloud.aiplatform.v1beta1.GetNasTrialDetailRequest; 61 import com.google.cloud.aiplatform.v1beta1.HyperparameterTuningJob; 62 import com.google.cloud.aiplatform.v1beta1.ListBatchPredictionJobsRequest; 63 import com.google.cloud.aiplatform.v1beta1.ListBatchPredictionJobsResponse; 64 import com.google.cloud.aiplatform.v1beta1.ListCustomJobsRequest; 65 import com.google.cloud.aiplatform.v1beta1.ListCustomJobsResponse; 66 import com.google.cloud.aiplatform.v1beta1.ListDataLabelingJobsRequest; 67 import com.google.cloud.aiplatform.v1beta1.ListDataLabelingJobsResponse; 68 import com.google.cloud.aiplatform.v1beta1.ListHyperparameterTuningJobsRequest; 69 import com.google.cloud.aiplatform.v1beta1.ListHyperparameterTuningJobsResponse; 70 import com.google.cloud.aiplatform.v1beta1.ListModelDeploymentMonitoringJobsRequest; 71 import com.google.cloud.aiplatform.v1beta1.ListModelDeploymentMonitoringJobsResponse; 72 import com.google.cloud.aiplatform.v1beta1.ListNasJobsRequest; 73 import com.google.cloud.aiplatform.v1beta1.ListNasJobsResponse; 74 import com.google.cloud.aiplatform.v1beta1.ListNasTrialDetailsRequest; 75 import com.google.cloud.aiplatform.v1beta1.ListNasTrialDetailsResponse; 76 import com.google.cloud.aiplatform.v1beta1.ModelDeploymentMonitoringJob; 77 import com.google.cloud.aiplatform.v1beta1.NasJob; 78 import com.google.cloud.aiplatform.v1beta1.NasTrialDetail; 79 import com.google.cloud.aiplatform.v1beta1.PauseModelDeploymentMonitoringJobRequest; 80 import com.google.cloud.aiplatform.v1beta1.ResumeModelDeploymentMonitoringJobRequest; 81 import com.google.cloud.aiplatform.v1beta1.SearchModelDeploymentMonitoringStatsAnomaliesRequest; 82 import com.google.cloud.aiplatform.v1beta1.SearchModelDeploymentMonitoringStatsAnomaliesResponse; 83 import com.google.cloud.aiplatform.v1beta1.UpdateModelDeploymentMonitoringJobOperationMetadata; 84 import com.google.cloud.aiplatform.v1beta1.UpdateModelDeploymentMonitoringJobRequest; 85 import com.google.cloud.location.GetLocationRequest; 86 import com.google.cloud.location.ListLocationsRequest; 87 import com.google.cloud.location.ListLocationsResponse; 88 import com.google.cloud.location.Location; 89 import com.google.iam.v1.GetIamPolicyRequest; 90 import com.google.iam.v1.Policy; 91 import com.google.iam.v1.SetIamPolicyRequest; 92 import com.google.iam.v1.TestIamPermissionsRequest; 93 import com.google.iam.v1.TestIamPermissionsResponse; 94 import com.google.longrunning.Operation; 95 import com.google.longrunning.stub.OperationsStub; 96 import com.google.protobuf.Empty; 97 import javax.annotation.Generated; 98 99 // AUTO-GENERATED DOCUMENTATION AND CLASS. 100 /** 101 * Base stub class for the JobService service API. 102 * 103 * <p>This class is for advanced usage and reflects the underlying API directly. 104 */ 105 @BetaApi 106 @Generated("by gapic-generator-java") 107 public abstract class JobServiceStub implements BackgroundResource { 108 getOperationsStub()109 public OperationsStub getOperationsStub() { 110 throw new UnsupportedOperationException("Not implemented: getOperationsStub()"); 111 } 112 createCustomJobCallable()113 public UnaryCallable<CreateCustomJobRequest, CustomJob> createCustomJobCallable() { 114 throw new UnsupportedOperationException("Not implemented: createCustomJobCallable()"); 115 } 116 getCustomJobCallable()117 public UnaryCallable<GetCustomJobRequest, CustomJob> getCustomJobCallable() { 118 throw new UnsupportedOperationException("Not implemented: getCustomJobCallable()"); 119 } 120 121 public UnaryCallable<ListCustomJobsRequest, ListCustomJobsPagedResponse> listCustomJobsPagedCallable()122 listCustomJobsPagedCallable() { 123 throw new UnsupportedOperationException("Not implemented: listCustomJobsPagedCallable()"); 124 } 125 listCustomJobsCallable()126 public UnaryCallable<ListCustomJobsRequest, ListCustomJobsResponse> listCustomJobsCallable() { 127 throw new UnsupportedOperationException("Not implemented: listCustomJobsCallable()"); 128 } 129 130 public OperationCallable<DeleteCustomJobRequest, Empty, DeleteOperationMetadata> deleteCustomJobOperationCallable()131 deleteCustomJobOperationCallable() { 132 throw new UnsupportedOperationException("Not implemented: deleteCustomJobOperationCallable()"); 133 } 134 deleteCustomJobCallable()135 public UnaryCallable<DeleteCustomJobRequest, Operation> deleteCustomJobCallable() { 136 throw new UnsupportedOperationException("Not implemented: deleteCustomJobCallable()"); 137 } 138 cancelCustomJobCallable()139 public UnaryCallable<CancelCustomJobRequest, Empty> cancelCustomJobCallable() { 140 throw new UnsupportedOperationException("Not implemented: cancelCustomJobCallable()"); 141 } 142 143 public UnaryCallable<CreateDataLabelingJobRequest, DataLabelingJob> createDataLabelingJobCallable()144 createDataLabelingJobCallable() { 145 throw new UnsupportedOperationException("Not implemented: createDataLabelingJobCallable()"); 146 } 147 getDataLabelingJobCallable()148 public UnaryCallable<GetDataLabelingJobRequest, DataLabelingJob> getDataLabelingJobCallable() { 149 throw new UnsupportedOperationException("Not implemented: getDataLabelingJobCallable()"); 150 } 151 152 public UnaryCallable<ListDataLabelingJobsRequest, ListDataLabelingJobsPagedResponse> listDataLabelingJobsPagedCallable()153 listDataLabelingJobsPagedCallable() { 154 throw new UnsupportedOperationException("Not implemented: listDataLabelingJobsPagedCallable()"); 155 } 156 157 public UnaryCallable<ListDataLabelingJobsRequest, ListDataLabelingJobsResponse> listDataLabelingJobsCallable()158 listDataLabelingJobsCallable() { 159 throw new UnsupportedOperationException("Not implemented: listDataLabelingJobsCallable()"); 160 } 161 162 public OperationCallable<DeleteDataLabelingJobRequest, Empty, DeleteOperationMetadata> deleteDataLabelingJobOperationCallable()163 deleteDataLabelingJobOperationCallable() { 164 throw new UnsupportedOperationException( 165 "Not implemented: deleteDataLabelingJobOperationCallable()"); 166 } 167 deleteDataLabelingJobCallable()168 public UnaryCallable<DeleteDataLabelingJobRequest, Operation> deleteDataLabelingJobCallable() { 169 throw new UnsupportedOperationException("Not implemented: deleteDataLabelingJobCallable()"); 170 } 171 cancelDataLabelingJobCallable()172 public UnaryCallable<CancelDataLabelingJobRequest, Empty> cancelDataLabelingJobCallable() { 173 throw new UnsupportedOperationException("Not implemented: cancelDataLabelingJobCallable()"); 174 } 175 176 public UnaryCallable<CreateHyperparameterTuningJobRequest, HyperparameterTuningJob> createHyperparameterTuningJobCallable()177 createHyperparameterTuningJobCallable() { 178 throw new UnsupportedOperationException( 179 "Not implemented: createHyperparameterTuningJobCallable()"); 180 } 181 182 public UnaryCallable<GetHyperparameterTuningJobRequest, HyperparameterTuningJob> getHyperparameterTuningJobCallable()183 getHyperparameterTuningJobCallable() { 184 throw new UnsupportedOperationException( 185 "Not implemented: getHyperparameterTuningJobCallable()"); 186 } 187 188 public UnaryCallable< 189 ListHyperparameterTuningJobsRequest, ListHyperparameterTuningJobsPagedResponse> listHyperparameterTuningJobsPagedCallable()190 listHyperparameterTuningJobsPagedCallable() { 191 throw new UnsupportedOperationException( 192 "Not implemented: listHyperparameterTuningJobsPagedCallable()"); 193 } 194 195 public UnaryCallable<ListHyperparameterTuningJobsRequest, ListHyperparameterTuningJobsResponse> listHyperparameterTuningJobsCallable()196 listHyperparameterTuningJobsCallable() { 197 throw new UnsupportedOperationException( 198 "Not implemented: listHyperparameterTuningJobsCallable()"); 199 } 200 201 public OperationCallable<DeleteHyperparameterTuningJobRequest, Empty, DeleteOperationMetadata> deleteHyperparameterTuningJobOperationCallable()202 deleteHyperparameterTuningJobOperationCallable() { 203 throw new UnsupportedOperationException( 204 "Not implemented: deleteHyperparameterTuningJobOperationCallable()"); 205 } 206 207 public UnaryCallable<DeleteHyperparameterTuningJobRequest, Operation> deleteHyperparameterTuningJobCallable()208 deleteHyperparameterTuningJobCallable() { 209 throw new UnsupportedOperationException( 210 "Not implemented: deleteHyperparameterTuningJobCallable()"); 211 } 212 213 public UnaryCallable<CancelHyperparameterTuningJobRequest, Empty> cancelHyperparameterTuningJobCallable()214 cancelHyperparameterTuningJobCallable() { 215 throw new UnsupportedOperationException( 216 "Not implemented: cancelHyperparameterTuningJobCallable()"); 217 } 218 createNasJobCallable()219 public UnaryCallable<CreateNasJobRequest, NasJob> createNasJobCallable() { 220 throw new UnsupportedOperationException("Not implemented: createNasJobCallable()"); 221 } 222 getNasJobCallable()223 public UnaryCallable<GetNasJobRequest, NasJob> getNasJobCallable() { 224 throw new UnsupportedOperationException("Not implemented: getNasJobCallable()"); 225 } 226 listNasJobsPagedCallable()227 public UnaryCallable<ListNasJobsRequest, ListNasJobsPagedResponse> listNasJobsPagedCallable() { 228 throw new UnsupportedOperationException("Not implemented: listNasJobsPagedCallable()"); 229 } 230 listNasJobsCallable()231 public UnaryCallable<ListNasJobsRequest, ListNasJobsResponse> listNasJobsCallable() { 232 throw new UnsupportedOperationException("Not implemented: listNasJobsCallable()"); 233 } 234 235 public OperationCallable<DeleteNasJobRequest, Empty, DeleteOperationMetadata> deleteNasJobOperationCallable()236 deleteNasJobOperationCallable() { 237 throw new UnsupportedOperationException("Not implemented: deleteNasJobOperationCallable()"); 238 } 239 deleteNasJobCallable()240 public UnaryCallable<DeleteNasJobRequest, Operation> deleteNasJobCallable() { 241 throw new UnsupportedOperationException("Not implemented: deleteNasJobCallable()"); 242 } 243 cancelNasJobCallable()244 public UnaryCallable<CancelNasJobRequest, Empty> cancelNasJobCallable() { 245 throw new UnsupportedOperationException("Not implemented: cancelNasJobCallable()"); 246 } 247 getNasTrialDetailCallable()248 public UnaryCallable<GetNasTrialDetailRequest, NasTrialDetail> getNasTrialDetailCallable() { 249 throw new UnsupportedOperationException("Not implemented: getNasTrialDetailCallable()"); 250 } 251 252 public UnaryCallable<ListNasTrialDetailsRequest, ListNasTrialDetailsPagedResponse> listNasTrialDetailsPagedCallable()253 listNasTrialDetailsPagedCallable() { 254 throw new UnsupportedOperationException("Not implemented: listNasTrialDetailsPagedCallable()"); 255 } 256 257 public UnaryCallable<ListNasTrialDetailsRequest, ListNasTrialDetailsResponse> listNasTrialDetailsCallable()258 listNasTrialDetailsCallable() { 259 throw new UnsupportedOperationException("Not implemented: listNasTrialDetailsCallable()"); 260 } 261 262 public UnaryCallable<CreateBatchPredictionJobRequest, BatchPredictionJob> createBatchPredictionJobCallable()263 createBatchPredictionJobCallable() { 264 throw new UnsupportedOperationException("Not implemented: createBatchPredictionJobCallable()"); 265 } 266 267 public UnaryCallable<GetBatchPredictionJobRequest, BatchPredictionJob> getBatchPredictionJobCallable()268 getBatchPredictionJobCallable() { 269 throw new UnsupportedOperationException("Not implemented: getBatchPredictionJobCallable()"); 270 } 271 272 public UnaryCallable<ListBatchPredictionJobsRequest, ListBatchPredictionJobsPagedResponse> listBatchPredictionJobsPagedCallable()273 listBatchPredictionJobsPagedCallable() { 274 throw new UnsupportedOperationException( 275 "Not implemented: listBatchPredictionJobsPagedCallable()"); 276 } 277 278 public UnaryCallable<ListBatchPredictionJobsRequest, ListBatchPredictionJobsResponse> listBatchPredictionJobsCallable()279 listBatchPredictionJobsCallable() { 280 throw new UnsupportedOperationException("Not implemented: listBatchPredictionJobsCallable()"); 281 } 282 283 public OperationCallable<DeleteBatchPredictionJobRequest, Empty, DeleteOperationMetadata> deleteBatchPredictionJobOperationCallable()284 deleteBatchPredictionJobOperationCallable() { 285 throw new UnsupportedOperationException( 286 "Not implemented: deleteBatchPredictionJobOperationCallable()"); 287 } 288 289 public UnaryCallable<DeleteBatchPredictionJobRequest, Operation> deleteBatchPredictionJobCallable()290 deleteBatchPredictionJobCallable() { 291 throw new UnsupportedOperationException("Not implemented: deleteBatchPredictionJobCallable()"); 292 } 293 cancelBatchPredictionJobCallable()294 public UnaryCallable<CancelBatchPredictionJobRequest, Empty> cancelBatchPredictionJobCallable() { 295 throw new UnsupportedOperationException("Not implemented: cancelBatchPredictionJobCallable()"); 296 } 297 298 public UnaryCallable<CreateModelDeploymentMonitoringJobRequest, ModelDeploymentMonitoringJob> createModelDeploymentMonitoringJobCallable()299 createModelDeploymentMonitoringJobCallable() { 300 throw new UnsupportedOperationException( 301 "Not implemented: createModelDeploymentMonitoringJobCallable()"); 302 } 303 304 public UnaryCallable< 305 SearchModelDeploymentMonitoringStatsAnomaliesRequest, 306 SearchModelDeploymentMonitoringStatsAnomaliesPagedResponse> searchModelDeploymentMonitoringStatsAnomaliesPagedCallable()307 searchModelDeploymentMonitoringStatsAnomaliesPagedCallable() { 308 throw new UnsupportedOperationException( 309 "Not implemented: searchModelDeploymentMonitoringStatsAnomaliesPagedCallable()"); 310 } 311 312 public UnaryCallable< 313 SearchModelDeploymentMonitoringStatsAnomaliesRequest, 314 SearchModelDeploymentMonitoringStatsAnomaliesResponse> searchModelDeploymentMonitoringStatsAnomaliesCallable()315 searchModelDeploymentMonitoringStatsAnomaliesCallable() { 316 throw new UnsupportedOperationException( 317 "Not implemented: searchModelDeploymentMonitoringStatsAnomaliesCallable()"); 318 } 319 320 public UnaryCallable<GetModelDeploymentMonitoringJobRequest, ModelDeploymentMonitoringJob> getModelDeploymentMonitoringJobCallable()321 getModelDeploymentMonitoringJobCallable() { 322 throw new UnsupportedOperationException( 323 "Not implemented: getModelDeploymentMonitoringJobCallable()"); 324 } 325 326 public UnaryCallable< 327 ListModelDeploymentMonitoringJobsRequest, ListModelDeploymentMonitoringJobsPagedResponse> listModelDeploymentMonitoringJobsPagedCallable()328 listModelDeploymentMonitoringJobsPagedCallable() { 329 throw new UnsupportedOperationException( 330 "Not implemented: listModelDeploymentMonitoringJobsPagedCallable()"); 331 } 332 333 public UnaryCallable< 334 ListModelDeploymentMonitoringJobsRequest, ListModelDeploymentMonitoringJobsResponse> listModelDeploymentMonitoringJobsCallable()335 listModelDeploymentMonitoringJobsCallable() { 336 throw new UnsupportedOperationException( 337 "Not implemented: listModelDeploymentMonitoringJobsCallable()"); 338 } 339 340 public OperationCallable< 341 UpdateModelDeploymentMonitoringJobRequest, 342 ModelDeploymentMonitoringJob, 343 UpdateModelDeploymentMonitoringJobOperationMetadata> updateModelDeploymentMonitoringJobOperationCallable()344 updateModelDeploymentMonitoringJobOperationCallable() { 345 throw new UnsupportedOperationException( 346 "Not implemented: updateModelDeploymentMonitoringJobOperationCallable()"); 347 } 348 349 public UnaryCallable<UpdateModelDeploymentMonitoringJobRequest, Operation> updateModelDeploymentMonitoringJobCallable()350 updateModelDeploymentMonitoringJobCallable() { 351 throw new UnsupportedOperationException( 352 "Not implemented: updateModelDeploymentMonitoringJobCallable()"); 353 } 354 355 public OperationCallable< 356 DeleteModelDeploymentMonitoringJobRequest, Empty, DeleteOperationMetadata> deleteModelDeploymentMonitoringJobOperationCallable()357 deleteModelDeploymentMonitoringJobOperationCallable() { 358 throw new UnsupportedOperationException( 359 "Not implemented: deleteModelDeploymentMonitoringJobOperationCallable()"); 360 } 361 362 public UnaryCallable<DeleteModelDeploymentMonitoringJobRequest, Operation> deleteModelDeploymentMonitoringJobCallable()363 deleteModelDeploymentMonitoringJobCallable() { 364 throw new UnsupportedOperationException( 365 "Not implemented: deleteModelDeploymentMonitoringJobCallable()"); 366 } 367 368 public UnaryCallable<PauseModelDeploymentMonitoringJobRequest, Empty> pauseModelDeploymentMonitoringJobCallable()369 pauseModelDeploymentMonitoringJobCallable() { 370 throw new UnsupportedOperationException( 371 "Not implemented: pauseModelDeploymentMonitoringJobCallable()"); 372 } 373 374 public UnaryCallable<ResumeModelDeploymentMonitoringJobRequest, Empty> resumeModelDeploymentMonitoringJobCallable()375 resumeModelDeploymentMonitoringJobCallable() { 376 throw new UnsupportedOperationException( 377 "Not implemented: resumeModelDeploymentMonitoringJobCallable()"); 378 } 379 380 public UnaryCallable<ListLocationsRequest, ListLocationsPagedResponse> listLocationsPagedCallable()381 listLocationsPagedCallable() { 382 throw new UnsupportedOperationException("Not implemented: listLocationsPagedCallable()"); 383 } 384 listLocationsCallable()385 public UnaryCallable<ListLocationsRequest, ListLocationsResponse> listLocationsCallable() { 386 throw new UnsupportedOperationException("Not implemented: listLocationsCallable()"); 387 } 388 getLocationCallable()389 public UnaryCallable<GetLocationRequest, Location> getLocationCallable() { 390 throw new UnsupportedOperationException("Not implemented: getLocationCallable()"); 391 } 392 setIamPolicyCallable()393 public UnaryCallable<SetIamPolicyRequest, Policy> setIamPolicyCallable() { 394 throw new UnsupportedOperationException("Not implemented: setIamPolicyCallable()"); 395 } 396 getIamPolicyCallable()397 public UnaryCallable<GetIamPolicyRequest, Policy> getIamPolicyCallable() { 398 throw new UnsupportedOperationException("Not implemented: getIamPolicyCallable()"); 399 } 400 401 public UnaryCallable<TestIamPermissionsRequest, TestIamPermissionsResponse> testIamPermissionsCallable()402 testIamPermissionsCallable() { 403 throw new UnsupportedOperationException("Not implemented: testIamPermissionsCallable()"); 404 } 405 406 @Override close()407 public abstract void close(); 408 } 409