[ 
http://www.stripesframework.org/jira/browse/STS-576?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Frederic Daoud resolved STS-576.
--------------------------------

    Resolution: Not a Bug

Type Converters cannot automatically be used for subclasses of a base class. 
You must either:

* use @Validate(converter=MyTypeConverter.class) on the property
* declare your subclasses in @TargetTypes on the type converter
* declare an annotation in @TargetTypes on the type converter, use the 
annotation on your subclasses, and return the proper subclass from the type 
converter using the targetType parameter which is passed to the convert() 
method.


> Converter not used for generic types
> ------------------------------------
>
>                 Key: STS-576
>                 URL: http://www.stripesframework.org/jira/browse/STS-576
>             Project: Stripes
>          Issue Type: Bug
>          Components: Validation
>    Affects Versions: Release 1.5
>         Environment: Java 5 on Tomcat 5.5.25
>            Reporter: Christian Poitras
>         Attachments: test.zip
>
>
> When having a generic type as a field, no converted are used.
> In fact, a NullPointerException is thrown by PropertyExpressionEvaluation.
> Here is my log.
> 2008-05-27 10:33:24,000 - DEBUG - debug - Could not bind property with name 
> [relation] to bean of type: ReadRelationVisibilityAction - 
> net.sourceforge.stripes.util.Log - (cloutip) - 114 
> java.lang.NullPointerException
>         at 
> net.sourceforge.stripes.util.bean.PropertyExpressionEvaluation.getScalarType(PropertyExpressionEvaluation.java:550)
>         at 
> net.sourceforge.stripes.controller.DefaultActionBeanPropertyBinder.bind(DefaultActionBeanPropertyBinder.java:150)
>         at 
> net.sourceforge.stripes.controller.DispatcherHelper$3.intercept(DispatcherHelper.java:194)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
>         at 
> ca.qc.ircm.proteus.web.interceptor.HandleErrorsInterceptor.intercept(HandleErrorsInterceptor.java:45)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
>         at 
> ca.qc.ircm.proteus.web.interceptor.RoleInterceptor.intercept(RoleInterceptor.java:63)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
>         at 
> com.mongus.stripes.extension.wait.WaitPageInterceptor.intercept(WaitPageInterceptor.java:169)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
>         at 
> net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:111)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
>         at 
> net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
>         at 
> net.sourceforge.stripes.controller.DispatcherHelper.doBindingAndValidation(DispatcherHelper.java:190)
>         at 
> net.sourceforge.stripes.controller.DispatcherServlet.doBindingAndValidation(DispatcherServlet.java:261)
>         at 
> net.sourceforge.stripes.controller.DispatcherServlet.doPost(DispatcherServlet.java:155)
>         at 
> net.sourceforge.stripes.controller.DispatcherServlet.doGet(DispatcherServlet.java:67)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>         at 
> net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:363)
>         at 
> net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246)
>         at 
> net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:350)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>         at 
> ca.qc.ircm.proteus.web.filter.GroupFilter.doFilter(GroupFilter.java:72)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>         at 
> ca.qc.ircm.proteus.web.filter.ProjectFilter.doFilter(ProjectFilter.java:90)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>         at ca.qc.ircm.proteus.web.filter.LogFilter.doFilter(LogFilter.java:48)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
>         at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
>         at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>         at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>         at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>         at java.lang.Thread.run(Thread.java:595)
> My action Beans is defined as.
> public class ReadRelationVisibilityAction<Rel extends Relation> extends 
> BaseActionBean {
>     private Rel relation;
>     // Other code and getter and setter...
> I have a concrete Converter class for Relation.
> Note that my relation class is abstract.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to