Details

    • Type: Bug Fix Bug Fix
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.2.0-rc1, 2.2
    • Component/s: Development
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-8419Add a default max-height for auto-suggest to avoid infinite height
      KULRICE-11918Account Lookup Auto Search Pre-Filtered throws ViewLifecycle exception
      KULRICE-11107AFT Failure KRAD LIbrary Widget Suggest Auto-Query Configuration requires capitalization to work now (uppercase)
      KULRICE-11502AFT Failure Demo Library Widgets Suggest mostly not suggesting
      KULRICE-7592Suggest query not working correctly with custom service method
      KULRICE-6895Xstream unmarshalling of BO Note (in maintenance documents) leads to a stacktrace
      KULRICE-7837Stacktrace on Using application header with new Freemarker Template file (MyplanApplicationHeader.ftl)
      KULRICE-8730Using a lookup from a KFS document in Firefox cause a stacktrace to be thrown
      KULRICE-10365DemoLibraryWidgetsSuggestSmokeTest not suggesting
      KULRICE-9876Context Edit throws NPE
    • Rice Module:
      KRAD
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required

      Description

      Getting a stackTrace using a austosuggest

      I have used this bean:

      <bean parent="Uif-InputField" p:label="Suggest 4"
      p:instructionalText="static method and query result suggestions option, type a or c for suggestions"
      p:propertyName="field65">
      <property name="suggest">
      <bean parent="Uif-Suggest" p:render="true" p:sourceQueryMethodResults="true">
      <property name="suggestQuery">
      <bean parent="Uif-AttributeQueryConfig" p:queryMethodInvokerConfig.staticMethod=
      "edu.sampleu.demo.kitchensink.TestSuggestClass.getLanguages"/>
      </property>
      <property name="templateOptions">
      <map merge="true">
      <entry key="minLength" value="0"/>
      </map>
      </property>
      </bean>
      </property>
      </bean>

      And the method is this one:

      public static List<String> getLanguages(String term) {
      List<String> matchingLanguages = new ArrayList<String>();

      String[] languageArray =

      {"ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme"}

      ;

      for (int i = 0; i < languageArray.length; i++) {
      String language = languageArray[i];
      if (language.toLowerCase().startsWith(term.toLowerCase()))

      { matchingLanguages.add(language); }

      }

      return matchingLanguages;
      }

      StackTrace:

      2012-10-26 17:00:53,000 [qtp447932931-182] u:admin/d: ERROR org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver -
      java.lang.NullPointerException
      at org.kuali.rice.krad.uif.service.impl.AttributeQueryServiceImpl.performFieldSuggestQuery(AttributeQueryServiceImpl.java:66)
      at org.kuali.rice.krad.web.controller.UifControllerBase.performFieldSuggest(UifControllerBase.java:602)
      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 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
      at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
      at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352)
      at org.kuali.rice.kew.web.UserLoginFilter.doFilter(UserLoginFilter.java:89)
      at org.kuali.rice.kew.web.UserLoginFilter.doFilter(UserLoginFilter.java:77)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
      at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:69)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:934)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:869)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
      at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      at org.eclipse.jetty.server.Server.handle(Server.java:346)
      at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:581)
      at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1040)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:592)
      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
      at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:526)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:41)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528)
      at java.lang.Thread.run(Thread.java:662)

      Its failing in the AttributeQueryServiceImpl class performFieldSuggestQuery() where the view passed in is Null.

        Activity

        Hide
        Hemanth Gajula (Inactive) added a comment -

        it is not a Task it is a bug. I accidentally created this as a task. I think i don't have privileges to change this

        Show
        Hemanth Gajula (Inactive) added a comment - it is not a Task it is a bug. I accidentally created this as a task. I think i don't have privileges to change this
        Hide
        Jerry Neal (Inactive) added a comment -

        Hemanth,

        This same configuration is working fine in our example view. There must be something to the view configuration causing a difference. Can you include the view definition that contains this field?

        thanks,
        Jerry

        Show
        Jerry Neal (Inactive) added a comment - Hemanth, This same configuration is working fine in our example view. There must be something to the view configuration causing a difference. Can you include the view definition that contains this field? thanks, Jerry
        Hide
        Hemanth Gajula (Inactive) added a comment -

        Attaching the view definition. Please have a look at it.

        Show
        Hemanth Gajula (Inactive) added a comment - Attaching the view definition. Please have a look at it.
        Hide
        Jerry Neal (Inactive) added a comment -

        Hemanth,

        Can you also attach the definition for MyPlanBaseFormView? I am wondering if the form is not being stored in session and this is causing a problem for the query. Have you guys done field queries successfully in the past?

        thanks,
        Jerry

        Show
        Jerry Neal (Inactive) added a comment - Hemanth, Can you also attach the definition for MyPlanBaseFormView? I am wondering if the form is not being stored in session and this is causing a problem for the query. Have you guys done field queries successfully in the past? thanks, Jerry
        Hide
        Hemanth Gajula (Inactive) added a comment -

        <bean id="MyPlanBaseFormView" abstract="true" parent="Uif-FormView">
        <property name="preloadPoolSize" value="5"/>
        <property name="theme">
        <bean parent="MyPlanBaseTheme"/>
        </property>
        <property name="persistFormToSession" value="false"/>
        <property name="breadcrumbs.render" value="false"/>
        <property name="applyDirtyCheck" value="false"/>
        <property name="onLoadScript" value="try

        {Typekit.load();}

        catch(e){}"/>
        </bean>

        The persistFormToSession is set to false in the view. Is this the session property for the form .

        And we havent used any field queries till now.

        Show
        Hemanth Gajula (Inactive) added a comment - <bean id="MyPlanBaseFormView" abstract="true" parent="Uif-FormView"> <property name="preloadPoolSize" value="5"/> <property name="theme"> <bean parent="MyPlanBaseTheme"/> </property> <property name="persistFormToSession" value="false"/> <property name="breadcrumbs.render" value="false"/> <property name="applyDirtyCheck" value="false"/> <property name="onLoadScript" value="try {Typekit.load();} catch(e){}"/> </bean> The persistFormToSession is set to false in the view. Is this the session property for the form . And we havent used any field queries till now.
        Hide
        Jerry Neal (Inactive) added a comment -

        Hemanth,

        That is the problem then. If the form is not persisted it can't get the view. Many things depend on that. In the case of a field query it needs to read the query information from the field when a request is made. Otherwise we would have to pass a lot of stuff around.

        One thing you might look into is keeping the form around, and doing more selective removal from session. Each component also has an option for not storing in session. For the data, you can add an annotation of @SessionTransient that will cause it to be cleared (I think this is the correct annotation but please verify).

        In the future we might be able to read the configuration from the XML if the view is not present. But that can't be relied on in call cases but so much can happen during the processing (including fields getting created), expression evaluation and so on.

        So you don't do any component refresh in this page as well? I don't think that would work without the session form persistence either.

        Jerry

        Show
        Jerry Neal (Inactive) added a comment - Hemanth, That is the problem then. If the form is not persisted it can't get the view. Many things depend on that. In the case of a field query it needs to read the query information from the field when a request is made. Otherwise we would have to pass a lot of stuff around. One thing you might look into is keeping the form around, and doing more selective removal from session. Each component also has an option for not storing in session. For the data, you can add an annotation of @SessionTransient that will cause it to be cleared (I think this is the correct annotation but please verify). In the future we might be able to read the configuration from the XML if the view is not present. But that can't be relied on in call cases but so much can happen during the processing (including fields getting created), expression evaluation and so on. So you don't do any component refresh in this page as well? I don't think that would work without the session form persistence either. Jerry
        Hide
        Jerry Neal (Inactive) added a comment -

        Hemanth,

        Are you good with this one? I think with the work that has been done if you enable form persistence and take advantage of the other configuration you should not see the memory issues as before. We also have a configuration parameter that can be set for how many forms can be stored in the users session (which prevents it from growing unbounded). The default is 5.

        Jerry

        Show
        Jerry Neal (Inactive) added a comment - Hemanth, Are you good with this one? I think with the work that has been done if you enable form persistence and take advantage of the other configuration you should not see the memory issues as before. We also have a configuration parameter that can be set for how many forms can be stored in the users session (which prevents it from growing unbounded). The default is 5. Jerry
        Hide
        Jerry Neal (Inactive) added a comment -

        Resolving until more information is provided about any issues

        Show
        Jerry Neal (Inactive) added a comment - Resolving until more information is provided about any issues

          People

          • Assignee:
            Jerry Neal (Inactive)
            Reporter:
            Hemanth Gajula (Inactive)
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Structure Helper Panel