I tried to follow the documentation of "Tutorial - Creating a JIRA report", but I got the following compile errors on SingleLevelGroupByReportExtended:
I know there is a thread maybe related to this back in Oct, 2013, but the solution suggestion there won't work for me. The solution suggested was to uncomment the dependency of jira-core
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-core</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
</dependency>
It was uncommented before I made the change in the SingleLevelGroupByReportExtended. I also had followed what was suggested in terms of running these cleanup command, but it still won't work. I suspect that the example in the tutorial is outdated with the latest SDK. Could anyone has any suggestion on how to fix this so that I can proceed?
Thanks in advance.
I used JIRA 6.3.13. I have the same problem. I fixed this problem. Now i wrote down my code for your reference.
package com.atlassian.plugins.tutorial.jira.reports; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.lucene.search.Collector; import com.atlassian.core.util.map.EasyMap; import com.atlassian.crowd.embedded.api.User; import com.atlassian.jira.bc.JiraServiceContext; import com.atlassian.jira.bc.JiraServiceContextImpl; import com.atlassian.jira.bc.filter.SearchRequestService; import com.atlassian.jira.bc.issue.search.SearchService; import com.atlassian.jira.exception.PermissionException; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.IssueFactory; import com.atlassian.jira.issue.fields.FieldManager; import com.atlassian.jira.issue.index.IssueIndexManager; import com.atlassian.jira.issue.search.ReaderCache; import com.atlassian.jira.issue.search.SearchException; import com.atlassian.jira.issue.search.SearchProvider; import com.atlassian.jira.issue.search.SearchRequest; import com.atlassian.jira.issue.statistics.FilterStatisticsValuesGenerator; import com.atlassian.jira.issue.statistics.StatisticsMapper; import com.atlassian.jira.issue.statistics.StatsGroup; import com.atlassian.jira.issue.statistics.util.OneDimensionalDocIssueHitCollector; import com.atlassian.jira.plugin.report.impl.AbstractReport; import com.atlassian.jira.project.ProjectManager; import com.atlassian.jira.security.JiraAuthenticationContext; import com.atlassian.jira.util.SimpleErrorCollection; import com.atlassian.jira.web.FieldVisibilityManager; import com.atlassian.jira.web.action.ProjectActionSupport; import com.atlassian.jira.web.bean.PagerFilter; import com.atlassian.jira.web.util.OutlookDateManager; import com.atlassian.util.profiling.UtilTimerStack; import com.opensymphony.util.TextUtils; public class SingleLevelGroupByReportExtended extends AbstractReport { private static final Logger log = Logger.getLogger(SingleLevelGroupByReportExtended.class); private final SearchProvider searchProvider; private final JiraAuthenticationContext authenticationContext; private final SearchRequestService searchRequestService; private final IssueFactory issueFactory; private final CustomFieldManager customFieldManager; private final IssueIndexManager issueIndexManager; private final SearchService searchService; private final FieldVisibilityManager fieldVisibilityManager; private final ReaderCache readerCache; private final OutlookDateManager outlookDateManager; private final FieldManager fieldManager; private final ProjectManager projectManager; public SingleLevelGroupByReportExtended(final SearchProvider searchProvider, final JiraAuthenticationContext authenticationContext, final SearchRequestService searchRequestService, final IssueFactory issueFactory, final CustomFieldManager customFieldManager, final IssueIndexManager issueIndexManager, final SearchService searchService, final FieldVisibilityManager fieldVisibilityManager, final ReaderCache readerCache, final OutlookDateManager outlookDateManager,FieldManager fieldManager,ProjectManager projectManager) { this.searchProvider = searchProvider; this.authenticationContext = authenticationContext; this.searchRequestService = searchRequestService; this.issueFactory = issueFactory; this.customFieldManager = customFieldManager; this.issueIndexManager = issueIndexManager; this.searchService = searchService; this.fieldVisibilityManager = fieldVisibilityManager; this.readerCache = readerCache; this.outlookDateManager = outlookDateManager; this.fieldManager=fieldManager; this.projectManager=projectManager; } public StatsGroup getOptions(SearchRequest sr, User user, StatisticsMapper mapper) throws PermissionException { try { return searchMapIssueKeys(sr, user, mapper); } catch (SearchException e) { log.error("Exception rendering " + this.getClass().getName() + ". Exception " + e.getMessage(), e); return null; } } public StatsGroup searchMapIssueKeys(SearchRequest request, User searcher, StatisticsMapper mapper) throws SearchException { try { UtilTimerStack.push("Search Count Map"); StatsGroup statsGroup = new StatsGroup(mapper); Collector hitCollector = new OneDimensionalDocIssueHitCollector( mapper.getDocumentConstant(), statsGroup, issueIndexManager.getIssueSearcher().getIndexReader(), issueFactory, fieldVisibilityManager, readerCache, fieldManager, projectManager ); searchProvider.searchAndSort((request != null) ? request.getQuery() : null, searcher, hitCollector, PagerFilter.getUnlimitedFilter()); return statsGroup; } finally { UtilTimerStack.pop("Search Count Map"); } } public String generateReportHtml(ProjectActionSupport action, Map params) throws Exception { String filterId = (String) params.get("filterid"); if (filterId == null) { log.error("Single Level Group By Report run without a project selected (JRA-5042): params=" + params); return "<span class='errMsg'>No search filter has been selected. Please " + "<a href=\"IssueNavigator.jspa?reset=Update&amp;pid=" + TextUtils.htmlEncode((String) params.get("selectedProjectId")) + "\">create one</a>, and re-run this report. See also " + "<a href=\"http://jira.atlassian.com/browse/JRA-5042\">JRA-5042</a></span>"; } String mapperName = (String) params.get("mapper"); final StatisticsMapper mapper = new FilterStatisticsValuesGenerator().getStatsMapper(mapperName); final JiraServiceContext ctx = new JiraServiceContextImpl(authenticationContext.getLoggedInUser()); final SearchRequest request = searchRequestService.getFilter(ctx, new Long(filterId)); final Map startingParams; try { startingParams = EasyMap.build( "action", action, "statsGroup", getOptions(request, authenticationContext.getLoggedInUser(), mapper), "searchRequest", request, "mapperType", mapperName, "customFieldManager", customFieldManager, "fieldVisibility", fieldVisibilityManager, "searchService", searchService, "portlet", this); startingParams.put("outlookDate", outlookDateManager.getOutlookDate(authenticationContext.getLocale())); return descriptor.getHtml("view", startingParams); } catch (PermissionException e) { log.error(e, e); return null; } } public void validate(ProjectActionSupport action, Map params) { super.validate(action, params); String filterId = (String) params.get("filterid"); if (StringUtils.isEmpty(filterId)) { action.addError("filterid", action.getText("report.singlelevelgroupby.filter.is.required")); } else { validateFilterId(action,filterId); } } private void validateFilterId(ProjectActionSupport action, String filterId) { try { JiraServiceContextImpl serviceContext = new JiraServiceContextImpl( action.getLoggedInUser(), new SimpleErrorCollection()); SearchRequest searchRequest = searchRequestService.getFilter(serviceContext, new Long(filterId)); if (searchRequest == null) { action.addErrorMessage(action.getText("report.error.no.filter")); } } catch (NumberFormatException nfe) { action.addError("filterId", action.getText("report.error.filter.id.not.a.number", filterId)); } } }
Still got the illegalArgumentException. Please help. Thanks in advance.
Here is the view.vm
{code:title=view.vm|borderStyle=solid}
<div style="padding: 5px">
<!-- Display the report configuration -->
<h4>
$i18n.getText("report.issuecreation.project"): $projectName |
$i18n.getText("report.issuecreation.duration"): $outlookDate.formatDMY($startDate) - $outlookDate.formatDMY($endDate) |
$i18n.getText("report.issuecreation.interval"): $interval $i18n.getText("report.issuecreation.interval.days")
</h4>
<br />
<table style="width: 100%; border: 0; background-color: lightgrey">
<!-- Create a row to display the bars-->
<tr valign="bottom" style="background-color: white; padding: 1px">
#foreach ($normalCount in $normalisedCount)
<td height="$maxHeight" align="center">
#if ($normalCount == 0)
#else
<img src="${baseurl}/images/bluepixel.gif" width="12" height="$normalCount">
#end
</td>
#end
</tr>
<!-- Have one row for the issue count -->
<tr style="background-color: #eee; padding: 1px">
#foreach ($count in $openCount)
<td align="center"><b>$count</b></td>
#end
</tr>
<!-- And one row to display the date -->
<tr style="background-color: #eee; padding: 1px">
#foreach ($date in $dates)
<td align="center"><b>$outlookDate.formatDMY($date)</b></td>
#end
</tr>
</table>
</div>
{code}
The exception:
[INFO] [talledLocalContainer] 2015-02-26 21:14:32,215 http-bio-2990-exec-2 ERROR [500ErrorPage.50424422-fe6f-4d08-ac91-a5742e8ee7f8] { [INFO] [talledLocalContainer] generalInfo = { [INFO] [talledLocalContainer] interpretedMsg = , [INFO] [talledLocalContainer] cause = java.lang.IllegalArgumentException: name, [INFO] [talledLocalContainer] stacktrace = java.lang.IllegalArgumentException: name [INFO] [talledLocalContainer] [^] at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:494) [INFO] [talledLocalContainer] [^] at sun.misc.URLClassPath.findResource(URLClassPath.java:176) [INFO] [talledLocalContainer] [^] at java.net.URLClassLoader$2.run(URLClassLoader.java:551) [INFO] [talledLocalContainer] [^] at java.net.URLClassLoader$2.run(URLClassLoader.java:549) [INFO] [talledLocalContainer] [^] at java.security.AccessController.doPrivileged(Native Method) [INFO] [talledLocalContainer] [^] at java.net.URLClassLoader.findResource(URLClassLoader.java:548) [INFO] [talledLocalContainer] [^] at org.apache.catalina.loader.WebappClassLoader.findResource(WebappClassLoader.java:1301) [INFO] [talledLocalContainer] [^] at org.apache.catalina.loader.WebappClassLoader.getResource(WebappClassLoader.java:1439) [INFO] [talledLocalContainer] [^] at com.atlassian.core.util.ClassLoaderUtils.getResource(ClassLoaderUtils.java:113) [INFO] [talledLocalContainer] [^] at com.atlassian.velocity.DefaultVelocityManager.exceptionHandling(DefaultVelocityManager.java:137) [INFO] [talledLocalContainer] [^] at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBodyImpl(DefaultVelocityManager.java:123) [INFO] [talledLocalContainer] [^] at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBody(DefaultVelocityManager.java:97) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.toWriterImpl(DefaultVelocityTemplatingEngin e.java:146) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.asHtml(DefaultVelocityTemplatingEngine.java :134) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.writeHtml(AbstractJiraModuleDescriptor.java:133) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.getHtml(AbstractJiraModuleDescriptor.java:109) [INFO] [talledLocalContainer] [^] at com.atlassian.plugins.tutorial.jira.reports.CreationReport.generateReportHtml(CreationReport.java:80) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.action.browser.ConfigureReport.doExecute(ConfigureReport.java:156) [INFO] [talledLocalContainer] [^] at webwork.action.ActionSupport.execute(ActionSupport.java:165) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:88) [INFO] [talledLocalContainer] [^] at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39) [INFO] [talledLocalContainer] [^] at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31) [INFO] [talledLocalContainer] [^] at webwork.interceptor.ChainedInterceptor.intercept(ChainedInterceptor.java:16) [INFO] [talledLocalContainer] [^] at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:35) [INFO] [talledLocalContainer] [^] at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:225) [INFO] [talledLocalContainer] [^] at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:154) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.service(JiraWebworkActionDispatcher.java:152) [INFO] [talledLocalContainer] [^] at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.XContentTypeOptionsNoSniffFilter.doFilter(XContentTypeOptionsNoSniffFilter.java:22) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.tzdetect.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:39) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.baseurl.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:38) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:106) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:90) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter(XsrfTokenAdditionRequestFilter.java:54) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:181) [INFO] [talledLocalContainer] [^] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:85) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.SitemeshPageFilter.doFilter(SitemeshPageFilter.java:124) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:239) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:100) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:172) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:99) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:19) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:71) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) [INFO] [talledLocalContainer] [^] at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) [INFO] [talledLocalContainer] [^] at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) [INFO] [talledLocalContainer] [^] at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:88) [INFO] [talledLocalContainer] [^] at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:59) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.gzip.JiraGzipFilter.doFilter(JiraGzipFilter.java:55) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.fastdev.AutoReloadFilter.doFilter(AutoReloadFilter.java:63) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter(JiraAnalyticsFilter.java:40) [INFO] [talledLocalContainer] [^] at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:70) [INFO] [talledLocalContainer] [^] at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:78) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) [INFO] [talledLocalContainer] [^] at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:41) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter(PathMatchingEncodingFilter.java:49) [INFO] [talledLocalContainer] [^] at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:79) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter(MultipartBoundaryCheckFilter.java:41) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:87) [INFO] [talledLocalContainer] [^] at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(JiraFirstFilter.java:60) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [INFO] [talledLocalContainer] [^] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) [INFO] [talledLocalContainer] [^] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) [INFO] [talledLocalContainer] [^] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) [INFO] [talledLocalContainer] [^] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [INFO] [talledLocalContainer] [^] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) [INFO] [talledLocalContainer] [^] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) [INFO] [talledLocalContainer] [^] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) [INFO] [talledLocalContainer] [^] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) [INFO] [talledLocalContainer] [^] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [INFO] [talledLocalContainer] [^] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [INFO] [talledLocalContainer] [^] at java.lang.Thread.run(Thread.java:745) [INFO] [talledLocalContainer] [^] ,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
FieldVisibilityBean removed from JIRA since v 6.2. Please use FieldVisibilityManager instead:
https://docs.atlassian.com/jira/latest/com/atlassian/jira/web/FieldVisibilityManager.html
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for the reply. I know it is removed and it needs to use FieldVisibilityManager. Could you kindly show me how I could use FieldVisibilityManager in this tutorial to replace FieldVisibilityBean? I could not find any example of it. Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I looked through the tutorial and I see that FieldVisibilityBean is put to the map that is passed to the velocity view and there it's not used. So you are safe to remove: "fieldVisibility", new FieldVisibilityBean(), Or if you know really want to use fieldVisibilityManager on your view, just pass it instead of FieldVisibilityBean: add class property: private final FieldVisibilityManager fieldVisibilityManager; add it to constructor so it's injected: public SingleLevelGroupByReportExtended(...final FieldVisibilityManager fieldVisibilityManager) { ... this.fieldVisibilityManager = fieldVisibilityManager; } and pass it instead of FieldVisibilityBean: "fieldVisibility", fieldVisibilityManager,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks. I fixed the compile error by pass the fieldVisibilityManager. I also fixed the other compile error in the constructor of OneDimensionalDocIssueHitCollector by having the constructor to take the FieldManager and ProjectManager. However, when I run the the report, I got the following exception and receive a technical problem page: java.lang.IllegalArgumentException: name at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:494) at sun.misc.URLClassPath.findResource(URLClassPath.java:176) at java.net.URLClassLoader$2.run(URLClassLoader.java:551) at java.net.URLClassLoader$2.run(URLClassLoader.java:549) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findResource(URLClassLoader.java:548) at org.apache.catalina.loader.WebappClassLoader.findResource(WebappClassLoader.java:1301) at org.apache.catalina.loader.WebappClassLoader.getResource(WebappClassLoader.java:1439) at com.atlassian.core.util.ClassLoaderUtils.getResource(ClassLoaderUtils.java:113) at com.atlassian.velocity.DefaultVelocityManager.exceptionHandling(DefaultVelocityManager.java:137) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBodyImpl(DefaultVelocityManager.java:123) at com.atlassian.velocity.DefaultVelocityManager.writeEncodedBody(DefaultVelocityManager.java:97) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.toWriterImpl(DefaultVelocityTemplatingEngine.java:146) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.asHtml(DefaultVelocityTemplatingEngine.java:134) at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.writeHtml(AbstractJiraModuleDescriptor.java:133) at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.getHtml(AbstractJiraModuleDescriptor.java:109) at com.atlassian.plugins.tutorial.jira.reports.CreationReport.generateReportHtml(CreationReport.java:80) at com.atlassian.jira.web.action.browser.ConfigureReport.doExecute(ConfigureReport.java:156) at webwork.action.ActionSupport.execute(ActionSupport.java:165) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:88) at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39) at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31) at webwork.interceptor.ChainedInterceptor.intercept(ChainedInterceptor.java:16) at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:35) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:225) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:154) at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.service(JiraWebworkActionDispatcher.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) Is there a working example of tutorial for creating a jira report plug-in for the latest version of 6.3.15?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Nobody told that JIRA plugin development is easy :-). I think it's some problem with velocity but can only guess. "java.lang.IllegalArgumentException: name" could be caused by missing quotes: <h2>$i18n.getText('report.singlelevelgroupby.mapper.filterid.name'): Please try to change to: <h2>$i18n.getText("report.singlelevelgroupby.mapper.filterid.name"): If it does not help, please post the formatted velocity file. You will need to post new answer and use code formatting.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
What did you do after un commenting? Did you create a new fresh project? The instructions are valid for new SDK as well.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I followed the tutorial straight and it was uncommented. Also I find another thread saying FieldVisibilityBean was removed from the latest JIRA and tell me to use FieldVisibilityManager. However, I cannot find any example how to use FieldVisibilityManager in this example. Besides, the constructor of OneDimensionalDocIssueHitCollector also not up-to-date and I don't know what is the proper way to construct it for the latest JIRA
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.