Hi Chanaka, Yes , either we have to read the result and fill to some data object within this method or use CachedRowSet.
But when we use CachedRowSet impl within the method to wrap the ResultSet, we don't need to change the method signature and consumer doesn't need to depend on this CachedRowSet impl. Instead of that , you can just keep return type as ResultSet. WDYT ? *Harsha Thirimanna* Senior Software Engineer; WSO2, Inc.; http://wso2.com * <http://www.apache.org/>* *email: **[email protected]* <[email protected]>* cell: +94 71 5186770 , +94 * *774617784twitter: **http://twitter.com/ <http://twitter.com/afkham_azeez>* *harshathirimannlinked-in: **http: <http://lk.linkedin.com/in/afkhamazeez>**//www.linkedin.com/pub/harsha-thirimanna/10/ab8/122 <http://www.linkedin.com/pub/harsha-thirimanna/10/ab8/122>* *Lean . Enterprise . Middleware* On Sun, Feb 15, 2015 at 2:55 PM, Chanaka Fernando <[email protected]> wrote: > Hi All, > > I have found a fix for the above mentioned issue. We can use the > CachedRowSet[1] implementation to get the result set and manipulate the > results with that. I have created the pull request with the fix [2]. This > approach will make sure that the connections are properly closed and the > data set is available to manipulate. Please review the fix and merge. > > [1] > http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/CachedRowSet.html > [2] https://github.com/wso2/carbon-platform-integration/pull/42 > > > Thanks, > Chanaka > > On Sun, Feb 15, 2015 at 1:39 PM, Chanaka Fernando <[email protected]> > wrote: > >> 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 >> >> >> >> > > > -- > -- > 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 > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
