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.

viernes, 14 de septiembre de 2007

Null entity, null object from form in jsp

Exception derivada de que el objeto que se esperaba del jsp viene en null:

SEVERE: Servlet.service() for servlet default threw exception
java.lang.IllegalArgumentException: attempt to create merge event with null entity
at org.hibernate.event.MergeEvent.(MergeEvent.java:37)

El problema en este caso es que el field del objeto en el action no tenía el setter, pero por lo visto no se loguea la falta del setter y la no asignación.

Entity is not mapped Exception

Exception: org.hibernate.hql.ast.QuerySyntaxException: Country is not mapped
Posibles causas:
-La entidad no tiene las annotations, no está en el orm o no tiene un hbm mapeado.
-HibernateSupport no está enlazado al JPA EntityManager que procesa las annot.

miércoles, 12 de septiembre de 2007

xwork2.ObjectFactory ... already loaded

Exception:
SEVERE: Exception starting filter struts Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory ...
bean already loaded...

Incompatibilidad de librerias, en este caso había dos jars de struts de diferentes versiones.

lunes, 3 de septiembre de 2007

org.springframework.beans.factory.BeanCreationException: Error creating bean

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name '.....Service' defined in file [D:\work....\applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.properties()[Ljavax/persistence/PersistenceProperty;
Caused by: java.lang.NoSuchMethodError: javax.persistence.PersistenceContext.properties()[Ljavax/persistence/PersistenceProperty;
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.addIfPresent(PersistenceAnnotationBeanPostProcessor.java:327)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.access$000(PersistenceAnnotationBeanPostProcessor.java:148)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor$2.doWith(PersistenceAnnotationBeanPostProcessor.java:304)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:226)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:203)

Problema de librerías, algun jar incompatible.

Solución:sacar los jars de las libs de spring o de algun lugar confiable

viernes, 31 de agosto de 2007

Unknowk entity for JPA

org.hibernate.MappingException: Unknown entity: com.....model.EntityClass

Problema: Al inicializar la sessionFactory a través del xml, las entidades mapeadas por JPA annotations (org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor) no están reconocidas

Invalid property (arranque Spring)

Clasico 1:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'beanName' while setting bean property 'prop'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personDao' defined in ServletContext resource

Problema de referencia de cableo, chequear que la property en el xml esté matcheada en la clase a cablear y que tenga el setter.

Clasico 2
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [com....] for property 'dao'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [com.....] for property 'dao': no matching editors or conversion strategy found

Problema de referencia, chequear el parámetro de la property en el xml (value o ref)

martes, 28 de agosto de 2007

Validator Exception (XWork)

ERROR - DomHelper$StartHandler.error(347) | Attribute "type" is required and must be specified for element type "validator". at (null:5:109)
org.xml.sax.SAXParseException: Attribute "type" is required and must be specified for element type "validator".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

Problema:configuración xml de validators o jar faltante

Gambeta: sacar la validación

lunes, 27 de agosto de 2007

Unable to load config class org.apache.struts2.interceptor.debugging.DebuggingInterceptor

Algo asi:

WARN - InterceptorBuilder.constructInterceptorReference(60) | Unable to load config class org.apache.struts2.interceptor.debugging.DebuggingInterceptor at interceptor - jar:file:/D:/work/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/pxw/WEB-INF/lib/struts2-core-2.0.8.jar!/struts-default.xml:76:115 probably due to a missing jar, which might be fine if you never plan to use the debugging interceptor

Problema: enlace struts-spring, hay un file con properties de struts http://cwiki.apache.org/WW/strutsproperties.html
donde se explica algo.

Solución: en struts.properties se comentó la linea:
#struts.objectFactory=spring

Struts2+Spring2 Severe exception

SEVERE: Exception starting filter struts
Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:223)

Problema: Falta el struts2-spring-plugin.jar

jueves, 9 de agosto de 2007

findAll List wrong size

La lista de elementos retornada por findAll() tiene un elemento null al final que hace saltar las iteraciones

jueves, 2 de agosto de 2007

JPA error (xmlRootContentNode)

java.lang.NullPointerException
at org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode.handleJavaElementChangedEvent(XmlRootContentNode.java:341)
at org.eclipse.jpt.core.internal.JpaFile.handleEvent(JpaFile.java:212)
at org.eclipse.jpt.core.internal.JpaProject.handleEvent(JpaProject.java:647)
at org.eclipse.jpt.core.internal.JpaModel.handleEvent(JpaModel.java:187)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeProcessor.elementChanged(JpaModelManager.java:529)
at org.eclipse.jpt.core.internal.JpaModelManager$ElementChangeListener.elementChanged(JpaModelManager.java:508)
at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:150)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

jueves, 26 de julio de 2007

Struts2+spring2

Exception al arrancar:
org.mortbay.util.MultiException[Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]]

Falta el jar struts-spring-plugin-x.x.x.jar

martes, 24 de julio de 2007

Librerias WEB

Creación de una user-library con commons-validator,loggins,.... y compañia para agilizar el tema de las librerías en eclipse. En el build-path, add Library, User Library.

jueves, 19 de julio de 2007

Starting preview server

19/07/2007 17:23:07 org.mortbay.jetty.servlet.ServletHandler handle
WARNING: EXCEPTION
javax.servlet.ServletException: org/apache/commons/el/ExpressionEvaluatorImpl
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:272)

workaround for me is:

Configure the "J2EE Preview at localhost" "Run" settings, go to the classpath section and add the missing jars (so far org.apache.commons.el and org.apache.jasper) as "User entries"

After doing that I can run simple JSP pages on the Preview server!

Ir al Run dialog y agregar el jar como "user entry"