2010-11-18 6 views
6

Ésta es mi clase (JAX-RS anotado):¿Cómo enseñar findbugs para comprender los campos de IoC correctamente?

@Path("/") 
public class Foo { 
    @Context 
    private UriInfo uriInfo; 
    // ... 
} 

Esto es lo que findbugs dice:

Unwritten field: com.XXX.Foo.uriInfo 

Es cierto, el campo no está escrito, pero se inyecta por JAX-RS servlet . Creo que estoy haciendo algo mal aquí, pero ¿cómo resolver el problema?

+0

usted podría intentar simplemente la supresión de la advertencia ... –

+0

@Donal Bueno, por supuesto, Incluso puedo deshabilitar la validación de findbugs. Pero el objetivo no es desactivar la validación, sino comprender cómo escribir un código seguro. Los Findbugs y sus advertencias están diseñados para ayudar en esto, por lo que yo entiendo. ¿Derecha? – yegor256

+0

Es por eso que no lo convertí en una respuesta. (También podría preguntar esto directamente a los desarrolladores de Findbugs: la anotación '@ Context' se retiene en el tiempo de ejecución y así puede ser detectada por su analizador .OTOH, cuando las cosas se vuelven complejas, por ejemplo, con Spring, * todavía * es mejor hacerlo una diferente forma en que Findbugs no se molestará tanto.) –

Respuesta

3

Lo que he entendido hasta ahora es que findbugs es correcto. Me dice que esta variable no es accesible desde fuera de la clase, y mi anotación no es válida en términos de OOP. El servlet JAX-RS deberá romper las restricciones de acceso de campo para inyectar UriInfo. Tengo que darle una forma legal de este campo:

@Path("/") 
public class Foo { 
    private UriInfo uriInfo; 
    @Context 
    public void setUriInfo(UriInfo info) { 
    this.uriInfo = info; 
    } 
    // ... 
} 

Ahora es el correcto para findbugs y para la programación orientada a objetos paradigma de diseño :)

+0

... y ¿cómo está afectando la cobertura de su prueba? ;-) – Armand

+0

La anotación '@ Context' * does * funciona de esa manera. –

+0

@Alison Por supuesto que tuve que agregar una nueva prueba para 'setUriInfo()' – yegor256

Cuestiones relacionadas