Hi Gilberto,

Since you are using OpenJPA you might want to read the last comment here[1]. 
Basically OpenJPA
returns read-only lists from queries so when Click tries to reorder the list, 
it trips over the USO
exception.

There are various options available to work around this.

- Copy the result list from OpenJPA into a new list and pass that to Click -> 
new
ArrayList(openJPAList).

- Perform sorting manually in a DAO or service layer For example perform 
sorting in the DB then
inform Table that the rowList is already sorted -> table.setSorted(true);

- If you have a very large result set you might want to use a 
PagingDataProvider (introduced in
2.2.0). Here is an example[2] with sourcecode[3]:

Does that help?

Kind regards

Bob

[1]:
http://openjpa.208410.n2.nabble.com/How-to-remove-an-entity-from-a-result-list-error-result-list-is-read-only-td209686.html
[2]: http://www.avoka.com/click-examples/table/large-dataset-demo.htm
[3]:
http://www.avoka.com/click-examples/source-viewer.htm?filename=WEB-INF/classes/org/apache/click/examples/page/table/LargeDatasetDemo.java


On 15/05/2010 04:51, Gilberto C. Andrade wrote:
> OS: opensuse 11.2
> JAVA: java-1.6.0-openjdk
> CLICK: 2.1.0
> 
> Hi,
> 
> I'm getting that exception when clicking on table column - to order it:
> <quote>
> [Click] [debug] GET http://localhost:8080/legalEntity.htm
> 169847  parkPU  TRACE  [qtp10023762-18] openjpa.jdbc.SQL - <t 26457604,
> conn 6592395> executing prepstmnt 31538403 SELECT t1.id <http://t1.id>,
> t1.p_type, t1.version, t1.address, t1.name <http://t1.name>,
> t0.dt_foundation, t0.taxpayers_id FROM park.legal_entity t0 INNER JOIN
> park.person t1 ON t0.person_id = t1.id <http://t1.id> WHERE t1.p_type =
> ? [params=(String) LE]
> 169847  parkPU  TRACE  [qtp10023762-18] openjpa.jdbc.SQL - <t 26457604,
> conn 6592395> [0 ms] spent
> [Click] [error] Velocity: Exception rendering #parse(/legalEntity.htm)
> at /border-template.htm[line 22, column 13]
> [Click] [error] handleException:
> java.lang.UnsupportedOperationException: Result lists are read-only.
>     at
> org.apache.openjpa.lib.rop.AbstractListIterator.set(AbstractListIterator.java:42)
>     at
> org.apache.openjpa.lib.rop.ResultListIterator.set(ResultListIterator.java:33)
>     at
> org.apache.openjpa.kernel.DelegatingResultList$DelegatingListIterator.set(DelegatingResultList.java:445)
>     at java.util.Collections.sort(Collections.java:180)
>     at org.apache.click.control.Table.sortRowList(Table.java:1767)
>     at org.apache.click.control.Table.render(Table.java:1333)
>     at
> org.apache.click.control.AbstractControl.toString(AbstractControl.java:838)
>     at
> org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:393)
>     at
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
>     at org.apache.velocity.runtime.directive.Parse.render(Parse.java:260)
>     at
> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
>     at
> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
>     at org.apache.velocity.Template.merge(Template.java:328)
>     at org.apache.velocity.Template.merge(Template.java:235)
>     at
> org.apache.click.service.VelocityTemplateService.renderTemplate(VelocityTemplateService.java:350)
>     at org.apache.click.ClickServlet.renderTemplate(ClickServlet.java:810)
>     at org.apache.click.ClickServlet.performRender(ClickServlet.java:769)
>     at org.apache.click.ClickServlet.processPage(ClickServlet.java:542)
>     at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:363)
>     at org.apache.click.ClickServlet.doGet(ClickServlet.java:266)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>     at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
>     at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)
>     at
> org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>     at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)
>     at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
>     at org.eclipse.jetty.server.Server.handle(Server.java:334)
>     at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
>     at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:992)
>     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541)
>     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
>     at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
>     at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
>     at java.lang.Thread.run(Thread.java:636)
> [Click] [error] handleError: org.eclipse.jetty.io.RuntimeIOException
> thrown while handling java.lang.UnsupportedOperationException. Now
> throwing RuntimeException.org.eclipse.jetty.io.RuntimeIOException:
> java.io.IOException: Closed
>     at
> org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:187)
>     at
> org.apache.velocity.io.VelocityWriter.flushBuffer(VelocityWriter.java:129)
>     at org.apache.velocity.io.VelocityWriter.flush(VelocityWriter.java:153)
>     at
> org.apache.click.service.VelocityTemplateService.renderTemplate(VelocityTemplateService.java:377)
>     at org.apache.click.ClickServlet.renderTemplate(ClickServlet.java:810)
>     at org.apache.click.ClickServlet.performRender(ClickServlet.java:769)
>     at org.apache.click.ClickServlet.processPage(ClickServlet.java:542)
>     at org.apache.click.ClickServlet.handleException(ClickServlet.java:473)
>     at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:370)
>     at org.apache.click.ClickServlet.doGet(ClickServlet.java:266)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>     at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:427)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
>     at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:494)
>     at
> org.eclipse.jetty.server.session.SessionHandler.handle(SessionHandler.java:182)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:933)
>     at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
>     at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
>     at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>     at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)
>     at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
>     at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
>     at org.eclipse.jetty.server.Server.handle(Server.java:334)
>     at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
>     at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:992)
>     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:541)
>     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:203)
>     at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
>     at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
>     at
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
>     at java.lang.Thread.run(Thread.java:636)
> Caused by: java.io.IOException: Closed
>     at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:138)
>     at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:86)
>     at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:126)
>     at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:258)
>     at
> org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:178)
>     ... 32 more
> </quote>
> 
> In my class (attached) I just use a Table and Form class, nothing so
> complex. Is there anything wrong with this approach?
> 
> Regards,
> 
> Gilberto
> 
> 

Reply via email to