He usado la libreria jPopulator para rellenar unos beans y mockear el comportamiento de unos algoritmos.
Estoy intentando mockear un Web Service. Y estaba rellanado los bean generados con la herramienta cxf codegen. Estas herramientas son geniales super útiles, pero los bean no cumplen los estandars. Por ejemplo:
public class ArrayOfPCGError { protected List<PCGError> pcgError; public List<PCGError> getPCGError() { if (pcgError == null) { pcgError = new ArrayList<PCGError>(); } return this.pcgError; } }
En esta clase no hay metodo set y el metodo getPCGError no cumple con el atributo «pcgError». Debiera ser: getPcgError()
Si le dices a jPopulator que te lo rellene, salta una excepcion.
nov 11, 2014 XX:XX:20 PM io.github.benas.jpopulator.impl.PopulatorImpl populateBeanWithExcludeFields GRAVE: Unable to populate an instance of type class xxx.yyy.zzz.ArrayOfPCGError java.lang.NoSuchMethodException: Unknown property 'pcgError' on class 'class xxx.yyy.zzz.ArrayOfPCGError'
¿Como solucionarlo?. Añadiendo a la libreria una nueva funcionalidad. La de excluir algunos metodos. HE añadido a la interfaz Populator el siguiente metodo:
public interface Populator { //... <T> T populateBeanWithExcludeFields(Class<T> type, String... excludeFieldsName); }
He implementao el metodo resultante sin repetir codigo y he realizado los test.
Espero lo agreguen como funcionalidad, mientras lo tengo compilado en mi maven, en local.