Postanowiłem wrócić do Dropwizard po bardzo długiej romansie ze Spring. Szybko udało mi się zbudować absolutny szkielet usługi REST i działa bez żadnych problemów.Prosta awaria aplikacji 0.7.1 Dropwizard przez opcjonalne zapytanie QueryParam w/Java 8
Korzystanie Dropwizard 0.7.1 i Java 1.8, tylko POM wpisy są zależność dropwizard-core i plugin Maven kompilator egzekwować Java 1.8, zgodnie z zaleceniami instrukcji obsługi Dropwizard
Jednakże, jak szybko, jak próbuję dodać opcjonalny QueryParam do podstawowego kontrolera, aplikacja nie daje się uruchomić z powodu następującego błędu (cut dla zwięzłość):
INFO [2015-01-03 17:44:58,059] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:
GET /(edge.dw.sample.controllers.IndexController)
ERROR [2015-01-03 17:44:58,158] com.sun.jersey.spi.inject.Errors: The following errors and warnings have been detected with resource and/or provider classes:
SEVERE: Missing dependency for method public java.lang.String edge.dw.sample.controllers.IndexController.index(java.util.Optional) at parameter at index 0
Exception in thread "main" javax.servlet.ServletException: [email protected]30103b7==com.sun.jersey.spi.container.servlet.ServletContainer,1,false
Kod dla kontrolera jest następująca:
@Path("/")
public class IndexController {
@GET
@Timed
public String index(@QueryParam("name") Optional<String> name) {
String saying = "Hi";
if(name != null && name.isPresent()) {
saying += " " + name.get();
}
return saying;
}
}
Jeśli usunę Opcjonalne z miksu, aplikacja działa dobrze. Zastępuję kod specyficzny dla Opcji z kontrolami zerowymi i działa idealnie.
Czy brakuje mi czegoś fundamentalnego? Zarówno Google Guava Opcjonalne, jak i java.util.Optional nie działają z tym samym błędem. (I tak, zrobiłem sprowadzić do opcjonalnego obiektu)
Szybkie Google/Więc szukaj niczego przydatnego dało, ale czuć się swobodnie wskazać mi do zasobu może mam nieodebranych
Z góry dzięki!
Guava Opcjonalne jest domyślnie obsługiwane przez dropwizard, tylko na nie. Nie zapomnij zaznaczyć odpowiedzi. – Natan
Dziękuję, to była 45-minutowa przygoda z zagmatwanym debugowaniem. – Joe