I'm using smartclient EE version 2.4 and Chrome (also Firefox) with the Eclipse Plugin on Ubuntu 10.10. I'm getting the following error (see Developer console below):
2:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS)
So what do I need to do to support the 'fetch' operation. The examples don't seem to have to do anything for fetch so I'm not sure where to look for an example of implementing 'fetch'. Or do I need to?
from the Console:
=========================================
Initializing AppEngine server
Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Successfully processed /home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/appengine-web.xml
Successfully processed /home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/web.xml
[WARN] Could not instantiate listener com.smartgwt.sample.server.listener.HSQLServletContextListener
java.lang.ClassNotFoundException: com.smartgwt.sample.server.listener.HSQLServletContextListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.mortbay.jetty.handler.ContextHandler.loadClass(ContextHandler.java:1101)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289)
at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:149)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219)
at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:119)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:494)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1058)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:800)
at com.google.gwt.dev.DevMode.main(DevMode.java:304)
ISC: Configuring log4j from: file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/classes/log4j.isc.config.xml
=== 2011-03-05 06:16:51,074 [main] INFO ISCInit - Isomorphic SmartClient Framework - Initializing
=== 2011-03-05 06:16:51,103 [main] INFO ConfigLoader - Attempting to load framework.properties from CLASSPATH
=== 2011-03-05 06:16:51,388 [main] INFO ConfigLoader - Successfully loaded framework.properties from CLASSPATH at location: jar:file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/lib/isomorphic_core_rpc.jar!/framework.properties
=== 2011-03-05 06:16:51,388 [main] INFO ConfigLoader - Attempting to load project.properties from CLASSPATH
=== 2011-03-05 06:16:51,389 [main] INFO ConfigLoader - Unable to locate project.properties in CLASSPATH
=== 2011-03-05 06:16:51,416 [main] INFO ConfigLoader - Successfully loaded isc_interfaces.properties from CLASSPATH at location: jar:file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/lib/isomorphic_core_rpc.jar!/isc_interfaces.properties
=== 2011-03-05 06:16:51,417 [main] INFO ConfigLoader - Attempting to load server.properties from CLASSPATH
=== 2011-03-05 06:16:51,427 [main] INFO ConfigLoader - Successfully loaded server.properties from CLASSPATH at location: file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/classes/server.properties
=== 2011-03-05 06:16:51,461 [main] INFO Logger - Logging system started.
=== 2011-03-05 06:16:51,462 [main] INFO ISCInit - Isomorphic SmartClient Framework (SC_SNAPSHOT-2011-01-06/EVAL Deployment 2011-01-06) - Initialization Complete
=== 2011-03-05 06:16:51,465 [main] INFO ISCInit - Auto-detected webRoot - using: /home/cocofan/workspace5/SmartaskWeb2/war
=== 2011-03-05 06:16:51,788 [main] INFO PreCache - Isomorphic PreCache servlet loading
=== 2011-03-05 06:16:51,865 [main] INFO PoolManager - SmartClient pooling disabled for 'DataSource' objects
=== 2011-03-05 06:16:52,068 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DataSource.ds.xml: 12ms
=== 2011-03-05 06:16:52,082 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/builtinTypes.xml: 6ms
=== 2011-03-05 06:16:52,308 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DataSourceField.ds.xml: 6ms
=== 2011-03-05 06:16:52,418 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Validator.ds.xml: 26ms
=== 2011-03-05 06:16:52,489 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ValueMap.ds.xml: 14ms
=== 2011-03-05 06:16:52,508 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/InstantDataApp.ds.xml: 14ms
=== 2011-03-05 06:16:52,719 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Application.ds.xml: 2ms
=== 2011-03-05 06:16:52,755 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAPage.ds.xml: 2ms
=== 2011-03-05 06:16:52,788 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAUserType.ds.xml: 3ms
=== 2011-03-05 06:16:52,833 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAOperation.ds.xml: 16ms
=== 2011-03-05 06:16:52,908 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Canvas.ds.xml: 45ms
=== 2011-03-05 06:16:53,449 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/MethodDeclaration.ds.xml: 3ms
=== 2011-03-05 06:16:53,488 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Img.ds.xml: 13ms
=== 2011-03-05 06:16:53,510 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/StatefulCanvas.ds.xml: 4ms
=== 2011-03-05 06:16:53,572 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Button.ds.xml: 16ms
=== 2011-03-05 06:16:53,592 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ListViewer.ds.xml: 2ms
=== 2011-03-05 06:16:53,619 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ListGrid.ds.xml: 24ms
=== 2011-03-05 06:16:53,756 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DynamicForm.ds.xml: 19ms
=== 2011-03-05 06:16:53,815 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/FormItem.ds.xml: 9ms
=== 2011-03-05 06:16:53,894 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DetailViewer.ds.xml: 3ms
=== 2011-03-05 06:16:53,918 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DetailViewerField.ds.xml: 3ms
=== 2011-03-05 06:16:53,939 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/isomorphicXML.ds.xml: 2ms
=== 2011-03-05 06:16:53,950 [main] INFO PreCache - Isomorphic PreCache complete (2162ms)
The server is running at http://localhost:8888/
=== 2011-03-05 06:17:54,634 [04-0] INFO RequestContext - URL: '/images/masthead.png', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
[WARN] No file found for: /images/masthead.png
=== 2011-03-05 06:17:57,898 [04-0] INFO RequestContext - URL: '/SmartaskWeb/sc/IDACall', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
=== 2011-03-05 06:17:58,100 [04-0] DEBUG XML - Parsed XML from (in memory stream): 27ms
=== 2011-03-05 06:17:58,123 [04-0] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/List.ds.xml: 19ms
=== 2011-03-05 06:17:58,152 [04-0] DEBUG RPCManager - Processing 1 requests.
=== 2011-03-05 06:17:58,233 [04-0] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/ds/tasklistDS.ds.xml: 9ms
=== 2011-03-05 06:17:58,257 [04-0] DEBUG RPCManager - Request #1 (DSRequest) payload: {
criteria:{
__gwt_ObjectId:493
},
operationConfig:{
dataSource:"tasklistDS",
operationType:"fetch",
textMatchStyle:"substring"
},
startRow:0,
endRow:75,
componentId:"isc_ListGrid_4",
appID:"builtinApplication",
operation:"tasklistDS_fetch",
oldValues:{
__gwt_ObjectId:493
}
}
=== 2011-03-05 06:17:58,265 [04-0] INFO IDACall - Performing 1 operation(s)
=== 2011-03-05 06:17:58,396 [04-0] DEBUG AppBase - [builtinApplication.tasklistDS_fetch] No userTypes defined, allowing anyone access to all operations for this application
=== 2011-03-05 06:17:58,397 [04-0] DEBUG AppBase - [builtinApplication.tasklistDS_fetch] No public zero-argument method named '_tasklistDS_fetch' found, performing generic datasource operation
=== 2011-03-05 06:17:58,399 [04-0] WARN RequestContext - dsRequest.execute() failed:
java.lang.Exception: Operation type 'fetch' not supported by this DataSource (tasklistDS)
at com.isomorphic.datasource.DataSource.notSupported(DataSource.java:1874)
at com.isomorphic.datasource.DataSource.executeFetch(DataSource.java:1814)
at com.isomorphic.datasource.DataSource.execute(DataSource.java:1048)
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:1443)
at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130)
at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95)
at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
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:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
=== 2011-03-05 06:17:58,402 [04-0] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
=== 2011-03-05 06:17:58,413 [04-0] DEBUG RPCManager - non-DMI response, dropExtraFields: false
=== 2011-03-05 06:17:58,422 [04-0] INFO Compression - /SmartaskWeb/sc/IDACall: 189 -> 164 bytes
=== 2011-03-05 06:17:58,502 [04-0] INFO RequestContext - URL: '/images/context_area.png', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
[WARN] No file found for: /images/context_area.png
======================================
From Development console (in eclipse)
22:17:58.718 [ERROR] [SmartaskWeb] 22:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS), response: {operationId: "tasklistDS_fetch",
clientContext: Obj,
context: Obj,
transactionNum: 0,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{queueStatus:-..."[189],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: -1,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
queueStatus: -1,
isDSResponse: true,
invalidateCache: false,
data: "Operation type 'fetch' not supported by ..."[68],
__gwt_ObjectId: 502,
startRow: 0,
endRow: 0,
totalRows: 0}
com.smartgwt.client.core.JsObject$SGWT_WARN: 22:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS), response: {operationId: "tasklistDS_fetch",
clientContext: Obj,
context: Obj,
transactionNum: 0,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{queueStatus:-..."[189],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: -1,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
queueStatus: -1,
isDSResponse: true,
invalidateCache: false,
data: "Operation type 'fetch' not supported by ..."[68],
__gwt_ObjectId: 502,
startRow: 0,
endRow: 0,
totalRows: 0}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:636)
=====================================
/war/ds/tasklistDS.ds.xml
======================================
<DataSource ID="tasklistDS">
<fields>
<field primaryKey="true" name="id" type="integer" hidden="true" required="true"/>
<field name="name" type="text" title="Name"/>
<field name="location" type="text" title="Location"/>
<field name="tags" type="text" title="Tags"/>
<field name="duedatetime" type="date" title="Due By"/>
<field name="remdatetime" type="date" title="Set Reminder" />
<field name="notes" type="text" title="Notes"/>
</fields>
</DataSource>
============================================
TasklistDS.java
============================================
public class TasklistDS extends DataSource {
private static TasklistDS instance = null;
public static TasklistDS getInstance() {
if (instance == null) {
instance = new TasklistDS("tasklistDS");
}
return instance;
}
public TasklistDS(String id) {
setID(id);
this.setPreventHTTPCaching(true);
if(SmartaskWeb.CLIENT)
{
setupClientOnlyMode();
}
else
{
setupServerMode();
}
GWT.log("END DATA SOURCE CREATION");
}
private void setupClientOnlyMode()
{
GWT.log("Doing Client Mode...");
setClientOnly(true);
setDataURL("shared/ds/exampletask.xml");
setRecordXPath("//tasklistDS");
setDataFields();
}
private void setupServerMode()
{
GWT.log("Doing Server Mode...");
setClientOnly(false);
setupBindOperations();
setDataFields();
this.addHandleErrorHandler(new HandleErrorHandler(){
@Override
public void onHandleError(ErrorEvent event) {
GWT.log("DataSource: "+event.getResponse());
}
});
RPCManager.setHandleTransportErrorCallback(new HandleTransportErrorCallback(){
@Override
public void handleTransportError(int transactionNum, int status,
int httpResponseCode, String httpResponseText) {
GWT.log("TRANSPORT: " + httpResponseText);
}
});
}
private void setDataFields()
{
DataSourceEnumField priorityField = new DataSourceEnumField("priority","Priority");
priorityField.setValueMap(new String[] {"high","medium","low"});
priorityField.setCanEdit(true);
DataSourceTextField nameField = new DataSourceTextField("name", "Name");
nameField.setRequired(true);
nameField.setCanEdit(true);
nameField.setPrimaryKey(true);
DataSourceTextField locationField = new DataSourceTextField("location", "Location");
locationField.setCanEdit(true);
DataSourceDateField dateField = new DataSourceDateField("duedatetime", "Due By");
dateField.setCanEdit(true);
DataSourceTextField tagsField = new DataSourceTextField("tags", "Tags");
tagsField.setCanEdit(true);
DataSourceDateField remField = new DataSourceDateField("remdatetime", "Reminder");
remField.setCanEdit(true);
DataSourceTextField noteField = new DataSourceTextField("notes", "Notes");
noteField.setCanEdit(true);
setFields( priorityField, nameField,
dateField, locationField, tagsField, remField, noteField );
}
private void setupBindOperations()
{
OperationBinding fetch = new OperationBinding();
fetch.setOperationType(DSOperationType.FETCH);
OperationBinding add = new OperationBinding();
add.setOperationType(DSOperationType.ADD);
OperationBinding update = new OperationBinding();
update.setOperationType(DSOperationType.UPDATE);
OperationBinding remove = new OperationBinding();
setOperationBindings(fetch, add, update, remove);
}
}
==========================================
2:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS)
So what do I need to do to support the 'fetch' operation. The examples don't seem to have to do anything for fetch so I'm not sure where to look for an example of implementing 'fetch'. Or do I need to?
from the Console:
=========================================
Initializing AppEngine server
Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Successfully processed /home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/appengine-web.xml
Successfully processed /home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/web.xml
[WARN] Could not instantiate listener com.smartgwt.sample.server.listener.HSQLServletContextListener
java.lang.ClassNotFoundException: com.smartgwt.sample.server.listener.HSQLServletContextListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.mortbay.jetty.handler.ContextHandler.loadClass(ContextHandler.java:1101)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368)
at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289)
at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186)
at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:149)
at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219)
at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:119)
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:494)
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1058)
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:800)
at com.google.gwt.dev.DevMode.main(DevMode.java:304)
ISC: Configuring log4j from: file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/classes/log4j.isc.config.xml
=== 2011-03-05 06:16:51,074 [main] INFO ISCInit - Isomorphic SmartClient Framework - Initializing
=== 2011-03-05 06:16:51,103 [main] INFO ConfigLoader - Attempting to load framework.properties from CLASSPATH
=== 2011-03-05 06:16:51,388 [main] INFO ConfigLoader - Successfully loaded framework.properties from CLASSPATH at location: jar:file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/lib/isomorphic_core_rpc.jar!/framework.properties
=== 2011-03-05 06:16:51,388 [main] INFO ConfigLoader - Attempting to load project.properties from CLASSPATH
=== 2011-03-05 06:16:51,389 [main] INFO ConfigLoader - Unable to locate project.properties in CLASSPATH
=== 2011-03-05 06:16:51,416 [main] INFO ConfigLoader - Successfully loaded isc_interfaces.properties from CLASSPATH at location: jar:file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/lib/isomorphic_core_rpc.jar!/isc_interfaces.properties
=== 2011-03-05 06:16:51,417 [main] INFO ConfigLoader - Attempting to load server.properties from CLASSPATH
=== 2011-03-05 06:16:51,427 [main] INFO ConfigLoader - Successfully loaded server.properties from CLASSPATH at location: file:/home/cocofan/workspace5/SmartaskWeb2/war/WEB-INF/classes/server.properties
=== 2011-03-05 06:16:51,461 [main] INFO Logger - Logging system started.
=== 2011-03-05 06:16:51,462 [main] INFO ISCInit - Isomorphic SmartClient Framework (SC_SNAPSHOT-2011-01-06/EVAL Deployment 2011-01-06) - Initialization Complete
=== 2011-03-05 06:16:51,465 [main] INFO ISCInit - Auto-detected webRoot - using: /home/cocofan/workspace5/SmartaskWeb2/war
=== 2011-03-05 06:16:51,788 [main] INFO PreCache - Isomorphic PreCache servlet loading
=== 2011-03-05 06:16:51,865 [main] INFO PoolManager - SmartClient pooling disabled for 'DataSource' objects
=== 2011-03-05 06:16:52,068 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DataSource.ds.xml: 12ms
=== 2011-03-05 06:16:52,082 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/builtinTypes.xml: 6ms
=== 2011-03-05 06:16:52,308 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DataSourceField.ds.xml: 6ms
=== 2011-03-05 06:16:52,418 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Validator.ds.xml: 26ms
=== 2011-03-05 06:16:52,489 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ValueMap.ds.xml: 14ms
=== 2011-03-05 06:16:52,508 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/InstantDataApp.ds.xml: 14ms
=== 2011-03-05 06:16:52,719 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Application.ds.xml: 2ms
=== 2011-03-05 06:16:52,755 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAPage.ds.xml: 2ms
=== 2011-03-05 06:16:52,788 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAUserType.ds.xml: 3ms
=== 2011-03-05 06:16:52,833 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/IDAOperation.ds.xml: 16ms
=== 2011-03-05 06:16:52,908 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Canvas.ds.xml: 45ms
=== 2011-03-05 06:16:53,449 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/MethodDeclaration.ds.xml: 3ms
=== 2011-03-05 06:16:53,488 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Img.ds.xml: 13ms
=== 2011-03-05 06:16:53,510 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/StatefulCanvas.ds.xml: 4ms
=== 2011-03-05 06:16:53,572 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/Button.ds.xml: 16ms
=== 2011-03-05 06:16:53,592 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ListViewer.ds.xml: 2ms
=== 2011-03-05 06:16:53,619 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/ListGrid.ds.xml: 24ms
=== 2011-03-05 06:16:53,756 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DynamicForm.ds.xml: 19ms
=== 2011-03-05 06:16:53,815 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/FormItem.ds.xml: 9ms
=== 2011-03-05 06:16:53,894 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DetailViewer.ds.xml: 3ms
=== 2011-03-05 06:16:53,918 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/DetailViewerField.ds.xml: 3ms
=== 2011-03-05 06:16:53,939 [main] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/isomorphicXML.ds.xml: 2ms
=== 2011-03-05 06:16:53,950 [main] INFO PreCache - Isomorphic PreCache complete (2162ms)
The server is running at http://localhost:8888/
=== 2011-03-05 06:17:54,634 [04-0] INFO RequestContext - URL: '/images/masthead.png', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
[WARN] No file found for: /images/masthead.png
=== 2011-03-05 06:17:57,898 [04-0] INFO RequestContext - URL: '/SmartaskWeb/sc/IDACall', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
=== 2011-03-05 06:17:58,100 [04-0] DEBUG XML - Parsed XML from (in memory stream): 27ms
=== 2011-03-05 06:17:58,123 [04-0] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/SmartaskWeb/sc/system/schema/List.ds.xml: 19ms
=== 2011-03-05 06:17:58,152 [04-0] DEBUG RPCManager - Processing 1 requests.
=== 2011-03-05 06:17:58,233 [04-0] DEBUG XML - Parsed XML from /home/cocofan/workspace5/SmartaskWeb2/war/ds/tasklistDS.ds.xml: 9ms
=== 2011-03-05 06:17:58,257 [04-0] DEBUG RPCManager - Request #1 (DSRequest) payload: {
criteria:{
__gwt_ObjectId:493
},
operationConfig:{
dataSource:"tasklistDS",
operationType:"fetch",
textMatchStyle:"substring"
},
startRow:0,
endRow:75,
componentId:"isc_ListGrid_4",
appID:"builtinApplication",
operation:"tasklistDS_fetch",
oldValues:{
__gwt_ObjectId:493
}
}
=== 2011-03-05 06:17:58,265 [04-0] INFO IDACall - Performing 1 operation(s)
=== 2011-03-05 06:17:58,396 [04-0] DEBUG AppBase - [builtinApplication.tasklistDS_fetch] No userTypes defined, allowing anyone access to all operations for this application
=== 2011-03-05 06:17:58,397 [04-0] DEBUG AppBase - [builtinApplication.tasklistDS_fetch] No public zero-argument method named '_tasklistDS_fetch' found, performing generic datasource operation
=== 2011-03-05 06:17:58,399 [04-0] WARN RequestContext - dsRequest.execute() failed:
java.lang.Exception: Operation type 'fetch' not supported by this DataSource (tasklistDS)
at com.isomorphic.datasource.DataSource.notSupported(DataSource.java:1874)
at com.isomorphic.datasource.DataSource.executeFetch(DataSource.java:1814)
at com.isomorphic.datasource.DataSource.execute(DataSource.java:1048)
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:1443)
at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:130)
at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:95)
at com.isomorphic.servlet.IDACall.doPost(IDACall.java:54)
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:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
=== 2011-03-05 06:17:58,402 [04-0] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
=== 2011-03-05 06:17:58,413 [04-0] DEBUG RPCManager - non-DMI response, dropExtraFields: false
=== 2011-03-05 06:17:58,422 [04-0] INFO Compression - /SmartaskWeb/sc/IDACall: 189 -> 164 bytes
=== 2011-03-05 06:17:58,502 [04-0] INFO RequestContext - URL: '/images/context_area.png', User-Agent: 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.10 Chromium/9.0.597.94 Chrome/9.0.597.94 Safari/534.13': Safari with Accept-Encoding header
[WARN] No file found for: /images/context_area.png
======================================
From Development console (in eclipse)
22:17:58.718 [ERROR] [SmartaskWeb] 22:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS), response: {operationId: "tasklistDS_fetch",
clientContext: Obj,
context: Obj,
transactionNum: 0,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{queueStatus:-..."[189],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: -1,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
queueStatus: -1,
isDSResponse: true,
invalidateCache: false,
data: "Operation type 'fetch' not supported by ..."[68],
__gwt_ObjectId: 502,
startRow: 0,
endRow: 0,
totalRows: 0}
com.smartgwt.client.core.JsObject$SGWT_WARN: 22:17:58.711:XRP1:WARN:RPCManager:Operation type 'fetch' not supported by this DataSource (tasklistDS), response: {operationId: "tasklistDS_fetch",
clientContext: Obj,
context: Obj,
transactionNum: 0,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{queueStatus:-..."[189],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: -1,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
queueStatus: -1,
isDSResponse: true,
invalidateCache: false,
data: "Operation type 'fetch' not supported by ..."[68],
__gwt_ObjectId: 502,
startRow: 0,
endRow: 0,
totalRows: 0}
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:636)
=====================================
/war/ds/tasklistDS.ds.xml
======================================
<DataSource ID="tasklistDS">
<fields>
<field primaryKey="true" name="id" type="integer" hidden="true" required="true"/>
<field name="name" type="text" title="Name"/>
<field name="location" type="text" title="Location"/>
<field name="tags" type="text" title="Tags"/>
<field name="duedatetime" type="date" title="Due By"/>
<field name="remdatetime" type="date" title="Set Reminder" />
<field name="notes" type="text" title="Notes"/>
</fields>
</DataSource>
============================================
TasklistDS.java
============================================
public class TasklistDS extends DataSource {
private static TasklistDS instance = null;
public static TasklistDS getInstance() {
if (instance == null) {
instance = new TasklistDS("tasklistDS");
}
return instance;
}
public TasklistDS(String id) {
setID(id);
this.setPreventHTTPCaching(true);
if(SmartaskWeb.CLIENT)
{
setupClientOnlyMode();
}
else
{
setupServerMode();
}
GWT.log("END DATA SOURCE CREATION");
}
private void setupClientOnlyMode()
{
GWT.log("Doing Client Mode...");
setClientOnly(true);
setDataURL("shared/ds/exampletask.xml");
setRecordXPath("//tasklistDS");
setDataFields();
}
private void setupServerMode()
{
GWT.log("Doing Server Mode...");
setClientOnly(false);
setupBindOperations();
setDataFields();
this.addHandleErrorHandler(new HandleErrorHandler(){
@Override
public void onHandleError(ErrorEvent event) {
GWT.log("DataSource: "+event.getResponse());
}
});
RPCManager.setHandleTransportErrorCallback(new HandleTransportErrorCallback(){
@Override
public void handleTransportError(int transactionNum, int status,
int httpResponseCode, String httpResponseText) {
GWT.log("TRANSPORT: " + httpResponseText);
}
});
}
private void setDataFields()
{
DataSourceEnumField priorityField = new DataSourceEnumField("priority","Priority");
priorityField.setValueMap(new String[] {"high","medium","low"});
priorityField.setCanEdit(true);
DataSourceTextField nameField = new DataSourceTextField("name", "Name");
nameField.setRequired(true);
nameField.setCanEdit(true);
nameField.setPrimaryKey(true);
DataSourceTextField locationField = new DataSourceTextField("location", "Location");
locationField.setCanEdit(true);
DataSourceDateField dateField = new DataSourceDateField("duedatetime", "Due By");
dateField.setCanEdit(true);
DataSourceTextField tagsField = new DataSourceTextField("tags", "Tags");
tagsField.setCanEdit(true);
DataSourceDateField remField = new DataSourceDateField("remdatetime", "Reminder");
remField.setCanEdit(true);
DataSourceTextField noteField = new DataSourceTextField("notes", "Notes");
noteField.setCanEdit(true);
setFields( priorityField, nameField,
dateField, locationField, tagsField, remField, noteField );
}
private void setupBindOperations()
{
OperationBinding fetch = new OperationBinding();
fetch.setOperationType(DSOperationType.FETCH);
OperationBinding add = new OperationBinding();
add.setOperationType(DSOperationType.ADD);
OperationBinding update = new OperationBinding();
update.setOperationType(DSOperationType.UPDATE);
OperationBinding remove = new OperationBinding();
setOperationBindings(fetch, add, update, remove);
}
}
==========================================
Comment