Details
-
Bug
-
Resolution: Fixed
-
Low
-
7.12.0, 7.12.1, 7.12.3, 8.20.7
-
7.12
-
15
-
Severity 2 - Major
-
81
-
Description
Summary
For a non JSD project, when user created validator for comment (such as JMWE's Comment Required Validator) that throws an InvalidInputException for the "comment" field (to display an error message below the Comment field), an error log is displayed:
Stack Trace
2018-10-01 13:06:12,646 http-nio-2990-exec-8 ERROR admin 786x31906x1 1zl5ea 0:0:0:0:0:0:0:1 /secure/CommentAssignIssue.jspa [webwork.util.ValueStack] query="/tabsWithErrors" {[id="null" type="5" values=""]} {[id="tabsWithErrors" type="8" values=""]} java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70) at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56) at webwork.util.ValueStack.findValue(ValueStack.java:417) at webwork.util.ValueStack.findValue(ValueStack.java:216) at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.java:62) at webwork.view.taglib.ParamTag.doEndTag(ParamTag.java:59) at jsp.secure.views.issue.commentassignissue_jsp._jspx_meth_ww_005fparam_005f3(commentassignissue_jsp.java:1876) at jsp.secure.views.issue.commentassignissue_jsp._jspx_meth_ww_005fcomponent_005f0(commentassignissue_jsp.java:1772) at jsp.secure.views.issue.commentassignissue_jsp._jspx_meth_page_005fapplyDecorator_005f0(commentassignissue_jsp.java:609) at jsp.secure.views.issue.commentassignissue_jsp._jspx_meth_ww_005fif_005f1(commentassignissue_jsp.java:528) at jsp.secure.views.issue.commentassignissue_jsp._jspService(commentassignissue_jsp.java:171) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ... 48 filtered at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56) ... 4 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 45 filtered at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66) ... 1 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64) ... 20 filtered at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30) ... 5 filtered at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:116) ... 11 filtered at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25) ... 11 filtered at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ... 48 filtered at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56) ... 4 filtered at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:62) ... 12 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 24 filtered at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59) ... 37 filtered at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66) ... 1 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64) ... 39 filtered at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30) ... 5 filtered at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181) at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:137) at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:90) at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:47) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:174) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:130) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121) ... 4 filtered at com.atlassian.fastdev.AutoReloadFilter.doFilter(AutoReloadFilter.java:63) ... 3 filtered at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32) ... 8 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 4 filtered at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36) ... 26 filtered at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25) ... 22 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.util.NoSuchElementException at java.util.TreeMap.key(TreeMap.java:1327) at java.util.TreeMap.firstKey(TreeMap.java:290) at java.util.TreeSet.first(TreeSet.java:394) at com.atlassian.jira.web.action.issue.util.ScreenTabErrorHelper.initialiseTabsWithErrors(ScreenTabErrorHelper.java:60) at com.atlassian.jira.web.action.issue.CommentAssignIssue.initTabsWithErrors(CommentAssignIssue.java:125) ... 430 more
Steps to replicate
- Create a non JSD project
- Add a comment validator (one of JMWE's Comment Required Validator) with an associate screen
- Create and issue and transition that issue where you added the validator above and don't input a comment
- Notice the server log or tail -f the logs
Root Cause
Error is caused by no first() element object for:
com.atlassian.jira.web.action.issue.util.ScreenTabErrorHelper.initialiseTabsWithErrors line 60
/** * Populates the set of field screen tabs with the tabs which contain errors. This is based on the error collection * supplied, which is a mapping from field names to error messages. Will return the index of the tab to be selected, * which is either the first tab with an error, or simply the first tab. * * @param tabsWithErrors the set of tabs to populate * @param errors the error collection * @param fieldScreenRenderer the field screen renderer to resolve {@link FieldScreenRenderTab} from field ids. * @param webParameters the Webwork parameters * @return the (1-based) index of the tab to be selected. */ public int initialiseTabsWithErrors(final SortedSet<FieldScreenRenderTab> tabsWithErrors, final Map<String, ?> errors, final FieldScreenRenderer fieldScreenRenderer, final Map webParameters) { if (errors != null && !errors.isEmpty()) { // Record the tabs which have fields with errors on them for (String fieldId : errors.keySet()) { // some code here } // Add 1 as the status' counts in WW iterators start at 1 (not 0) return tabsWithErrors.first().getPosition() + 1; //line 60 } else { return 1; } }
Attachments
Issue Links
- relates to
-
JRASERVER-21260 Check for null in EditIssue.initTabsWithErrors()
- Closed
- is depended on by
-
DEVHELP-1779 Loading...