Запрос Protobuf при весенней загрузке - PullRequest
0 голосов
/ 28 апреля 2020

Я впервые использовал 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\"])"

Я не знаю, как это исправить .. Пожалуйста, помогите для решения ..

1 Ответ

0 голосов
/ 28 апреля 2020

Я выяснил, где проблема. в файле **ExampleController**. Я заменил метод возврата, который раньше был String, и процесс прошел успешно

...