lunes, 12 de noviembre de 2007

ServletContext null in Action method: init()

En la inicialización de un action a través de algún método (eg init()) no está disponible el ServletContext a partir de ServletActionContext.getServletContext(); (devuelve null). En cambio en los métodos a llamar por struts si se asigna.

viernes, 9 de noviembre de 2007

Struts2 action not wiring in Spring

Para cablear el action a través de Spring en el struts.xml, en el atributo class del action se debe poner el id del bean del action definido en el appctx.xml de spring.

martes, 23 de octubre de 2007

Null Pointer in getStep method (Workflow descriptor)

Los StepDescriptors tienen dos métodos referidos al Id, uno se refiere al Id del step modelo y otro al Id de la entity persistente:
currentSteps = workflow.getCurrentSteps(workflowId);
Step currentStep = currentSteps.iterator().next();
assertEquals("Unexpected current step", 1, currentStep.getStepId());
logger.debug("Current step id:" + currentStep.getStepId());
logger.debug("Step entity id:" + currentStep.getId());
logger.debug("Step name:"+ wd.getStep((int) currentStep.getStepId()).getName());

En el caso en que se accese:
logger.debug("Step name:"+ wd.getStep((int) currentStep.getId()).getName());
se estará tratando de acceder al StepDescriptor con el id(db primary key) de un objeto persistido. Puede coincidir, más si el id(PK) es chico, que exista algún descriptor con ese número, pero seguramente va a ser una info errónea.

viernes, 5 de octubre de 2007

Upload File Error in HttpUnit

El file es readable y lo accedo en el test via inputStream.read() pero en la llamada desde httpunit
escupe la exception:
java.io.IOException: Read error
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at com.meterware.httpunit.MimeEncodedMessageBody$MimeEncoding.addFile(MimeEncodedMessageBody.java:145)
at com.meterware.httpunit.FileSubmitFormControl.addValues(FormControl.java:944)
at com.meterware.httpunit.WebForm.recordParameters(WebForm.java:584)

miércoles, 3 de octubre de 2007

HttpUnit & Javascripst fail

Cuando se submitea un form a través de un javasscript HttpUnit parece que se pierde porque no se realiza el submit. Si bien es una practica no recomendada, en casos legacy puede aparecer. Caso:

function agregar(f){
f.action = "form!save.action?";
f.submit();
return true;
}


Llamada en el test:
addButton.click();
WebResponse addResponse = wc.getCurrentPage();

El JSP:
-form action="" method="post" name="documentosAdmin" .....
......
-input type="button" name="agregar" value="Agregar" class="boton2" onClick="javascript:agregarDocumento(documentosAdmin);">

Fix: para lograr que corra el test (y para mejorar un poco el código también!) se puede sacar el submit del script:
//f.submit();
y cambiar el input type por submit:
-input type="submit" ...
Entonces el script cambia el action pero el submit se hace desde el boton y el test funciona.

martes, 2 de octubre de 2007

HttpUnit fail javascript

org.mozilla.javascript.EvaluatorException: The undefined value has no properties. (httpunit; line 26)
at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:76)

Problema con algun javascript, en este caso se pudo detectar con una herramienta de bugs en el firefox.

lunes, 17 de septiembre de 2007

Unable to intantiate Action!

Exception:
javax.servlet.ServletException: Unable to intantiate Action! - action - file:/C:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/RegionCrud/WEB-INF/classes/struts.xml:18:18 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)

Verificar cableado de los beans, no se loguea bien la instanciación cruzada entre el struts.xml y el appctx.xml. En este caso una interface genérica no se enlazaba a la implementación.