Hi All,

I am trying to fix the dbreport integration test case for the ESB 4.9.0
release and came through the below exception from the automation framework.

java.sql.SQLException: Operation not allowed after ResultSet closed
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
    at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:768)
    at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7008)
    at
org.wso2.carbon.esb.mediator.test.db.dbreport.DBReportMediatorTestCase.getPrice(DBReportMediatorTestCase.java:209)
    at
org.wso2.carbon.esb.mediator.test.db.dbreport.DBReportMediatorTestCase.DBReportUseMessageContentTestCase(DBReportMediatorTestCase.java:141)


When I go through the code of the automation framework, I found out that
the below code segment in the MySqlDatabaseManager class. *This will close
the Statement after executing. But that operation will eventually closes
the result set according to the java documentation[1]*

    /**
     * @param sql
     * @return
     * @throws java.sql.SQLException
     */
    public ResultSet executeQuery(String sql) throws SQLException {
        ResultSet rs;
        Statement st = null;
        try {
            st = connection.createStatement();
            log.debug(sql);
            rs = st.executeQuery(sql);
        } finally {
            if (st != null) {
                st.close();
            }
        }
        return rs;
    }

Due to this reason, we cannot look in to the result set within the
integration test code which is a requirement for this specific test case of
dbreport mediator.

ResultSet rs = mySqlDatabaseManager.executeQuery("SELECT price from company
WHERE name = 'WSO2'");

        while (rs.next()) {
            price = Double.toString(rs.getDouble("price"));
        }


In the above code, it fails when trying to call the rs.next() since the
result set is already closed.

WDYT?


[1]
http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeQuery%28java.lang.String%29


Thanks,
Chanaka

-- 
--
Chanaka Fernando
Technical Lead
WSO2, Inc.; http://wso2.com
lean.enterprise.middleware

mobile: +94 773337238
Blog : http://soatutorials.blogspot.com
LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0
Twitter:https://twitter.com/chanakaudaya
Wordpress:http://chanakaudaya.wordpress.com
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to