Я впервые использовал Protobuf в этой весенней загрузке .class
@Service
public class CheckstockService {
public List<GetStockItem> checkstockTest(CheckstockRequest req) {
ManagedChannel channel = ManagedChannelBuilder.forAddress("10.51.4.3", 6566)
.usePlaintext()
.build();
GetStockGrpc.GetStockBlockingStub stub = GetStockGrpc.newBlockingStub(channel);
Collection<GetStockItem> stock = req.getGetStockItem().stream().map(
e -> GetStockItem.newBuilder()
.setProductId(e.getProductId())
.setQty(e.getQty()).build())
.collect(Collectors.toList());
GetStockResponse response = stub.getStock(GetStockRequest.newBuilder()
.setStoreCode(req.getStoreCode())
.addAllGetStockItem(stock)
.build());
channel.shutdown();
return response.getGetStockItemList();
}
}
и это мой файл Rest Api ExampleController.class
@PostMapping("/test")
public ResponseEntity<HashMap<String, Object>> test(
@RequestBody CheckstockRequest req){
HashMap<String, Object> data = new HashMap<>();
data.put("data", service.checkstockTest(req));
return new ResponseEntity<>(data, HttpStatus.OK);
}
здесь я пытаюсь ввести запрос списка в GetStockRequest , но возникает такая ошибка
"message": "Type definition error: [simple type, class com.google.protobuf.UnknownFieldSet];
nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
Direct self-reference leading to cycle (through reference chain:
java.util.HashMap[\"data\"]->java.util.Collections$UnmodifiableRandomAccessList[0]->
id.alfadigital.alfax.stockapi.controllers.grpc.GetStockItem[\"unknownFields\"]->
com.google.protobuf.UnknownFieldSet[\"defaultInstanceForType\"])"
Я не знаю, как это исправить .. Пожалуйста, помогите для решения ..