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;
    }
}

Reply via email to