Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-28076

NullPointerException selecting NONE for Cascading Select Field

    XMLWordPrintable

Details

    Description

      NOTE: This bug report is for JIRA Server. Using JIRA Cloud? See the corresponding bug report.

      Steps to reproduce

      1. Create a custom field Cascading Select
      2. Add the options into it
      3. Create an issue
      4. Select 'NONE' for the Cascading Select custom field
        The issue successfully created without exception
      5. Edit the same issue and select 'NONE' for the Cascading Select custom field again
        The following error appear and the update fail:
        2012-05-04 18:18:58,904 http-8503-6 ERROR kahloun.foong 1098x176x1 2zrt38 127.0.0.1 /secure/QuickEditIssue.jspa [jira.bc.issue.DefaultIssueService] Exception occurred editing issue: java.lang.NullPointerException
        java.lang.NullPointerException
        	at com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType.getChangelogValue(CascadingSelectCFType.java:390)
        	at com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType.getChangelogValue(CascadingSelectCFType.java:69)
        	at com.atlassian.jira.issue.fields.CustomFieldImpl.getChangelogValue(CustomFieldImpl.java:378)
        	at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:418)
        	at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:399)
        	at com.atlassian.jira.issue.managers.DefaultIssueManager.updateFieldValues(DefaultIssueManager.java:589)
        	at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:554)
        	at com.atlassian.jira.bc.issue.DefaultIssueService.update(DefaultIssueService.java:272)
        	at com.atlassian.jira.bc.issue.DefaultIssueService.update(DefaultIssueService.java:246)
        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        

      Workaround

      1. Shutdown JIRA
      2. Backup and modify the file <jira-install>\atlassian-jira\WEB-INF\classes\templates\plugins\fields\edit\edit-cascadingselect.vm from
        <select class="select cascadingselect-parent" id="${customField.id}" name="${customField.id}">
                <option class="default-option" value="">$i18n.getText("common.words.pleaseselect")</option>
                <option class="default-option" value="-1">$i18n.getText("common.words.none")</option>
                #foreach ($option in $configs.options.rootOptions)
                    #if(!$option.disabled || $option.disabled == false || ($selectedParent && $selectedParent == $option.optionId.toString()))
                        <option class="option-group-$option.optionId" value="$option.optionId"#if ($selectedParent && $selectedParent == $option.optionId.toString()) selected="selected"#end>$cfValueEncoder.encodeForHtml($option.value)</option>
                    #end
                #end
            </select>
            <select class="select cascadingselect-child" id="${customField.id}:1" name="${customField.id}:1">
                <option class="default-option" value="">$i18n.getText("common.words.pleaseselect")</option>
                <option class="default-option" value="-1">$i18n.getText("common.words.none")</option>
                #foreach ($parentOption in $configs.options.rootOptions)
                    <option class="option-group-$parentOption.optionId" value="">$i18n.getText("common.words.pleaseselect")</option>
                    <option class="option-group-$parentOption.optionId" value="-1">$i18n.getText("common.words.none")</option>
        

        to

        <select class="select cascadingselect-parent" id="${customField.id}" name="${customField.id}">
                <option class="default-option" value="">$i18n.getText("common.words.none")</option>
                <!-- <option class="default-option" value="-1">$i18n.getText("common.words.none")</option> -->
                #foreach ($option in $configs.options.rootOptions)
                    #if(!$option.disabled || $option.disabled == false || ($selectedParent && $selectedParent == $option.optionId.toString()))
                        <option class="option-group-$option.optionId" value="$option.optionId"#if ($selectedParent && $selectedParent == $option.optionId.toString()) selected="selected"#end>$cfValueEncoder.encodeForHtml($option.value)</option>
                    #end
                #end
            </select>
            <select class="select cascadingselect-child" id="${customField.id}:1" name="${customField.id}:1">
                <option class="default-option" value="">$i18n.getText("common.words.none")</option>
                <!-- <option class="default-option" value="-1">$i18n.getText("common.words.none")</option> -->
                #foreach ($parentOption in $configs.options.rootOptions)
                    <option class="option-group-$parentOption.optionId" value="">$i18n.getText("common.words.none")</option>
                    <!-- <option class="option-group-$parentOption.optionId" value="-1">$i18n.getText("common.words.none")</option> -->
        
      3. Restart JIRA
        This modification will remove the 'Please select' in the option and replace it with the word 'None'

      Attachments

        1. Akward search result.jpg
          Akward search result.jpg
          34 kB
        2. screenshot-1.jpg
          screenshot-1.jpg
          27 kB

        Issue Links

          Activity

            People

              ajakubowski Adam Jakubowski (Inactive)
              klfoong Foong (Inactive)
              Votes:
              20 Vote for this issue
              Watchers:
              40 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: