Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-13208

AFT Failure DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapprove freemarker exception

    Details

    • Type: Bug Fix Bug Fix
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.5
    • Fix Version/s: 2.5
    • Component/s: Development, Regression
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-13107Intermittent AFT Failure LabsKsaTransactionAft freemarker exception
      KULRICE-12890AFT Failure LabsViewFixedContainerAft and LabsViewFluidContainerAft freemarker exception
      KULRICE-13073AFT Failure: Pages not loading - freemarker exception in logs
      KULRICE-10421AFT Failure: DemoLibraryCollectionFeaturesLightTableSmokeTest inline freemarker exception
      KULRICE-12976AFT Failure LabsLookupSecurityTravelAuthorizationDocumentAuthorizedAft FreeMarker template error
      KULRICE-11140AFT Failure KRAD Demo Labs KSA Transaction inline Freemarker Exception
      KULRICE-12258AFT Failure DemoContainerTreeGroupAft doesn't render Freemarker Exception in logs spring.ftl
      KULRICE-13128AFT Failure LabsView ContainerAfts Freemarker Exception Invalid property 'backdoorId'
      KULRICE-13780Create Freemarker 404 AFT
      KULRICE-11536AFT Failure Rice Sampleapp Krad Configuration clicking all day checkbox inline Freemarker exception
    • Sprint:
      Core 2.5.0-m7 Sprint 1, Core 2.5.0-rc Sprint 1
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required
    • Story Points:
      1

      Description

      AFT Step: Open http://env14.rice.kuali.org/kr-krad/kradsampleapp?viewId=KradSampleAppHome
      AFT Step: Click Demo Link
      AFT Step: Click Travel Authorization Document link.
      AFT Step: Document Number is 3224
      AFT Step: Type into document.documentHeader.documentDescription the text: Test Pessimistic Locking
      AFT Step: Type into document.cellPhoneNumber the text: 555-555-5555
      AFT Step: Click Search button.
      AFT Step: Click return value link.
      AFT Step: Click Save button.
      AFT Step: Is text 'Document was successfully saved.' present? true
      AFT Step: Is text 'Document was successfully saved.' present? true
      AFT Step: Click Ad Hoc Recipients link.
      AFT Step: Select APPROVE from newCollectionLines['document.adHocRoutePersons'].actionRequested
      AFT Step: Type into newCollectionLines['document.adHocRoutePersons'].id the text: edna
      AFT Step: Click Ad Hoc Recipients link.
      AFT Step: Click Submit button.
      AFT Step: Click OK Confirmation
      AFT Step: Is text 'Document was successfully submitted.' present? true
      AFT Step: Is text 'Document was successfully submitted.' present? true
      AFT Step: Click Close button.
      AFT Step: Type into backdoorId the text: edna
      AFT Step: Click Backdoor Login
      AFT Step: Click Disapprove button.
      AFT Step: Type into dialogExplanations['DisapproveExplanationDialog'] the text: Document incomplete

      Change set for failure: http://ci.kuali.org/job/rice-2.5-test-functional-env14-jenkins-krad-sampleapp/208/changes
      Abbreviated test name: DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapproveNav
      Full test name: org.kuali.rice.krad.demo.travel.application.DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapproveNav
      Test results url: http://ci.kuali.org/job/rice-2.5-test-functional-env14-jenkins-krad-sampleapp/lastCompletedBuild/testReport/org.kuali.rice.krad.demo.travel.application/DemoTravelAuthorizationPessimisticLockingAft/testPessimisticLockingUnlockingOnDisapproveNav/

      Abbreviated test name: DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapproveBookmark
      Full test name: org.kuali.rice.krad.demo.travel.application.DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapproveBookmark
      Test results url: http://ci.kuali.org/job/rice-2.5-test-functional-env14-jenkins-krad-sampleapp/lastCompletedBuild/testReport/org.kuali.rice.krad.demo.travel.application/DemoTravelAuthorizationPessimisticLockingAft/testPessimisticLockingUnlockingOnDisapproveBookmark/

      StackTrace: FreeMarker template error:
      The following has evaluated to null or missing:
      ==> view.additionalMetaTags [in template "krad/WEB-INF/ftl/lib/html.ftl" at line 26, column 12]
      Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing<!--#if-->. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??
      The failing instruction (FTL stack trace):
      ----------
      ==> #list view.additionalMetaTags as tag [in template "krad/WEB-INF/ftl/lib/html.ftl" in macro "html" at line 26, column 5]
      @krad.html view=view [in template "krad/WEB-INF/ftl/fullView.ftl" at line 18, column 1]
      #include "fullView.ftl" [in template "krad/WEB-INF/ftl/uifRender.ftl" at line 69, column 9]
      #else [in template "krad/WEB-INF/ftl/uifRender.ftl" at line 68, column 5]
      ----------
      Java stack trace (for programmers):
      ----------
      freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
      at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98)
      at freemarker.core.Expression.assertNonNull(Expression.java:205)
      at freemarker.core.IteratorBlock.accept(IteratorBlock.java:100)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.MixedContent.accept(MixedContent.java:93)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.Macro$Context.runMacro(Macro.java:209)
      at freemarker.core.Environment.visit(Environment.java:694)
      at freemarker.core.UnifiedCall.accept(UnifiedCall.java:116)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.MixedContent.accept(MixedContent.java:93)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.Environment.include(Environment.java:1712)
      at freemarker.core.Include.accept(Include.java:172)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.IfBlock.accept(IfBlock.java:84)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.MixedContent.accept(MixedContent.java:93)
      at freemarker.core.Environment.visitByHiddingParent(Environment.java:286)
      at freemarker.core.Environment.visitAndTransform(Environment.java:377)
      at freemarker.core.CompressedBlock.accept(CompressedBlock.java:73)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.MixedContent.accept(MixedContent.java:93)
      at freemarker.core.Environment.visit(Environment.java:265)
      at freemarker.core.Environment.process(Environment.java:243)
      at freemarker.template.Template.process(Template.java:277)
      at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366)
      at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283)
      at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233)
      at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167)
      at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
      at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1201)
      at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:986)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
      at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.krad.web.filter.CharsetFilter.doFilter(CharsetFilter.java:58)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89)
      at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327)
      at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82)
      at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
      at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320)
      at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:108)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
      at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:214)
      at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:722
      	at org.junit.Assert.fail(Assert.java:88)
      	at org.kuali.rice.testtools.selenium.JiraAwareAftBase.fail(JiraAwareAftBase.java:409)
      	at org.kuali.rice.testtools.common.JiraAwareFailureUtils.fail(JiraAwareFailureUtils.java:144)
      	at org.kuali.rice.testtools.selenium.JiraAwareAftBase.jiraAwareFail(JiraAwareAftBase.java:564)
      	at org.kuali.rice.testtools.selenium.JiraAwareAftBase.jiraAwareFail(JiraAwareAftBase.java:514)
      	at org.kuali.rice.testtools.selenium.AutomatedFunctionalTestUtils.checkForIncidentReport(AutomatedFunctionalTestUtils.java:159)
      	at org.kuali.rice.testtools.selenium.WebDriverAftBase.checkForIncidentReport(WebDriverAftBase.java:481)
      	at org.kuali.rice.testtools.selenium.JiraAwareAftBase.waitAndType(JiraAwareAftBase.java:796)
      	at org.kuali.rice.testtools.selenium.WebDriverAftBase.waitAndType(WebDriverAftBase.java:1509)
      	at org.kuali.rice.testtools.selenium.WebDriverAftBase.waitAndTypeByName(WebDriverAftBase.java:1529)
      	at org.kuali.rice.testtools.selenium.WebDriverLegacyITBase.impersonateUser(WebDriverLegacyITBase.java:461)
      	at org.kuali.rice.krad.demo.travel.application.DemoTravelAuthorizationPessimisticLockingAft.openTravelAuthorization(DemoTravelAuthorizationPessimisticLockingAft.java:297)
      	at org.kuali.rice.krad.demo.travel.application.DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapprove(DemoTravelAuthorizationPessimisticLockingAft.java:223)
      	at org.kuali.rice.krad.demo.travel.application.DemoTravelAuthorizationPessimisticLockingAft.testPessimisticLockingUnlockingOnDisapproveBookmark(DemoTravelAuthorizationPessimisticLockingAft.java:352)

        Issue Links

          Activity

          Erik Meade made changes -
          Field Original Value New Value
          Link This issue discovered by RICEQA-541 [ RICEQA-541 ]
          Erik Meade made changes -
          Rank Ranked higher
          Jeff Ruch made changes -
          Assignee Jeff Ruch [ jruch ]
          Jeff Ruch made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Kristina Taylor (Inactive) made changes -
          Sprint Core 2.5.0-m7 Sprint 1 [ 386 ]
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Hide
          Jeff Ruch added a comment -

          Looks like this maybe caused by a bad url per https://jira.kuali.org/browse/KULRICE-12268. Will attempt to reproduce and trace the url.

          Show
          Jeff Ruch added a comment - Looks like this maybe caused by a bad url per https://jira.kuali.org/browse/KULRICE-12268 . Will attempt to reproduce and trace the url.
          Hide
          Jeff Ruch added a comment -

          Fails on:

          open('http://localhost:8080/krad-dev/kew/DocHandler.do?command=displayDocSearchView&docId=3091');

          Show
          Jeff Ruch added a comment - Fails on: open('http://localhost:8080/krad-dev/kew/DocHandler.do?command=displayDocSearchView&docId=3091');
          Hide
          Jeff Ruch added a comment -

          After the backdoor login, the post_bind sets the referrer to 'NO_RETURN' which is then getting passed into the url. The close button becomes 'http://localhost:8080/krad-dev/kr-krad/NO_RETURN?methodToCall=refresh' which causes the 404/Freemarker error.

          Show
          Jeff Ruch added a comment - After the backdoor login, the post_bind sets the referrer to 'NO_RETURN' which is then getting passed into the url. The close button becomes 'http://localhost:8080/krad-dev/kr-krad/NO_RETURN?methodToCall=refresh' which causes the 404/Freemarker error.
          Hide
          Jeff Ruch added a comment -

          The source of this issue relates to the KULRICE-10889 - refactoring of controllers into controller services. During the refactor, the NO_RETURN constant was set to "NO_RETURN". In UifFormBase#postBind, the following code sets the return location to "NO_RETURN" if the return location and referred is blank.

                  if (StringUtils.isBlank(referer) && StringUtils.isBlank(getReturnLocation())) {
                      setReturnLocation(UifConstants.NO_RETURN);
                  } else if (StringUtils.isBlank(getReturnLocation())) {
                      setReturnLocation(referer);
                  }
          

          Setting the NO_RETURN constant to "" resolves the issue.

          Show
          Jeff Ruch added a comment - The source of this issue relates to the KULRICE-10889 - refactoring of controllers into controller services. During the refactor, the NO_RETURN constant was set to "NO_RETURN". In UifFormBase#postBind, the following code sets the return location to "NO_RETURN" if the return location and referred is blank. if (StringUtils.isBlank(referer) && StringUtils.isBlank(getReturnLocation())) { setReturnLocation(UifConstants.NO_RETURN); } else if (StringUtils.isBlank(getReturnLocation())) { setReturnLocation(referer); } Setting the NO_RETURN constant to "" resolves the issue.
          Hide
          Jeff Ruch added a comment - - edited

          A quick search of the NO_RETURN constant showed only being used in UifFormBase#postBind. I am fairly comfortable that this change will not impact other functionality.

          Show
          Jeff Ruch added a comment - - edited A quick search of the NO_RETURN constant showed only being used in UifFormBase#postBind. I am fairly comfortable that this change will not impact other functionality.
          Kristina Taylor (Inactive) made changes -
          Sprint Core 2.5.0-m7 Sprint 1 [ 386 ] Core 2.5.0-m7 Sprint 1, Core 2.5.0-m7 Sprint 2 [ 386, 395 ]
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Jeff Ruch made changes -
          Status In Progress [ 3 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Matt Sargent made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Jeff Ruch
              Reporter:
              Erik Meade
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Agile

                  Structure Helper Panel