History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: PERSONDIR-45
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Eric Dalquist
Reporter: Eric Dalquist
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Person Directory Service

Query map with empty attributes causes SQL exception

Created: 08/Aug/08 04:17 PM   Updated: 11/Aug/08 12:55 PM
Component/s: None
Affects Version/s: None
Fix Version/s: 1.5.0

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown


 Description  « Hide
The SingleRowJdbcPersonAttributeDao doesn't handle an empty generated where class correctly

 WARN [org.jasig.portal.ChannelManager#40] support.MergingPersonAttributeDaoImpl.[] Aug/08 15:16:15 - Recovering From Exception thrown by 'org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao@1cfd020'
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [
                SELECT USER_NAME
                FROM UP_USER
                WHERE
            ]; nested exception is java.sql.SQLException: ORA-00936: missing expression

        at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:276)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
        at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.query(SimpleJdbcTemplate.java:187)
        at org.jasig.services.persondir.support.jdbc.AbstractJdbcPersonAttributeDao.getPeopleForQuery(AbstractJdbcPersonAttributeDao.java:151)
        at org.jasig.services.persondir.support.jdbc.AbstractJdbcPersonAttributeDao.getPeopleForQuery(AbstractJdbcPersonAttributeDao.java:47)
        at org.jasig.services.persondir.support.AbstractQueryPersonAttributeDao.getPeopleWithMultivaluedAttributes(AbstractQueryPersonAttributeDao.java:184)
        at org.jasig.services.persondir.support.MergingPersonAttributeDaoImpl.getAttributesFromDao(MergingPersonAttributeDaoImpl.java:40)
        at org.jasig.services.persondir.support.AbstractAggregatingDefaultQueryPersonAttributeDao.getPeopleWithMultivaluedAttributes(AbstractAggregatingDefaultQueryPersonAttributeDao.java:111)
        at org.jasig.services.persondir.support.CachingPersonAttributeDaoImpl.getPeopleWithMultivaluedAttributes(CachingPersonAttributeDaoImpl.java:304)
        at org.jasig.portal.portlets.swapper.OverwritingPersonAttributeDao.getPeopleWithMultivaluedAttributes(OverwritingPersonAttributeDao.java:97)
        at org.jasig.services.persondir.support.AbstractFlatteningPersonAttributeDao.getPeople(AbstractFlatteningPersonAttributeDao.java:29)
        at org.jasig.portal.portlets.lookup.PersonLookupHelperImpl.doPersonQuery(PersonLookupHelperImpl.java:82)
        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:585)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:851)
        at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1253)
        at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
        at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
        at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.ASTChain.getValueBody(ASTChain.java:141)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
        at ognl.SimpleNode.getValue(SimpleNode.java:258)
        at ognl.Ognl.getValue(Ognl.java:494)
        at org.springframework.binding.expression.ognl.OgnlExpression.getValue(OgnlExpression.java:87)
        at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:76)
        at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
        at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
        at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
        at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)
        at org.springframework.webflow.engine.State.enter(State.java:194)
        at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:377)
        at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:197)
        at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
        at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:545)
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:372)
        at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:193)
        at org.springframework.webflow.engine.ViewState.resume(ViewState.java:193)
        at org.springframework.webflow.engine.Flow.resume(Flow.java:535)
        at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:261)
        at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:153)
        at org.springframework.webflow.mvc.portlet.FlowHandlerAdapter.resumeFlow(FlowHandlerAdapter.java:250)
        at org.springframework.webflow.mvc.portlet.FlowHandlerAdapter.handleRender(FlowHandlerAdapter.java:129)
        at org.springframework.web.portlet.DispatcherPortlet.doRenderService(DispatcherPortlet.java:811)
        at org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:483)
        at org.springframework.web.portlet.FrameworkPortlet.doDispatch(FrameworkPortlet.java:453)
        at javax.portlet.GenericPortlet.render(GenericPortlet.java:175)
        at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:208)
        at org.apache.pluto.core.PortletServlet.doPost(PortletServlet.java:145)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
        at org.apache.pluto.core.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:167)
        at org.apache.pluto.core.DefaultPortletInvokerService.render(DefaultPortletInvokerService.java:101)
        at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:172)
        at org.jasig.portal.channels.portlet.SpringPortletChannelImpl.render(SpringPortletChannelImpl.java:531)
        at org.jasig.portal.channels.portlet.CSpringPortletAdaptor.renderCharacters(CSpringPortletAdaptor.java:186)
        at org.jasig.portal.ChannelRenderer$Worker.execute(ChannelRenderer.java:587)
        at org.jasig.portal.utils.threading.BaseTask.run(BaseTask.java:27)
        at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.springframework.orm.jpa.JpaInterceptor.invoke(JpaInterceptor.java:96)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at org.jasig.portal.$Proxy43.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
        at java.util.concurrent.FutureTask.run(FutureTask.java:123)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: ORA-00936: missing expression

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        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:745)
        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:1049)
        at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:845)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
        at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1313)
        at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:443)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
        ... 83 more


 All   Comments   Work Log   Change History      Sort Order:
Eric Dalquist [11/Aug/08 12:55 PM]
Move creation of queryBuilder so it is only created when needed