Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Found regression in nightly build 2010.10.11

    I found a regression in nightly build 2010.10.11. In the nightly build I got a NullPointerException with the following server side code:

    DMI:

    Code:
    public DSResponse add(DSRequest dsRequest) throws Exception {
    
    		DSResponse dsResponse = null;
    		SQLDataSource dsLogin = null;
    		DataSource dsLoginType = null;
    		DataSource dsLoginSkill = null;
    		DataSource dsSystem = null;
    
    		try {
    			dsLogin = (SQLDataSource) DataSourceManager
    					.get(Consts.DS_SERVER_LOGIN);
    
    			//NullPointer
    			dsResponse  = dsLogin.execute(dsRequest);
    //some code
    Datasource:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <DataSource ID="server_login" serverType="sql" tableName="sdm$vi_web_login">
    	<fields>
    		<field name="log_sym_id" type="integer" detail="true" />
    		<field name="log_login" title="Login" type="text" length="200" />
    		<field name="log_id" type="sequence" sequenceName="sdm$se_login"
    			detail="true" primaryKey="true" />
    		<field name="log_valid_from" title="Gültig von" type="date"
    			required="true" />
    		<field name="log_valid_to" title="Gültig bis" type="date"
    			required="true" />				
    		<field name="log_emp_id" type="integer" detail="true" />
    		<field name="log_sub_sym_id" title="CTI-Standort" type="integer"
    			detail="true" />
    		<field name="log_lop_id" title="IRRP-Profile" type="integer"
    			detail="true" />
    		<field name="log_low_id" title="IRRP-Workmode" type="integer"
    			detail="true" />
    		<field name="log_substation" title="Nebenstelle" type="text"
    			detail="true" />
    		<field name="log_request_by" title="Anfrage von" type="text"
    			detail="true" />
    		<field name="log_request_date" title="Anfrage am" type="date"></field>
    		<field name="log_creation_by" title="Erzeugt von" type="text"
    			required="false"></field>
    		<field name="log_creation_date" title="Erzeugt am" type="date"
    			required="false"></field>
    		<field name="log_deletion_by" title="Gelöscht von" type="text"
    			required="false"></field>
    		<field name="log_deletion_date" title="Gelöscht am" type="date"
    			required="false"></field>
    		<field name="log_description" title="Beschreibung" type="text"
    			required="false"></field>
    		<field name="log_is_used_from" title="" type="date" required="false"></field>
    		<field name="log_is_used_to" title="" type="date" required="false"></field>
    		<field name="log_lot_id" title="Logintyp" type="integer"
    			required="true"></field>
    	</fields>
    </DataSource>
    Exception/Log:
    Code:
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - adaptArgsAndInvoke:
    
     public com.isomorphic.datasource.DSResponse de.sdom.frontend.server.dmi.AMLoginCreateDMI.add(com.isomorphic.datasource.DSRequest) throws java.lang.Exception
    
    requiredArgs: [] optionalArgs: [com.isomorphic.servlet.RequestContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext, javax.servlet.http.HttpSession, com.isomorphic.rpc.RPCManager, com.isomorphic.datasource.DSRequest, com.isomorphic.datasource.DataSource, java.sql.Connection, com.isomorphic.log.Logger, java.util.Map]
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: com.isomorphic.servlet.RequestContext fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: javax.servlet.http.HttpServletRequest fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: javax.servlet.http.HttpServletResponse fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: javax.servlet.ServletContext fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: javax.servlet.http.HttpSession fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: com.isomorphic.rpc.RPCManager fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - checking whether type: com.isomorphic.datasource.DSRequest fulfills type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - Successfully adapted optional arg type: com.isomorphic.datasource.DSRequest to type: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - method takes: 1 args.  I've assembled: 1 args
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Reflection - invoking method:
    com.isomorphic.datasource.DSResponse de.tmobile.sdom.frontend.server.dmi.AMLoginCreateDMI.add(com.isomorphic.datasource.DSRequest) throws java.lang.Exception
    
    with arg types: com.isomorphic.datasource.DSRequest
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG XML - Parsed XML from C:\DEV\svn\SDOM\trunk\java\frontend\war\ds\server_login.ds.xml: 0ms
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG DataSource - Creating instance of DataSource 'DataSource'
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG BasicDataSource - Validating a 'DataSource' at path ''
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG DataSource - Creating instance of DataSource 'DataSource'
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/ID as DataSource.ID type: string
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/serverType as DataSource.serverType type: string
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/tableName as DataSource.tableName type: string
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG DataSource - Creating instance of DataSource 'DataSourceField'
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/fields as DataSource.fields type: DataSourceField
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG BasicDataSource - Validating 20 'DataSourceField's at path '/DataSource[@ID=server_login]/fields'
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG BasicDataSource - Validating a ...
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/fields/field[@name=log_lot_id]/required as DataSourceField.required type: boolean
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/fields/field[@name=log_lot_id]/title as DataSourceField.title type: string
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG Validation - Validating field:
    /DataSource[@ID=server_login]/fields/field[@name=log_lot_id]/type as DataSourceField.type type: string
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG BasicDataSource - Done validating 20 'DataSourceField's at path '/DataSource[@ID=server_login]/fields': 0ms (avg 0)
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG BasicDataSource - Done validating a 'DataSource' at path '': 0ms
    === 2010-10-13 14:18:25,794 [l0-0] DEBUG DataSource - Creating instance of DataSource 'server_login'
    === 2010-10-13 14:18:25,997 [l0-0] DEBUG PoolableSQLConnectionFactory - Returning pooled Connection
    === 2010-10-13 14:18:26,013 [l0-0] DEBUG DataSource - Creating instance of DataSource 'login_type'
    === 2010-10-13 14:18:26,247 [l0-0] DEBUG PoolableSQLConnectionFactory - Returning pooled Connection
    === 2010-10-13 14:18:26,263 [l0-0] DEBUG DataSource - Creating instance of DataSource 'login_type'
    === 2010-10-13 14:18:26,544 [l0-0] DEBUG PoolableSQLConnectionFactory - Returning pooled Connection
    === 2010-10-13 14:18:26,560 [l0-0] DEBUG AppBase - [builtinApplication.null] No userTypes defined, allowing anyone access to all operations for this application
    === 2010-10-13 14:18:26,560 [l0-0] DEBUG AppBase - [builtinApplication.null] No public zero-argument method named '_null' found, performing generic datasource operation
    === 2010-10-13 14:18:26,560 [l0-0] INFO  SQLDataSource - [builtinApplication.null] Performing fetch operation with
    	criteria: {lot_id:11}	values: {lot_id:11}
    === 2010-10-13 14:18:26,560 [l0-0] INFO  SQLDataSource - [builtinApplication.null] derived query: SELECT $defaultSelectClause FROM $defaultTableClause WHERE $defaultWhereClause
    === 2010-10-13 14:18:26,825 [l0-0] DEBUG PoolableSQLConnectionFactory - [builtinApplication.null] Returning pooled Connection
    === 2010-10-13 14:18:26,825 [l0-0] INFO  SQLDriver - [builtinApplication.null] Executing SQL query on 'Oracle': SELECT sdm$vi_web_login_type.lot_name, sdm$vi_web_login_type.lot_display_team, 
    ...
    sdm$vi_web_login_type.lot_description, sdm$vi_web_login_type.lot_info, sdm$vi_web_login_type.lot_needs_initial_skill FROM sdm$vi_web_login_type WHERE (sdm$vi_web_login_type.lot_id='11')
    === 2010-10-13 14:18:27,059 [l0-0] DEBUG PoolableSQLConnectionFactory - [builtinApplication.null] Returning pooled Connection
    === 2010-10-13 14:18:27,059 [l0-0] INFO  DSResponse - [builtinApplication.null] DSResponse: List with 1 items
    === 2010-10-13 14:18:29,714 [l0-0] INFO  SQLDataSource - Performing add operation with
    	criteria: {}	values: {log_creation_date:new Date(1286972291000),log_creation_by:"ccr_schema",log_valid_from:new Date(1286920800000),log_emp_id:51034,Info:"Anforderung von Mitarbeiter-NT-Accounts nur über Schnelladministration vornehmen.\r\nGenaue Schreibweise, wie bei der Einrichtung durch TSI mitgeteilt, angeben! (Klein und Großschreibung)",log_lot_id:11,log_login:"de\\treptau234",log_sym_id:20,log_valid_to:new Date(2524604400075)}
    === 2010-10-13 14:18:29,714 [l0-0] INFO  SQLValuesClause - Ignored data for non-existent columns: [Info]
    === 2010-10-13 14:18:29,714 [l0-0] DEBUG SQLValuesClause - Sequences: {log_id=sdm$se_login}
    === 2010-10-13 14:18:29,745 [l0-0] INFO  SQLDriver - Executing SQL update on 'Oracle': INSERT INTO sdm$vi_web_login (log_login, log_creation_date, log_creation_by, log_valid_from, log_sym_id, log_lot_id, log_valid_to, log_emp_id, log_id) VALUES ('de\treptau234', TO_DATE('2010-10-13 14:18:11','YYYY-MM-DD HH24:MI:SS'), 'ccr_schema', TO_DATE('2010-10-13 00:00:00','YYYY-MM-DD HH24:MI:SS'), 20, 11, TO_DATE('2050-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'), 51034, sdm$se_login.NextVal)
    === 2010-10-13 14:18:30,182 [l0-0] DEBUG SQLDataSource - add operation affected 1 rows
    === 2010-10-13 14:18:30,198 [l0-0] INFO  SQLDriver - Executing SQL query on 'Oracle': SELECT sdm$se_login.CurrVal FROM DUAL
    === 2010-10-13 14:18:30,416 [l0-0] DEBUG PoolableSQLConnectionFactory - Returning pooled Connection
    === 2010-10-13 14:18:30,432 [l0-0] INFO  SQLDataSource - primaryKeys: {log_id=409510}
    === 2010-10-13 14:18:32,524 [l0-0] DEBUG DataSourceDMI - Invocation threw exception
    java.lang.NullPointerException
    	at com.isomorphic.datasource.IncludeFromDefinition.forField(IncludeFromDefinition.java:64)
    	at com.isomorphic.sql.SQLWhereClause.buildExpression(SQLWhereClause.java:486)
    	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:337)
    	at com.isomorphic.sql.SQLWhereClause.buildCompoundExpression(SQLWhereClause.java:398)
    	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:343)
    	at com.isomorphic.sql.SQLWhereClause.toString(SQLWhereClause.java:301)
    	at com.isomorphic.sql.SQLWhereClause.getSQLString(SQLWhereClause.java:307)
    	at com.isomorphic.sql.SQLDataSource.getLastRow(SQLDataSource.java:461)
    	at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1370)
    	at com.isomorphic.sql.SQLDataSource.execute(SQLDataSource.java:257)
    	at de.tmobile.sdom.frontend.server.dmi.AMLoginCreateDMI.add(AMLoginCreateDMI.java:91)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:883)
    	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:575)
    	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
    	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1398)
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
    	at de.tmobile.sdom.frontend.server.servlet.AuthentificationIDACall.handleDSRequest(AuthentificationIDACall.java:91)
    	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:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at de.tmobile.sdom.frontend.server.filter.ConnectionFilter.doFilter(ConnectionFilter.java:31)
    	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)
    === 2010-10-13 14:18:32,524 [l0-0] WARN  RequestContext - dsRequest.execute() failed: 
    java.lang.NullPointerException
    	at com.isomorphic.datasource.IncludeFromDefinition.forField(IncludeFromDefinition.java:64)
    	at com.isomorphic.sql.SQLWhereClause.buildExpression(SQLWhereClause.java:486)
    	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:337)
    	at com.isomorphic.sql.SQLWhereClause.buildCompoundExpression(SQLWhereClause.java:398)
    	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:343)
    	at com.isomorphic.sql.SQLWhereClause.toString(SQLWhereClause.java:301)
    	at com.isomorphic.sql.SQLWhereClause.getSQLString(SQLWhereClause.java:307)
    	at com.isomorphic.sql.SQLDataSource.getLastRow(SQLDataSource.java:461)
    	at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1370)
    	at com.isomorphic.sql.SQLDataSource.execute(SQLDataSource.java:257)
    	at de.tmobile.sdom.frontend.server.dmi.AMLoginCreateDMI.add(AMLoginCreateDMI.java:91)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:883)
    	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:575)
    	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
    	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1398)
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
    	at de.tmobile.sdom.frontend.server.servlet.AuthentificationIDACall.handleDSRequest(AuthentificationIDACall.java:91)
    	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:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at de.tmobile.sdom.frontend.server.filter.ConnectionFilter.doFilter(ConnectionFilter.java:31)
    	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)
    === 2010-10-13 14:18:32,524 [l0-0] DEBUG RequestContext - Setting headers to disable caching
    With the nighlty build 2010.08.22 the code is working.

    Regards
    Chris

    #2
    Hi Chris,

    look at my post and the response of Isomorphic.

    http://forums.smartclient.com/showthread.php?t=13656

    Cheers,
    Timo

    Comment


      #3
      Hi Timo,

      thank's for your pretty fast response.

      Chris

      Comment


        #4
        same time zone, same country (Gültig von :-)) == fast response
        Gruß Timo

        Comment


          #5
          Version: Power - Build 2010.10.22

          The issue is not completely fixed yet. I still got a NullPointerException, but with a different stacktrace.

          Code:
          DataSourceDMI - Invocation threw exception
          java.lang.NullPointerException
          	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:321)
          	at com.isomorphic.sql.SQLWhereClause.toString(SQLWhereClause.java:301)
          	at com.isomorphic.sql.SQLWhereClause.getSQLString(SQLWhereClause.java:307)
          	at com.isomorphic.sql.SQLDataSource.getLastRow(SQLDataSource.java:461)
          	at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1370)
          	at com.isomorphic.sql.SQLDataSource.execute(SQLDataSource.java:257)
          	at de.sdom.frontend.server.dmi.AMLoginCreateDMI.add(AMLoginCreateDMI.java:91)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          	at java.lang.reflect.Method.invoke(Method.java:597)
          	at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:883)
          	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:575)
          	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1413)
          	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
          	at de.sdom.frontend.server.servlet.AuthentificationIDACall.handleDSRequest(AuthentificationIDACall.java:91)
          	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:487)
          	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
          	at de.tmobile.sdom.frontend.server.filter.ConnectionFilter.doFilter(ConnectionFilter.java:31)
          	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)
          === 2010-10-25 15:25:31,963 [l0-4] WARN  RequestContext - dsRequest.execute() failed: 
          java.lang.NullPointerException
          	at com.isomorphic.sql.SQLWhereClause.getOutput(SQLWhereClause.java:321)
          	at com.isomorphic.sql.SQLWhereClause.toString(SQLWhereClause.java:301)
          	at com.isomorphic.sql.SQLWhereClause.getSQLString(SQLWhereClause.java:307)
          	at com.isomorphic.sql.SQLDataSource.getLastRow(SQLDataSource.java:461)
          	at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1370)
          	at com.isomorphic.sql.SQLDataSource.execute(SQLDataSource.java:257)
          	at de.sdom.frontend.server.dmi.AMLoginCreateDMI.add(AMLoginCreateDMI.java:91)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          	at java.lang.reflect.Method.invoke(Method.java:597)
          	at com.isomorphic.base.Reflection.adaptArgsAndInvoke(Reflection.java:883)
          	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:575)
          	at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
          	at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:1413)
          	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:173)
          	at de.sdom.frontend.server.servlet.AuthentificationIDACall.handleDSRequest(AuthentificationIDACall.java:91)
          	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:487)
          	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
          	at de.tmobile.sdom.frontend.server.filter.ConnectionFilter.doFilter(ConnectionFilter.java:31)
          	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


            #6
            It seems that between versions of SMARTClient 7 and 8 there was a change from using @@IDENTITY to the usage of SCOPE_IDENTITY().
            The change is causing the simple .saveData to fail with the following error: dsRequest.execute() failed: java.lang.NullPointerException
            I tested this on 2 recent nightly build and the 7RC release. Works fine in 7 becasue of the use of @@IDENTITY and fails in the nightly builds becasue of the use of SCOPE_IDENTITY().

            I am using Microsoft SQL Server JDBC Driver 2.0. I have tested against IE 8.0.7600 and Chrome 7.0.517.44 against SQL Sever 2008 10.0.2531 and JDK 1.6.0_22 and I get the same results.
            Please let me know if there is more information you need!


            SELECT SCOPE_IDENTITY() against SQL Server2008
            SmartClient_SC_SNAPSHOT-2010-11-16 - Fails
            SmartClient_SC_SNAPSHOT-2010-11-13 - Fails
            *** dsRequest.execute() failed: java.lang.NullPointerException *******
            -------------------- Both Nightlies Have the same Error --------------------

            --------------------------------------------------------------------------
            Server Output Follows
            --------------------------------------------------------------------------
            lates
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : allowInlineToOverride = false : VMs defined inline may
            NOT replace previous VM definitions
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : allowInlineToOverride = false : VMs defined inline may
            NOT replace previous VM definitions
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : allowInlineLocal = false : VMs defined inline will be
            global in scope if allowed.
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : allowInlineLocal = false : VMs defined inline will be
            global in scope if allowed.
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : autoload off : VM system will not automatically reload
            global library macros
            === 2010-11-17 11:01:03,024 [sor4] DEBUG Velocity - Velocimacro : autoload off : VM system will not automatically reload
            global library macros
            === 2010-11-17 11:01:03,025 [sor4] DEBUG Velocity - Velocimacro : Velocimacro : initialization complete.
            === 2010-11-17 11:01:03,025 [sor4] DEBUG Velocity - Velocimacro : Velocimacro : initialization complete.
            === 2010-11-17 11:01:03,025 [sor4] DEBUG Velocity - RuntimeInstance successfully initialized.
            === 2010-11-17 11:01:03,025 [sor4] DEBUG Velocity - RuntimeInstance successfully initialized.
            === 2010-11-17 11:01:03,048 [sor4] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Executing row cou
            nt query: SELECT COUNT(*) FROM $defaultTableClause WHERE $defaultWhereClause
            === 2010-11-17 11:01:03,049 [sor4] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Eval'd row count
            query: SELECT COUNT(*) FROM dbo.LUT_USER WHERE ('1'='1')
            === 2010-11-17 11:01:03,131 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] In
            itializing SQL config for 'SQLServer - REVDB01.LANE_TEST' from system config - using DriverManager: com.microsoft.sqlse
            rver.jdbc.SQLServerDriver
            === 2010-11-17 11:01:03,132 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] co
            m.microsoft.sqlserver.jdbc.SQLServerDriver lookup successful
            === 2010-11-17 11:01:03,132 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Dr
            iverManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseNam
            e=LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 11:01:03,132 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Pa
            ssing JDBC URL only to getConnection
            === 2010-11-17 11:01:04,333 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Re
            turning pooled Connection
            === 2010-11-17 11:01:04,344 [sor4] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_fetch] Executing SQL query o
            n 'SQLServer - REVDB01.LANE_TEST': SELECT COUNT(*) FROM dbo.LUT_USER WHERE ('1'='1')
            === 2010-11-17 11:01:04,449 [sor4] DEBUG SQLServerDriver - [builtinApplication.LANE_TEST_LUT_USER_fetch] SQL Server vers
            ion is '10.00.2531'
            === 2010-11-17 11:01:04,450 [sor4] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Using SQL Limit q
            uery
            === 2010-11-17 11:01:04,451 [sor4] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Using PK as defau
            lt sorter: USER_ID
            === 2010-11-17 11:01:04,452 [sor4] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] SQL windowed sele
            ct rows 0->75, result size 75. Query: SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY x.USER_ID) AS rowID FROM (SEL
            ECT TOP 100 PERCENT LUT_USER.USER_FIRST_NAME, LUT_USER.USER_ID, LUT_USER.GENDER_ID, LUT_USER.USER_LAST_NAME FROM dbo.LU
            T_USER WHERE ('1'='1')) x) y WHERE y.rowID BETWEEN 1 AND 76
            === 2010-11-17 11:01:04,452 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Dr
            iverManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseNam
            e=LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 11:01:04,452 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Pa
            ssing JDBC URL only to getConnection
            === 2010-11-17 11:01:04,473 [sor4] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Re
            turning pooled Connection
            === 2010-11-17 11:01:04,479 [sor4] INFO DSResponse - [builtinApplication.LANE_TEST_LUT_USER_fetch] DSResponse: List wit
            h 8 items
            === 2010-11-17 11:01:04,481 [sor4] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2010-11-17 11:01:04,483 [sor4] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2010-11-17 11:01:04,488 [sor4] INFO Compression - /isomorphic/IDACall: 779 -> 308 bytes
            === 2010-11-17 11:01:19,664 [sor3] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/4.0 (compatib
            le; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Med
            ia Center PC 6.0; .NET4.0C; .NET4.0E)': MSIE with Accept-Encoding header, ready for compressed JS
            === 2010-11-17 11:01:19,705 [sor3] DEBUG XML - Parsed XML from (in memory stream): 9ms
            === 2010-11-17 11:01:19,709 [sor3] DEBUG RPCManager - Processing 1 requests.
            === 2010-11-17 11:01:19,714 [sor3] DEBUG RPCManager - Request #1 (DSRequest) payload: {
            values:{
            GENDER_ID:3,
            USER_FIRST_NAME:"This",
            USER_LAST_NAME:"Fails"
            },
            operationConfig:{
            dataSource:"LANE_TEST_LUT_USER",
            operationType:"add"
            },
            componentId:"boundForm",
            appID:"builtinApplication",
            operation:"LANE_TEST_LUT_USER_add",
            oldValues:{
            },
            criteria:{
            }
            }
            === 2010-11-17 11:01:19,715 [sor3] INFO IDACall - Performing 1 operation(s)
            === 2010-11-17 11:01:19,716 [sor3] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_add] No userTypes defined, all
            owing anyone access to all operations for this application
            === 2010-11-17 11:01:19,717 [sor3] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_add] No public zero-argument m
            ethod named '_LANE_TEST_LUT_USER_add' found, performing generic datasource operation
            === 2010-11-17 11:01:19,717 [sor3] INFO SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_add] Performing add oper
            ation with
            criteria: {} values: {GENDER_ID:3,USER_FIRST_NAME:"This",USER_LAST_NAME:"Fails"}
            === 2010-11-17 11:01:19,739 [sor3] DEBUG SQLValuesClause - [builtinApplication.LANE_TEST_LUT_USER_add] Sequences: {}
            === 2010-11-17 11:01:19,778 [sor3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_add] Driv
            erManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseName=
            LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 11:01:19,779 [sor3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_add] Pass
            ing JDBC URL only to getConnection
            === 2010-11-17 11:01:19,809 [sor3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_add] Retu
            rning pooled Connection
            === 2010-11-17 11:01:19,811 [sor3] DEBUG SQLTransaction - [builtinApplication.LANE_TEST_LUT_USER_add] Started new transa
            ction "1915162564"
            === 2010-11-17 11:01:19,811 [sor3] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_add] Executing SQL update on
            'SQLServer - REVDB01.LANE_TEST': INSERT INTO dbo.LUT_USER (USER_FIRST_NAME, GENDER_ID, USER_LAST_NAME) VALUES ('This',
            3, 'Fails')
            === 2010-11-17 11:01:19,844 [sor3] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_add] add operation affec
            ted 1 rows

            **********************************************************
            === 2010-11-17 11:01:19,845 [sor3] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_add] Executing SQL query on
            'SQLServer - REVDB01.LANE_TEST': SELECT SCOPE_IDENTITY()
            **********************************************************

            === 2010-11-17 11:01:19,848 [sor3] WARN RequestContext - dsRequest.execute() failed:
            java.lang.NullPointerException
            at com.isomorphic.sql.SQLServerDriver.fetchLastPrimaryKeys(SQLServerDriver.java:190)
            at com.isomorphic.sql.SQLDataSource.getLastPrimaryKeys(SQLDataSource.java:531)
            at com.isomorphic.sql.SQLDataSource.getLastRow(SQLDataSource.java:408)
            at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1375)
            at com.isomorphic.sql.SQLDataSource.execute(SQLDataSource.java:257)
            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:1418)
            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:710)
            at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            at com.isomorphic.js.JSSyntaxScannerFilter.doFilter(JSSyntaxScannerFilter.java:241)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:259)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
            at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java
            :665)
            at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
            at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
            at java.lang.Thread.run(Thread.java:662)
            === 2010-11-17 11:01:19,849 [sor3] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2010-11-17 11:01:19,850 [sor3] DEBUG SQLTransaction - Rolling back transaction "1915162564"
            === 2010-11-17 11:01:19,852 [sor3] DEBUG SQLTransaction - Ending transaction "1915162564"
            === 2010-11-17 11:01:19,855 [sor3] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2010-11-17 11:01:19,857 [sor3] INFO Compression - /isomorphic/IDACall: 108 -> 107 bytes

            **********************************************************
            **********************************************************

            SELECT @@IDENTITY against SQLServer 2008
            SmartClient_70rc2_Evaluation - Works
            --------------------------------------------------------------------------
            Server Output Follows
            --------------------------------------------------------------------------
            \smartclientSDK\shared\ds\LANE_TEST_LUT_USER.ds.xml: 9ms
            === 2010-11-17 10:55:48,708 [sor4] DEBUG XML - Parsed XML from C:\Users\lane.hussey\Desktop\SmartClient_70rc2_Evaluation
            \smartclientSDK\examples\shared\ds\employees.ds.xml: 3ms
            === 2010-11-17 10:55:48,724 [sor4] DEBUG XML - Parsed XML from C:\Users\lane.hussey\Desktop\SmartClient_70rc2_Evaluation
            \smartclientSDK\examples\shared\ds\animals.ds.xml: 1ms
            === 2010-11-17 10:55:48,736 [sor4] INFO JSSyntaxScannerFilter - /tools/visualBuilder/workspace/component_databinding.js
            p: scanning <script> tags in html output
            === 2010-11-17 10:55:48,745 [sor4] INFO Compression - /tools/visualBuilder/workspace/component_databinding.jsp: 9985 ->
            2638 bytes
            === 2010-11-17 10:55:48,891 [sor3] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_Foundation.js
            === 2010-11-17 10:55:48,896 [sor4] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_Core.js
            === 2010-11-17 10:55:48,898 [sor3] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\load_skin.js
            === 2010-11-17 10:55:48,915 [sor2] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_Grids.js
            === 2010-11-17 10:55:48,918 [sor3] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_Containers.js
            === 2010-11-17 10:55:49,094 [sor1] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_DataBinding.js
            === 2010-11-17 10:55:49,170 [sor3] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\system\modules\ISC_Forms.js
            === 2010-11-17 10:55:49,284 [sor4] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\skin_styles.css
            === 2010-11-17 10:55:49,326 [sor2] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\images\controls\dropdown_control_in
            side.gif
            === 2010-11-17 10:55:49,349 [sor1] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\images\blank.gif
            === 2010-11-17 10:55:49,444 [sor4] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\images\ListGrid\header_stretch.gif
            === 2010-11-17 10:55:49,444 [sor3] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\images\ListGrid\header_start.gif
            === 2010-11-17 10:55:49,448 [sor2] INFO Download - Returning 304: Not modified on conditional get of: C:\Users\lane.hus
            sey\Desktop\SmartClient_70rc2_Evaluation\smartclientSDK\isomorphic\skins\SmartClient\images\ListGrid\header_end.gif
            === 2010-11-17 10:55:49,837 [sor1] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/4.0 (compatib
            le; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Med
            ia Center PC 6.0; .NET4.0C; .NET4.0E)': MSIE with Accept-Encoding header, ready for compressed JS
            === 2010-11-17 10:55:49,873 [sor1] DEBUG XML - Parsed XML from (in memory stream): 1ms
            === 2010-11-17 10:55:49,881 [sor1] DEBUG XML - Parsed XML from C:\Users\lane.hussey\Desktop\SmartClient_70rc2_Evaluation
            \smartclientSDK\isomorphic\system\schema\List.ds.xml: 1ms
            === 2010-11-17 10:55:49,887 [sor1] DEBUG RPCManager - Processing 1 requests.
            === 2010-11-17 10:55:49,903 [sor1] DEBUG RPCManager - Request #1 (DSRequest) payload: {
            criteria:{},
            operationConfig:{dataSource:"LANE_TEST_LUT_USER", operationType:"fetch", textMatchStyle:"substring"},
            startRow:0,
            endRow:75,
            componentId:"boundList",
            appID:"builtinApplication",
            operation:"LANE_TEST_LUT_USER_fetch",
            oldValues:{}
            }
            === 2010-11-17 10:55:49,908 [sor1] INFO IDACall - Performing 1 operation(s)
            === 2010-11-17 10:55:49,920 [sor1] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_fetch] No userTypes defined, a
            llowing anyone access to all operations for this application
            === 2010-11-17 10:55:49,921 [sor1] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_fetch] No public zero-argument
            method named '_LANE_TEST_LUT_USER_fetch' found, performing generic datasource operation
            === 2010-11-17 10:55:49,923 [sor1] INFO SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Performing fetch
            operation with
            criteria: {} values: {}
            === 2010-11-17 10:55:49,937 [sor1] INFO SQLWhereClause - [builtinApplication.LANE_TEST_LUT_USER_fetch] empty condition
            === 2010-11-17 10:55:50,230 [sor1] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Executing row cou
            nt query: SELECT COUNT(*) FROM $defaultTableClause WHERE $defaultWhereClause
            === 2010-11-17 10:55:50,276 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] In
            itializing SQL config for 'SQLServer - REVDB01.LANE_TEST' from system config - using DriverManager: com.microsoft.sqlse
            rver.jdbc.SQLServerDriver
            === 2010-11-17 10:55:50,276 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] co
            m.microsoft.sqlserver.jdbc.SQLServerDriver lookup successful
            === 2010-11-17 10:55:50,277 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Dr
            iverManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseNam
            e=LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 10:55:51,171 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Re
            turning pooled Connection
            === 2010-11-17 10:55:51,181 [sor1] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_fetch] Executing SQL query o
            n 'SQLServer - REVDB01.LANE_TEST': SELECT COUNT(*) FROM LUT_USER WHERE ('1'='1')
            === 2010-11-17 10:55:51,287 [sor1] DEBUG SQLServerDriver - [builtinApplication.LANE_TEST_LUT_USER_fetch] SQL Server vers
            ion is 10.00.2531
            === 2010-11-17 10:55:51,287 [sor1] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] Using PK as defau
            lt sorter: USER_ID
            === 2010-11-17 10:55:51,288 [sor1] DEBUG SQLServerDriver - [builtinApplication.LANE_TEST_LUT_USER_fetch] BLAHBLAH -- SEL
            ECT USER_FIRST_NAME, USER_ID, GENDER_ID, USER_LAST_NAME FROM (SELECT USER_FIRST_NAME, USER_ID, GENDER_ID, USER_LAST_NAME
            , ROW_NUMBER() OVER (ORDER BY x.USER_ID) AS rowID FROM (SELECT TOP 100 PERCENT LUT_USER.USER_FIRST_NAME, LUT_USER.USER_
            ID, LUT_USER.GENDER_ID, LUT_USER.USER_LAST_NAME FROM LUT_USER WHERE ('1'='1')) x) y WHERE y.rowID BETWEEN 1 AND 76
            === 2010-11-17 10:55:51,288 [sor1] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_fetch] SQL windowed sele
            ct rows 0->75, result size 75. Query: SELECT USER_FIRST_NAME, USER_ID, GENDER_ID, USER_LAST_NAME FROM (SELECT USER_FIRST
            _NAME, USER_ID, GENDER_ID, USER_LAST_NAME, ROW_NUMBER() OVER (ORDER BY x.USER_ID) AS rowID FROM (SELECT TOP 100 PERCENT
            LUT_USER.USER_FIRST_NAME, LUT_USER.USER_ID, LUT_USER.GENDER_ID, LUT_USER.USER_LAST_NAME FROM LUT_USER WHERE ('1'='1'))
            x) y WHERE y.rowID BETWEEN 1 AND 76
            === 2010-11-17 10:55:51,289 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Dr
            iverManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseNam
            e=LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 10:55:51,310 [sor1] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_fetch] Re
            turning pooled Connection
            === 2010-11-17 10:55:51,316 [sor1] INFO DSResponse - [builtinApplication.LANE_TEST_LUT_USER_fetch] DSResponse: List wit
            h 7 items
            === 2010-11-17 10:55:51,318 [sor1] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2010-11-17 10:55:51,319 [sor1] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2010-11-17 10:55:51,324 [sor1] INFO Compression - /isomorphic/IDACall: 839 -> 294 bytes
            === 2010-11-17 10:56:06,153 [sor3] INFO RequestContext - URL: '/isomorphic/IDACall', User-Agent: 'Mozilla/4.0 (compatib
            le; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Med
            ia Center PC 6.0; .NET4.0C; .NET4.0E)': MSIE with Accept-Encoding header, ready for compressed JS
            === 2010-11-17 10:56:06,206 [sor3] DEBUG XML - Parsed XML from (in memory stream): 6ms
            === 2010-11-17 10:56:06,222 [sor3] DEBUG RPCManager - Processing 1 requests.
            === 2010-11-17 10:56:06,223 [sor3] DEBUG RPCManager - Request #1 (DSRequest) payload: {
            values:{
            GENDER_ID:2,
            USER_FIRST_NAME:"This",
            USER_LAST_NAME:"Works"
            },
            operationConfig:{dataSource:"LANE_TEST_LUT_USER", operationType:"add"},
            componentId:"boundForm",
            appID:"builtinApplication",
            operation:"LANE_TEST_LUT_USER_add",
            oldValues:{},
            criteria:{}
            }
            === 2010-11-17 10:56:06,224 [sor3] INFO IDACall - Performing 1 operation(s)
            === 2010-11-17 10:56:06,226 [sor3] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_add] No userTypes defined, all
            owing anyone access to all operations for this application
            === 2010-11-17 10:56:06,228 [sor3] DEBUG AppBase - [builtinApplication.LANE_TEST_LUT_USER_add] No public zero-argument m
            ethod named '_LANE_TEST_LUT_USER_add' found, performing generic datasource operation
            === 2010-11-17 10:56:06,229 [sor3] INFO SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_add] Performing add oper
            ation with
            criteria: {} values: {USER_FIRST_NAME:"This",GENDER_ID:2,USER_LAST_NAME:"Works"}
            === 2010-11-17 10:56:06,237 [sor3] DEBUG SQLValuesClause - [builtinApplication.LANE_TEST_LUT_USER_add] Sequences: {USER_
            ID=__default}
            === 2010-11-17 10:56:06,257 [sor3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_add] Driv
            erManager fetching connection for SQLServer - REVDB01.LANE_TEST via jdbc url jdbc:sqlserver://REVDB01:1433;DatabaseName=
            LANE_TEST;User=sa;Password=saPswd
            === 2010-11-17 10:56:06,283 [sor3] DEBUG PoolableSQLConnectionFactory - [builtinApplication.LANE_TEST_LUT_USER_add] Retu
            rning pooled Connection
            === 2010-11-17 10:56:06,283 [sor3] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_add] Executing SQL update on
            'SQLServer - REVDB01.LANE_TEST': INSERT INTO LUT_USER (USER_FIRST_NAME, GENDER_ID, USER_LAST_NAME) VALUES ('This', 2, '
            Works')
            === 2010-11-17 10:56:06,317 [sor3] DEBUG SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_add] add operation affec
            ted 1 rows

            *********************************************************
            === 2010-11-17 10:56:06,318 [sor3] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_add] Executing SQL query on
            'SQLServer - REVDB01.LANE_TEST': SELECT @@IDENTITY
            *********************************************************

            === 2010-11-17 10:56:06,320 [sor3] INFO SQLDataSource - [builtinApplication.LANE_TEST_LUT_USER_add] primaryKeys: {USER_
            ID=40}
            === 2010-11-17 10:56:06,321 [sor3] INFO SQLDriver - [builtinApplication.LANE_TEST_LUT_USER_add] Executing SQL query on
            'SQLServer - REVDB01.LANE_TEST': SELECT LUT_USER.USER_FIRST_NAME, LUT_USER.USER_ID, LUT_USER.GENDER_ID, LUT_USER.USER_LA
            ST_NAME FROM LUT_USER WHERE (LUT_USER.USER_ID=40)
            === 2010-11-17 10:56:06,323 [sor3] INFO DSResponse - [builtinApplication.LANE_TEST_LUT_USER_add] DSResponse: List with
            1 items
            === 2010-11-17 10:56:06,324 [sor3] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
            === 2010-11-17 10:56:06,326 [sor3] DEBUG RPCManager - non-DMI response, dropExtraFields: false
            === 2010-11-17 10:56:06,328 [sor3] INFO Compression - /isomorphic/IDACall: 247 -> 174 bytes

            *********************************************************
            Sample Code
            *********************************************************
            <!--------------------------------------------------------------------
            SmartClient SDK
            Component Data Binding example

            Copyright 2001 and beyond Isomorphic Software, Inc. (www.isomorphic.com)
            ---------------------------------------------------------------------->

            <%@ taglib uri="/WEB-INF/iscTaglib.xml" prefix="isomorphic" %>
            <HEAD><TITLE>
            Data Binding example
            </TITLE></HEAD><isomorphic:loadISC skin="SmartClient"/>
            <BODY BGCOLOR=#D3D3D3><SCRIPT>


            // load datasources
            <isomorphic:loadDS ID="LANE_TEST_LUT_USER" />
            <isomorphic:loadDS ID="employees" />
            <isomorphic:loadDS ID="animals" />

            // bind components to the selected datasource, and execute
            // a fetch operation with no criteria to populate the boundList
            function bindComponents(ds) {
            boundList.setDataSource(ds);
            boundViewer.setDataSource(ds);
            boundForm.setDataSource(ds);
            boundList.fetchData();
            newBtn.enable(); // can't create a new record until a datasource is selected
            saveBtn.disable(); // no record selected for editing, so disable save button
            }

            // use the text-based date item so we can clear it for filtering purposes
            isc.DateItem.addProperties({
            useTextField:true,
            allowNullValue:true
            });


            // create ListGrid, DetailViewer, & DynamicForm components to bind to datasources
            // (nested inside a VStack to manage layout)
            VStack.create({
            left:40, top:20,
            width:"70%",
            membersMargin:20,
            members:[

            Label.create({
            ID:"helpText",
            contents:"<ul>" +
            "<li>select a datasource from the list at left to bind to these components</li>" +
            "<li>click a record in the grid to view and edit that record in the form</li>" +
            "<li>click <b>New</b> to start editing a new record in the form</li>" +
            "<li>click <b>Save</b> to save changes to a new or edited record in the form</li>" +
            "<li>click <b>Clear</b> to clear all fields in the form</li>" +
            "<li>click <b>Filter</b> to filter (substring match) the grid based on form values</li>" +
            "<li>click <b>Fetch</b> to fetch records (exact match) for the grid based on form values</li>" +
            "<li>double-click a record in the grid to edit inline (press Return, or arrow/tab to another record, to save)</li>" +
            "</ul>"
            }),

            FilterBuilder.create({
            ID:"advancedFilter",
            dataSource:"LANE_TEST_LUT_USER"
            }),

            IButton.create({
            ID:"filterButton",
            title:"Filter",
            click : function () {
            boundList.filterData(advancedFilter.getCriteria());
            }
            }),

            // databound ListGrid
            // * click records to edit in boundForm and view in boundViewer
            // * double-click record to edit inline (Return or arrow/tab off current row to save)
            ListGrid.create({
            ID:"boundList",
            dataSource:"LANE_TEST_LUT_USER",
            autoFetchData: true,
            height:200,
            canEdit:false,
            fields:[ {name:"USER_ID"},{name:"GENDER_ID"},{name:"USER_FIRST_NAME"},{name:"USER_LAST_NAME"}],
            recordClick:"newBtn.enable(); boundForm.setDataSource(LANE_TEST_LUT_USER); boundForm.editRecord(record); saveBtn.enable(); boundViewer.setDataSource(LANE_TEST_LUT_USER); boundViewer.viewSelectedData(boundList)"
            }),

            // databound SearchForm
            // * click boundList records to edit
            SearchForm.create({
            ID:"boundForm",
            numCols:"6",
            autoFocus:false,
            fields:[ {name:"USER_ID", disabled:true},{name:"GENDER_ID"},{name:"USER_FIRST_NAME"},{name:"USER_LAST_NAME"}]
            }),

            // toolbar to perform various actions using the boundForm values (see helpText above)
            Toolbar.create({
            autoDraw:false,
            membersMargin:10,
            buttonConstructor: "IButton",
            height: 22,
            buttons:[
            // click can be defined as a function or a string of script to execute.
            {title:"Save", click: function () {
            boundForm.saveData(
            function (dsResponse, data, dsRequest) {
            if (dsResponse.status == 0) {
            boundForm.clearValues();
            saveBtn.disable();
            }
            }
            );
            },
            ID:"saveBtn", disabled:true},
            {title:"New", click:"boundForm.setDataSource(LANE_TEST_LUT_USER); boundForm.editNewRecord(); saveBtn.enable()", ID:"newBtn"},
            {title:"Clear", click:"boundForm.clearValues(); saveBtn.disable()"},
            {title:"Fetch", click:"boundList.fetchData(boundForm.getValuesAsCriteria()); saveBtn.disable()"}
            ]
            }),

            // databound DetailViewer
            // * click boundList records to display
            DetailViewer.create({
            ID:"boundViewer"
            })
            ]
            });



            </SCRIPT>
            </BODY></HTML>


            Thank You!
            Lane

            Comment


              #7
              We changed from @@IDENTITY to SCOPE_IDENTITY() because of a well-known (amongst the SQL Server community) problem with the former in the presence of triggers - see this thread.

              SCOPE_IDENTITY() is supposed to be a trouble-free alternative, and in native connections it does appear to be, but we have subsequently found that more recent SQL Server JDBC drivers apparently always return null from SCOPE_IDENTITY(). To work around this, we introduced a further change to our SQL Server support, to make use of the JDBC 3.0 API getGeneratedKeys() instead of native techniques.

              Unfortunately, the driver you're using is new enough to suffer from the "always returns null" problem (which we believe to be a bug in the JDBC driver, by the way), but old enough that it doesn't support the JDBC 3.0 API. If you have the option of using a more recent driver, that would fix the problem.

              Alternatively, since we don't wish to impose particular driver versions on customers, we are willing to modify our SQL Server support to make use of @@IDENTITY based on a server.properties flag, on the understanding that this is a known broken case in the presence of triggers. If you cannot use a different driver, and triggers aren't an issue for you, please let us know.

              Comment


                #8
                We went ahead and added this flag - support will be present in nightly builds as of tomorrow. Use it by adding:
                Code:
                sql.{dbName}.useGlobalIdentity: true
                to your server.properties file (where {dbName} is the particular database config to affect - "SQLServer" for our default one).

                As stated, please bear in mind that this is known to cause problems if you are using triggers; if that's the case, the only solution is to use the JDBC 3.0 driver.

                Comment

                Working...
                X