JIRA Enhancer Plugin

Name JIRA Enhancer Plugin
Version 1.4.0
Product Versions 3.6 - 3.12
Author(s) Tuncay Senturk
Homepage  
Price FREE
IssueTracking http://developer.atlassian.com/jira/browse/JEP
Download JAR Get jar file according to your JIRA version below

Index

Description/Features

This plug-in adds custom fields of "Last closed date/user", "Last resolved date/user", "Reopening count of an issue", searching capabilities according to these custom fields, and a report of "User/Group action tracking report"

A plugin that allows user

  • add custom fields of
    • Last Closure Date : Shows issue' s last closing date|
    • Last Closure User : Shows the user that closed the issue|
    • Last Resolution Date : Shows issue' s last resolution date|
    • Last Resolution User : Shows the user that resolved the issue|
    • Reopening Counter : Shows the reopening count and history of the issue|
  • show tab of reopenings history
  • search issues by above custom fields
  • display a histogram of issues that user/group modified over a specified period

Installation and Usage

  1. Put plug-in's newest jar file to your WEB-INF/lib folder.
    Get jar file according to your JIRA version below.
  2. Restart JIRA
  3. See that you have plug-in installed in Administration -> Plugins page



  4. Add custom fields that you want in your JIRA by using Administration -> Custom Fields -> Add Custom Field## Last Closed Date
    1. Last Closed User



    2. Last Resolution Date
    3. Last Resolution User
    4. Reopening Counter
      All custom fields may be seen as follows :



      To see custom fields as a view in issue, add field to screen from Administration -> Screens menu item and Configure as below. I only added "Reopnening History" to be seen in issue' s page.

      If you want, you may add other custom fields to your screen.
      After these steps you may need to re-index by Administration -> Indexing -> re-Index

Examples

Navigation bar with custom fields

If you add custom fields to navigation bar, you may see JIRA navigator as below



Filter search panel

And also you may see filters at left such as below


Reopenings tab

In an issue view, you may find reopenings history as below



User/Group Tracking Report

  • Click Report link in project's page and the criterias page will be seen as below



  • Fill the criterias and press 'Next' button results will be seen as below. You can freely change descriptions by editing userhistory_report.properties file and regenerating jar file. Or you can edit user-history-report.vm file to change layout of the html page.



Version History

Version Binary Source JIRA Version(s)
1.4.0 mkk-jira-plugin-1.4.0-Jira-3.10.jar mkk-jira-plugin-1.4.0-Jira-3.10-src.jar JIRA 3.9 - 3.12
1.4.0 mkk-jira-plugin-1.4.0-Jira-3.8.jar mkk-jira-plugin-1.4.0-Jira-3.8-src.jar JIRA 3.7 - 3.9
1.3.1 mkk-jira-plugin-1.3.1-Jira-3.10.jar mkk-jira-plugin-1.3.1-Jira-3.10-src.jar JIRA 3.9 - 3.12
1.3.1 mkk-jira-plugin-1.3.1-Jira-3.8.jar mkk-jira-plugin-1.3.1-Jira-3.8-src.jar JIRA 3.7 - 3.9
1.3.1 mkk-jira-plugin-1.3.1-Jira-3.6.jar mkk-jira-plugin-1.3.1-Jira-3.6-src.jar JIRA 3.6.x
1.3.0 mkk-jira-plugin-1.3.0-Jira-3.10.jar mkk-jira-plugin-1.3.0-src-Jira-3.10.jar JIRA 3.9 - 3.12
1.3.0 mkk-jira-plugin-1.3.0-Jira-3.8.jar mkk-jira-plugin-1.3.0-src-Jira-3.8.jar JIRA 3.7 - 3.9
1.3.0 mkk-jira-plugin-1.3.0-Jira-3.6.jar mkk-jira-plugin-1.3.0-src-Jira-3.6.jar JIRA 3.6.x
1.2.4 mkk-jira-plugin-1.2.4.jar mkk-jira-plugin-1.2.4_src.jar JIRA 3.9 - 3.12
1.2.3 mkk-jira-plugin-1.2.3.jar
mkk-jira-plugin-1.2.3_src.zip
JIRA 3.9 - 3.12
1.2.2.2 mkk-jira-plugin-1.2.2.2.jar
mkk-jira-plugin-1.2.2.2_src.jar
JIRA 3.7 - 3.9
1.2.2 mkk-jira-plugin-1.2.2.jar
mkk-jira-plugin-1.2.2_src.zip
JIRA 3.7 - 3.9
1.2.1 mkk-jira-plugin-1.2.1.jar
JIRA 3.7 - 3.9
1.2 mkk-jira-plugin-1.2.jar src-1.2.zip JIRA 3.7 - 3.9
1.1 mkk-jira-plugin-1.1.jar
src-1.1.rar JIRA 3.6.x
1.0 mkk-jira-plugin-1.0.jar
src.rar_1.0.jar
JIRA 3.6.x
  • Version 1.4.0
    • Imported resolved bugs cause NullPointerException, SOAP calls fail (JEP-11)
    • History Report's labels must get labels from i18n file (JEP-13)
    • Displaying reopening history in "Reopening Histories" tab (JEP-16)

  • Version 1.3.1
    • Custom fields are now displayed in issue' s detail page (JEP-5)
    • Last Resolution custom fields are not only working with custom JIRA workflow, but also with custom work-flows (JEP-4, JEP-9)
    • Displaying the 'Reopening History' field on the view issue screen even when no reopening history exists problem resolved (JEP-8)

  • Version 1.3.0
    • "Reopening counter" custom field has been added.
    • Search ability to "Reopening counter" custom field has been added.
    • User or Group Tracking Report' s HTML layout has been changed.

  • Version 1.2.4 (mkk-jira-plugin-1.2.4.jar)
    • Excel support for "User or Group Tracking Report" has been added

  • Version 1.2.3 (mkk-jira-plugin-1.2.3.jar)
    • User or Group Tracking Report has been re-factored to work with new api

  • Version 1.2.2.2 (mkk-jira-plugin-1.2.2.2.jar)
    • Excel support for "User or Group Tracking Report" has been added

  • Version 1.2.2 (mkk-jira-plugin-1.2.2.jar)
    • Fixed label problem with 'statistics portlet' in issue JRA-13075

  • Version 1.2.1 (mkk-jira-plugin-1.2.1.jar)
    • Fixed NullPointerException on date formatting

  • Version 1.2 (mkk-jira-plugin-1.2.jar)
    • Works with JIRA 3.7 and 3.8
    • Re-factored to compile with new api
    • Some bugs have been fixed

  • Version 1.1 (mkk-jira-plugin-1.1.jar)
    • Last Resolution / Closure Group property has been added.
    • User / Group Tracking Report has been added.
    • Some bugs have been fixed.

Open Issues

Atlassian Developer Network JIRA (3 issues)
T Key Summary Reporter Status
Bug JEP-10 Start / End date required issue Mark Thomas Open
Improvement JEP-12 add reason on Reopening history of an issue gracee Open
Bug JEP-15 Slowdown when fields are added to Issue Navigator Josh LeBow Open

Screenshots



Labels

plugin plugin Delete
reopening reopening Delete
counter counter Delete
resolution resolution Delete
resolved resolved Delete
closed closed Delete
user user Delete
date date Delete
history history Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Jan 01, 2007

    Collin Moore says:

    would it be possible to upgrade this to work with 3.7?

    would it be possible to upgrade this to work with 3.7?

  2. Jan 08, 2007

    Tuncay Senturk says:

    Sure. just edit atlassian-plugin.xml jar file and change <application-versio...

    Sure. just edit atlassian-plugin.xml jar file and change

    <application-version min="3.4" max="3.6"/>

    element with

    <application-version min="3.4" max="3.7"/>

    Then restart JIRA.

  3. Jan 08, 2007

    Collin Moore says:

    tried that and I get this error *Error:*There was a problem loading the descrip...

    tried that and I get this error

    *Error:*There was a problem loading the descriptor for module 'customfield-type' in plugin 'MKK JIRA Plugin (Resolution & Closure Dates / Users)'. Error retrieving dependency of class: tr.com.mkk.plugin.jira.LastClosedDateCFType. Missing class: com/atlassian/jira/issue/ActionManager

    1. Jan 09, 2007

      Tuncay Senturk says:

      Hi Collin, Sorry about that. I just recognized that Jira 3.7 API has some chang...

      Hi Collin,

      Sorry about that. I just recognized that Jira 3.7 API has some changes such as ActionManager interface. I used this interface in 3.6.5 api. i am gonna fix it if i have time to understand new design api.

      1. Mar 01, 2007

        Matthew Janulewicz says:

        Any chance this update is forthcoming? (sorry to nag.) This plugin is rather use...

        Any chance this update is forthcoming? (sorry to nag.) This plugin is rather useful but we can't use it with 3.7.1.

        -mattyj

        1. Mar 01, 2007

          Dave Borgeest says:

          second that, as it blocks the reporting plugin

          second that, as it blocks the reporting plugin

          1. Mar 27, 2007

            Tuncay Senturk says:

            Hi, Sorry that i could not deal with bugs, but at last i upgraded plugin to wor...

            Hi,

            Sorry that i could not deal with bugs, but at last i upgraded plugin to work with JIRA 3.7 and above.

            thx

  4. Mar 01, 2007

    Igor Skubailo says:

    We are developing some rpc-jira-plugin for our instance of jira. After installat...

    We are developing some rpc-jira-plugin for our instance of jira.
    After installation of mkk-jira-plugin-1.0.jar our plugin crash.

    I'm researching this problem!
    During call of method

    RemoteIssue issue = issueService.getIssueById(user, issue);

    we've got an exception:

    (java.lang.RuntimeException) java.lang.RuntimeException: class tr.com.mkk.plugin.jira.LastResolvedDateCFType passed an invalid value of type: class java.sql.Timestamp

    Looks like the problem is in LastResolvedDateCFType class. There is the following method:

    public String getStringFromSingularObject(Object value) {
    assertObjectImplementsType(User.class, value);
    return userConverter.getString((User) value);
    }

    but real type of passed parameter value is java.sql.Timestamp and NOT com.opensymphony.user.User
    So "assertObjectImplementsType(User.class, value)" throws an RuntimeException.
    As for me method "getStringFromSingularObject" should convert Timestamp to String
    and "getSingularObjectFromString" vice versa: String to Timestamp.
    The same problem with LastClosedDateCFType class.

    After I change that our plugin brings to life. And yours plugin also work good as before.

    Is it a bug or I don't understund something?

  5. Mar 21, 2007

    Daniel Rosły says:

    It is a bug. Please notice that class "LastClosedDateCFType" is almost exact co...

    It is a bug.

    Please notice that class "LastClosedDateCFType" is almost exact copy of class "LastClosedUserCFType" and author probably has forgotten to change some methods.

     General question to author:

    Can I submitt here a new version of this plugin with this error fixed and refactored to work with newest JIRA (3.8) ????

  6. Mar 28, 2007

    Tuncay Senturk says:

    Sure, its a copy-paste bug I fixed it in 1.2 version, thx 

    Sure, its a copy-paste bug

    I fixed it in 1.2 version,

    thx 

  7. May 04, 2007

    Thomas Crowder says:

    Great plugin, has helped a lot! However, it only works with some of our issu...

    Great plugin, has helped a lot! However, it only works with some of our issue types, as we have some custom workflows.

    These workflows don't have a 'Resolved' status so the field doesn't work in this case (However, we still set the issue resolution, which effectively makes the issue 'Resolved'). I would suggest that a better way to determine when the issue is 'Resolved' is when the Resolution is set to something other than 'UNRESOLVED', rather than relying on the workflow status.

    I'm using Jira 3.6.3 with v1.1 of this plugin, though from the source it looks as if the same would be true in v1.2.

    Just my 2 pence, and to save anyone in a similar situation the confusion I went through!

  8. May 17, 2007

    Anna Berns says:

    We've installed the plugin and created the custom fields, can see them in search...

    We've installed the plugin and created the custom fields, can see them in search/filter and navigator columns, but are getting the following errors when we try to create new items. Any ideas on how to fix this? (We're running the plugin vsn 1.2 and Jira vsn 3.7.4 on this instance -- do you know if the issue might be fixed with Jira 3.8?)  In case it's useful, we're running Java Version 1.5.0_11.

    Step 2 of 2: Enter the details of the issue...
    Errors

    java.lang.NullPointerException at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1076) at java.text.DateFormat.parse(DateFormat.java:333) at tr.com.mkk.plugin.jira.LastResolvedDateCFType.getSingularObjectFromString(LastResolvedDateCFType.java:50) at com.atlassian.jira.issue.customfields.impl.CalculatedCFType.getValueFromCustomFieldParams(CalculatedCFType.java:62) at com.atlassian.jira.issue.fields.CustomFieldImpl.updateIssue(CustomFieldImpl.java:844) at com.atlassian.jira.web.action.issue.IssueCreationHelperBeanImpl.updateIssueFromFieldValuesHolder(IssueCreationHelperBeanImpl.java:154) at com.atlassian.jira.web.action.issue.CreateIssueDetails.doExecute(CreateIssueDetails.java:108) at webwork.action.ActionSupport.execute(ActionSupport.java:153) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:209) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)

    If we remove the Resolved Date field, we get the same error on Closed Date:

    java.lang.NullPointerException at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1076) at java.text.DateFormat.parse(DateFormat.java:333) at tr.com.mkk.plugin.jira.LastClosedDateCFType.getSingularObjectFromString(LastClosedDateCFType.java:48) at com.atlassian.jira.issue.customfields.impl.CalculatedCFType.getValueFromCustomFieldParams(CalculatedCFType.java:62) at com.atlassian.jira.issue.fields.CustomFieldImpl.updateIssue(CustomFieldImpl.java:844) at com.atlassian.jira.web.action.issue.IssueCreationHelperBeanImpl.updateIssueFromFieldValuesHolder(IssueCreationHelperBeanImpl.java:154) at com.atlassian.jira.web.action.issue.CreateIssueDetails.doExecute(CreateIssueDetails.java:108) at webwork.action.ActionSupport.execute(ActionSupport.java:153) at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54) at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:209) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)

    1. May 21, 2007

      Tuncay Senturk says:

      You can get this exception if the "Date" field is null. Date field must not be n...

      You can get this exception if the "Date" field is null. Date field must not be null for jira actions.

    2. Jun 12, 2007

      Peter van den Berkmortel says:

      In JIRA Enterprise 3.9.1 we get this same error when creating new issues for som...

      In JIRA Enterprise 3.9.1 we get this same error when creating new issues for some projects - notably projects that do not use Project Roles.

      Removing the field of type LastClosedDateCFType solves this problem! So there is definitely something wrong with this field!

  9. Jun 04, 2007

    Anna Berns says:

    Thanks Tuncay -- we're still confused as to which date you are referring...

    Thanks Tuncay -- we're still confused as to which date you are referring to -- when we initially create a new item in Jira, the resolve and close dates will (by definition) be null.  Is there another date that we need to make sure is not null?  For issues we created before configuring the new custom fields, I can see the resolve/close dates just fine. 

    1. Jun 07, 2007

      Tuncay Senturk says:

      In JIRA all actions are stored in tables called "changegroup" and "changeitem". ...

      In JIRA all actions are stored in tables called "changegroup" and "changeitem".

      This plugin is searching those changes by the tables mentioned above.
      Every resolved or closed issue has records in these tables.

      In changegroup table there is a CREATION date field. This field is filled by JIRA and must not be null.
      Can you check this field? The error may be related with this null field.

      In code (if you looked at source files, you may see) at LastResolvedDateCFType class

      in getSingularObjectFromString method (where you get NullPointerException) there is a line as below

      new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").parse(string).getTime());

      here, i assume that your string parameter may be null and in DateFormat you get NullPointerException.

      I sent a new plugin version to you which checks for nulls before parsing it to a Timestamp in this method as below.

      if (null == string) return null;

      i am not sure, but i hope it would work.

      cheers

  10. Jun 28, 2007

    Collin Moore says:

    trying to run the MKK User History Report and I get the following errors A val...

    trying to run the MKK User History Report and I get the following errors

    A valid "Start Date" is required to generate this report.

    any ideas?

    1. Jun 29, 2007

      Tuncay Senturk says:

      Obviosly you must get this error if you do not enter a Start Date field to repor...

      Obviosly you must get this error if you do not enter a Start Date field to report.

      There is only a control of null values to generate this error.

      1. Jul 12, 2007

        Collin Moore says:

        I use the calender to set a start and end date and get errors for both.

        I use the calender to set a start and end date and get errors for both.

  11. Jul 06, 2007

    Will Rau says:

    First, let me say this is a very handy plugin. It would be awesome if there was...

    First, let me say this is a very handy plugin.

    It would be awesome if there was a version of this that actually saved values to the issue record for last resolved/closed date/user.  This would allow folks to create their own reports, include these fields on dashboards in pie charts, etc. 

     I think you'd have to implement a service to do it, but that would give one the most flexibility when it came to using the fields.

     Just a thought. . .

  12. Jul 11, 2007

    Ray Maxwell says:

    I am getting the same errors in the plugin that are listed above i.e  Erro...

    I am getting the same errors in the plugin that are listed above i.e

     Errors

    * java.lang.NullPointerException at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1076)
    at java.text.DateFormat.parse(DateFormat.java:333)
    at tr.com.mkk.plugin.jira.LastResolvedDateCFType.getSingularObjectFromString(LastResolvedDateCFType.java:50)
    at com.atlassian.jira.issue.customfields.impl.CalculatedCFType.getValueFromCustomFieldParams(CalculatedCFType.java:62)
    at com.atlassian.jira.issue.fields.CustomFieldImpl.updateIssue(CustomFieldImpl.java:844)
    at com.atlassian.jira.web.action.issue.IssueCreationHelperBeanImpl.updateIssueFromFieldValuesHolder(IssueCreationHelperBeanImpl.java:154)
    at com.atlassian.jira.web.action.issue.CreateIssueDetails.doExecute(CreateIssueDetails.java:108)
    at webwork.action.ActionSupport.execute(ActionSupport.java:153)
    at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:54)
    at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:132)
    at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:209)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
    at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
    at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
    at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
    at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
    at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:419)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
    at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
    at com.caucho.util.ThreadPool.run(ThreadPool.java:433)
    at java.lang.Thread.run(Thread.java:595)

    You mentioned above that there was a new jar file that might fix this issue could you post it here or get it to me.

     Thanks.

  13. Jul 11, 2007

    Anna Berns says:

    FYI, the new jar did fix the issues we were seeing (above) -- thanks!...

    FYI, the new jar did fix the issues we were seeing (above) -- thanks!