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, t1.p_type, t1.version,
t1.address, t1.name, t0.dt_foundation, t0.taxpayers_id FROM
park.legal_entity t0 INNER JOIN park.person t1 ON t0.person_id = 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
package park.web.page;
import javax.persistence.EntityManager;
import org.apache.click.control.Column;
import org.apache.click.control.FieldSet;
import org.apache.click.control.Form;
import org.apache.click.control.Submit;
import org.apache.click.control.Table;
import org.apache.click.control.TextField;
import org.apache.click.extras.control.DateField;
import park.model.LegalEntity;
import park.service.util.JpaHelper;
/**
*
* @author gilberto
*/
public class LegalEntityPage extends BorderPage {
protected Form form = new Form();
protected Table table = new Table();
protected String msg;
// -------------------------------------------------------- Constructor
public LegalEntityPage() {
form.setName("form");
table.setName("table");
addControl(table);
addControl(form);
FieldSet fieldSet = new FieldSet("LegalEntity");
form.add(fieldSet);
TextField nameField = new TextField("name", true);
nameField.setMinLength(5);
nameField.setFocus(true);
fieldSet.add(nameField);
TextField addressField = new TextField("address", true);
nameField.setMinLength(5);
nameField.setFocus(true);
fieldSet.add(addressField);
fieldSet.add(new DateField("dtFoundation", true));
TextField taxpayersIdField = new TextField("taxpayersId", true);
nameField.setMinLength(5);
nameField.setFocus(true);
fieldSet.add(taxpayersIdField);
table.setClass(Table.CLASS_ITS);
table.setPageSize(4);
table.setShowBanner(true);
table.setSortable(true);
table.addColumn(new Column("id"));
table.addColumn(new Column("name"));
table.addColumn(new Column("address"));
table.addColumn(new Column("dtFoundation"));
//column = new Column("Action");
//column.setDecorator(new LinkDecorator(table, deleteLink, "id"));
//column.setSortable(false);
//table.addColumn(column);
//fieldSet.add(new Checkbox("active"));
form.add(new Submit("ok", " OK ", this, "onOkClicked"));
form.add(new Submit("cancel", this, "onCancelClicked"));
}
// ----------------------------------------------------- Event Handlers
@Override
public void onRender() {
table.setRowList(JpaHelper.getEntityManager().createNamedQuery("LegalEntity.findAll").getResultList());
}
/**
* Handle the OK button click event.
*
* @return true
*/
public boolean onOkClicked() throws Exception {
EntityManager em = null;
if (form.isValid()) {
LegalEntity legalEntity = new LegalEntity();
form.copyTo(legalEntity);
try {
em = JpaHelper.getEntityManager();
em.getTransaction().begin();
em.persist(legalEntity);
em.getTransaction().commit();
} catch (Exception ex) {
//I don't know what to do here right now!
throw ex;
} finally {
if (em != null) {
em.close();
}
}
form.clearValues();
msg = "A new legalEntity record has been created";
}
return true;
}
/**
* Handle the Cancel button click event.
*
* @return false
*/
public boolean onCancelClicked() {
setRedirect(LegalEntityPage.class);
return false;
}
}