Ho deciso di tornare a Dropwizard dopo un lungo periodo con Spring. Ho rapidamente ottenuto il servizio REST barebones assoluto costruito e funziona senza problemi.Semplice Dropwizard 0.7.1 Errore dell'applicazione su QueryParam opzionale con Java 8
Uso Dropwizard 0.7.1 e Java 1.8, solo voci POM sono la dipendenza dropwizard-core e il plugin maven compilatore di applicare Java 1.8, come raccomandato dal manuale Dropwizard
Tuttavia, come appena provo ad aggiungere un QueryParam opzionale al controller di base, l'applicazione non si avvia con il seguente errore (taglio per brevità):
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
il codice per il controller è il seguente:
012.@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;
}
}
Se rimuovo Opzionale dal mix, l'applicazione viene eseguita correttamente. Sostituisco il codice specifico opzionale con i controlli null e funziona perfettamente.
Mi manca qualcosa di fondamentale qui? Sia Google Guava Opzionale che java.util.Optional falliscono con lo stesso errore. (E sì, l'ho fatto stretto verso il basso per l'oggetto opzionale)
Un rapido Google/SO ricerca ha prodotto nulla di utile, ma sentitevi liberi di puntare a una risorsa forse ho perso
Grazie in anticipo!
Guava Opzionale è gestito di default da dropwizard, solo FYI. Non dimenticare di segnare la risposta. – Natan
Grazie, è stata un'avventura di 45 minuti di debugging confuso. – Joe