Announcement

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

    Velocity Mixing Up OperationBindings?

    I'm posting this on the off chance it might support troubleshooting of another post I just made (
    http://forums.smartclient.com/showth...446#post113446 )

    I noticed some Velocity oddness this morning, thought you'd want to know.

    I have these two OperationBindings, the second one created recently:
    Code:
    <operationBinding appScreen="Review"  operationType="fetch" operationid="filterItem_Names">
     <selectClause>distinct name</selectClause>
     <!-- <selectClause>distinct employee.name</selectClause> // tried this, fails the same -->
     <tableClause>${defaultTableClause}</tableClause>
     <whereClause>${defaultWhereClause}</whereClause>
    </operationBinding>
    
    <operationBinding appScreen="Review"  operationType="fetch" operationid="filterItem_OrgId">
     <selectClause>distinct org_id</selectClause>
     <tableClause>${defaultTableClause}</tableClause>
     <whereClause>${defaultWhereClause}</whereClause>
    </operationBinding>
    I have some client code that calls the first OperationBinding:
    Code:
    private ListGridField make_ListGridField_Name() {
    
     // Column for EMPLOYEE.NAME
     ListGridField lgf_Name = new ListGridField("NAME", "Requestor")  {
      {
    
      setOptionDataSource(ds_Employee);
      
      setWidth("130px");
      setAlign(Alignment.CENTER);
      setCellAlign(Alignment.LEFT);
    
    
      setFilterEditorProperties(new SelectItem() {
       {
       setOptionDataSource(ds_Employee);
       
       setOptionOperationId("filterItem_Names");
       setSortField("NAME"); 
       setMultiple(true);
    						   
       setMultipleAppearance(MultipleAppearance.PICKLIST);
      setAllowEmptyValue(true);
       }
      });
     }
    };
    
    return lgf_Name;
    
    }// make_ListGridField_Name
    This generates a SQL query that takes elements from BOTH OperationBindings:
    - The OperationID is from the first OperationBinding ("filterItem_Names")
    - but the SQL query is derived from the second ("SELECT distinct org_id")
    Code:
    === 2013-12-06 09:46:44,063 [0-26] INFO  SQLDriver - [builtinApplication.filterItem_Names] Executing SQL query on 'MyDatabase': SELECT distinct org_id FROM absence_dev.EMPLOYEE WHERE ('1'='1') ORDER BY EMPLOYEE.NAME
    === 2013-12-06 09:46:44,063 [0-26] WARN  RequestContext - dsRequest.execute() failed: 
    java.sql.SQLException: ORA-01791: not a SELECTed expression
    
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754)
    	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
    	at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:804)
    	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1051)
    	at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:845)
    	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1156)
    	at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1315)
    	at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
    	at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:604)
    	at com.isomorphic.sql.SQLDriver.executeQuery(SQLDriver.java:917)
    	at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:523)
    	at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:517)
    	at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1548)
    	at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:408)
    	at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:352)
    	at com.isomorphic.datasource.DataSource.execute(DataSource.java:1447)
    	at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:723)
    	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:2431)
    	at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:215)
    	at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:172)
    	at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:137)
    	at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    	at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:260)
    	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:205)
    	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)
    Eclipse does not indicate any XML errors, nor can I see any.

    As it happens, I don't really need the second OperationBinding, so I remarked it out, and the error goes away.

    But I thought you'd want to know.

    ---------------------------------------
    SmartClient Version: v9.0p_2013-12-01/PowerEdition Deployment (built 2013-12-01)

    IE 8
    Last edited by DevMo; 6 Dec 2013, 10:09. Reason: Added SGWT version & Browser info.

    #2
    My bad: As far as I can tell, this was due to a case sensitivity issue of the XML attribute "operationId"?

    I had operation(i)d, it should be operation(I)d.

    I would have expected a complete failure though, not the mix & match behavior.

    Time to upgrade eyeglasses, or get a bigger screen!

    Comment

    Working...
    X