Versions: SmartGWT EE 2.5, GWT 2.5
Code TestTable.ds.xml
Sending request:
Logs:
It's look as SmartGWT try to process response from stored procedure. Is't possible to fix this bug or avoid interaction with SQLTransform when I use stored procedures?
Code TestTable.ds.xml
Code:
<?xml version="1.0" encoding="UTF-8"?> <DataSource tableName="TestTable" serverType="sql" ID="TestTable"> <fields> <field name="ID" type="integer" primaryKey="true" required="false"/> <field name="OrderCol" type="integer" required="false"/> <field name="SomeText" type="text" required="false"/> </fields> <operationBindings> <operationBinding operationType="fetch"> <orderClause>OrderCol</orderClause> </operationBinding> <operationBinding operationType="add"> <tableClause>TestTable</tableClause> <valuesClause>(OrderCol, SomeText) VALUES (NULL, $values.SomeText)</valuesClause> </operationBinding> <operationBinding operationType="custom" operationId="swapOrder"> <customSQL>call swapOrder($httpParameters.idA, $httpParameters.idB)</customSQL> </operationBinding> </operationBindings> </DataSource>
Code:
buttonUp.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Record afterRecord = list.getSelectedRecord();
if(afterRecord != null) {
final int index = list.getRecordIndex(afterRecord);
if(index > 0) {
Record beforeRecord = list.getRecord(index - 1);
int afterRecordID = afterRecord.getAttributeAsInt("ID");
int beforeRecordID = beforeRecord.getAttributeAsInt("ID");
DataSource ds = DataSource.getDataSource("TestTable");
Record swapRecord = new Record();
DSRequest request = new DSRequest();
Map<String,String> params = new HashMap<String, String>();
params.put("idA", String.valueOf(afterRecordID));
params.put("idB", String.valueOf(beforeRecordID));
request.setParams(params);
ds.performCustomOperation("swapOrder", swapRecord, new DSCallback() {
@Override
public void execute(DSResponse response, Object rawData, DSRequest request) {
list.refreshRow(index);
list.refreshRow(index - 1);
}
}, request);
}
}
}
});
Code:
=== 2011-09-16 12:48:39,462 [0-64] INFO RequestContext - URL: '/buildingmanagement/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1': Safari with Accept-Encoding header
=== 2011-09-16 12:48:39,464 [0-64] DEBUG XML - Parsed XML from (in memory stream): 1ms
=== 2011-09-16 12:48:39,465 [0-64] DEBUG RPCManager - Processing 1 requests.
=== 2011-09-16 12:48:39,466 [0-64] DEBUG RPCManager - Request #1 (DSRequest) payload: {
values:{
__gwt_ObjectId:305
},
operationConfig:{
dataSource:"TestTable",
operationType:"custom"
},
appID:"builtinApplication",
operation:"swapOrder",
oldValues:{
__gwt_ObjectId:305
},
criteria:{
}
}
=== 2011-09-16 12:48:39,466 [0-64] INFO IDACall - Performing 1 operation(s)
=== 2011-09-16 12:48:39,466 [0-64] DEBUG AppBase - [builtinApplication.swapOrder] No userTypes defined, allowing anyone access to all operations for this application
=== 2011-09-16 12:48:39,466 [0-64] DEBUG AppBase - [builtinApplication.swapOrder] No public zero-argument method named '_swapOrder' found, performing generic datasource operation
=== 2011-09-16 12:48:39,466 [0-64] INFO SQLDataSource - [builtinApplication.swapOrder] Performing custom operation with
criteria: {} values: {__gwt_ObjectId:305}
=== 2011-09-16 12:48:39,466 [0-64] INFO SQLValuesClause - [builtinApplication.swapOrder] Ignored data for non-existent columns: [__gwt_ObjectId]
=== 2011-09-16 12:48:39,466 [0-64] DEBUG SQLValuesClause - [builtinApplication.swapOrder] Sequences: {}
=== 2011-09-16 12:48:39,466 [0-64] INFO SQLWhereClause - [builtinApplication.swapOrder] empty condition
=== 2011-09-16 12:48:39,472 [0-64] DEBUG PoolableSQLConnectionFactory - [builtinApplication.swapOrder] Returning pooled Connection
=== 2011-09-16 12:48:39,473 [0-64] INFO SQLDriver - [builtinApplication.swapOrder] Executing SQL query on 'Mysql': call swapOrder('10', '8')
=== 2011-09-16 12:48:39,552 [0-64] DEBUG SQLTransform - [builtinApplication.swapOrder] isBeforeFirst()/isAfterLast() throwing exceptions - attempting workaround
=== 2011-09-16 12:48:39,552 [0-64] WARN RequestContext - dsRequest.execute() failed:
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.getRow(ResultSetImpl.java:5291)
at org.apache.commons.dbcp.DelegatingResultSet.getRow(DelegatingResultSet.java:332)
at com.isomorphic.sql.SQLTransform.toListOfMapsOrBeans(SQLTransform.java:514)
at com.isomorphic.sql.SQLTransform.toListOfMapsOrBeans(SQLTransform.java:425)
at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:321)
at com.isomorphic.sql.SQLDriver.executeQuery(SQLDriver.java:562)
at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:376)
at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:371)
at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1289)
at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:280)
at com.isomorphic.sql.SQLDataSource.executeCustom(SQLDataSource.java:240)
at com.isomorphic.datasource.DataSource.execute(DataSource.java:1174)
at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:721)
at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
at com.isomorphic.application.AppBase.execute(AppBase.java:491)
at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1714)
at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:199)
at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:156)
at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:121)
at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Comment