[ https://issues.apache.org/jira/browse/BEANUTILS-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Niall Pemberton updated BEANUTILS-157: -------------------------------------- Assignee: Niall Pemberton Priority: Minor (was: Major) Affects Version/s: 1.6.1 Summary: Beanutils's describe() method cannot determine reader methods for anonymous class (was: [beanutils] 1.6.1 cannot determine reader methods for anonymous class) > Beanutils's describe() method cannot determine reader methods for anonymous > class > --------------------------------------------------------------------------------- > > Key: BEANUTILS-157 > URL: https://issues.apache.org/jira/browse/BEANUTILS-157 > Project: Commons BeanUtils > Issue Type: Bug > Components: Bean / Property Utils > Affects Versions: 1.6.1 > Environment: Operating System: Windows XP > Platform: PC > Reporter: Thorbjørn Ravn Andersen > Assignee: Niall Pemberton > Priority: Minor > Fix For: 1.8.0 > > > I have the following snippet in a JSP-page which uses BeanUtils 1.6.1 and I > get > an exception. > Code snippet (the anonymous class is to get a JavaBean defined in the > JSP-page): > --- > List l = new ArrayList(); > for(int i = 1; i < 10; i++) { > final int i2 = i; > Object o = new Serializable() { > String x = "" + i2; > String y = "" + (100+i2) ; > public String getX() { > return x; > } > public String getY() { > return y; > } > public String toString() { > return getX() + " " + getY(); > } > }; > l.add(o); > Map map = BeanUtils.describe(o); > --- > which gives me the following exception: > --- > javax.servlet.ServletException: Property 'y' has no getter method > at > org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825) > at > org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758) > at org.apache.jsp.main_jsp._jspService(main_jsp.java:257) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) > at > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474) > at > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409) > at > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) > at > com.transaxiom.axsWHSweb.servlet.GetCurrentStock.doPost(GetCurrentStock.java:31) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > at > org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) > at java.lang.Thread.run(Thread.java:534) > --- > for what I can see it is the PropertyDescriptor.getReadMethod0 which does not > treat WeakReferences correctly. The passed property descriptor looks like: > --- > this= PropertyDescriptor (id=2658) > baseName= null > bound= false > classRef= WeakReference (id=2662) > constrained= false > displayName= null > expert= false > hidden= false > name= "y" > preferred= false > propertyEditorClassRef= null > propertyTypeRef= WeakReference (id=2664) > readMethodName= "getY" > readMethodRef= SoftReference (id=2666) > shortDescription= null > table= null > writeMethodName= null > writeMethodRef= null > -- > but now it is more complex than I can understand. Any suggestions? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]