Попытка внедрить @Client в функцию Groovy - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь написать Micronaut AWS Groovy Lambda, который делает HTTPS-вызовы другой службой.Я следовал MN Docs и создал свой проект, используя:

 mn create-function hello-world -lang groovy

Это дало мне каркасный проект "hello-world" с функциональным тестом, который я могу запустить.

Я тогдапопытался изменить функцию Groovy (hello.world.HelloWorldFunction) для внедрения HTTP-клиента с целью вызова API в моей функции:

import static io.micronaut.http.HttpRequest.GET

@Field @Inject @Client("https://www.googleapis.com/books/v1") RxHttpClient httpClient

Maybe<String> helloWorld() {
    httpClient.retrieve(GET("/volumes?q=isbn:0747532699"))
              .firstElement()

}

После этого я получаю исключение при запуске функционального теста:

08:51:25.269 [nioEventLoopGroup-1-5] ERROR 
i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: 
Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient

Я почти наверняка делаю что-то не так, но я немного растерялся в плане того, как выяснить что.Поэтому благодарен за любые указатели.

Большое спасибо,

Edd

1 Ответ

0 голосов
/ 13 июня 2018

Нашел ответ на это.Это ошибка в 1.0.0.M1.Это уже исправлено в master, хотя его можно обойти, создав Micronaut из исходного кода и используя его.

Кроме того, я обнаружил, что возвращаю тип, который не поддерживается функциями Lambda (Maybe<String>).После сборки MN из master и замены на поддерживаемый тип возврата все теперь работает.

...