/**
  * This is called after the issue has been stored on disk and allows us a chance to create change
  * records for the update.
  *
  * @param fieldLayoutItem for this field within this context.
  * @param issue Issue this field is part of.
  * @param modifiedValue new value to set field to. Cannot be null.
  * @param issueChangeHolder an object to record any changes made to the issue by this method.
  */
 public void updateValue(
     FieldLayoutItem fieldLayoutItem,
     Issue issue,
     ModifiedValue modifiedValue,
     IssueChangeHolder issueChangeHolder) {
   Object newValue = modifiedValue.getNewValue();
   if (newValue != null) {
     if (isIssueLinkingEnabled()) {
       IssueLinkingValue issueLinkingValue = (IssueLinkingValue) newValue;
       IssueLinkService.AddIssueLinkValidationResult validationResult =
           issueLinkingValue.getValidationResult();
       if (validationResult != null && validationResult.isValid()) {
         issueLinkService.addIssueLinks(authenticationContext.getLoggedInUser(), validationResult);
       }
     }
   }
 }
  @Override
  public void updateValue(
      FieldLayoutItem fieldLayoutItem,
      Issue issue,
      ModifiedValue modifiedValue,
      IssueChangeHolder issueChangeHolder) {
    // all comment creations are seen as an update
    Map<String, Object> commentParams = (Map<String, Object>) modifiedValue.getNewValue();
    String body = (String) commentParams.get(getId());

    // allow the renderer for this field a change to transform the value
    String rendererType = (fieldLayoutItem != null) ? fieldLayoutItem.getRendererType() : null;
    body = (String) rendererManager.getRendererForType(rendererType).transformFromEdit(body);

    if (commentParams.containsKey(EDIT_COMMENT)) {
      editComment(issueChangeHolder, commentParams, body);
    } else if (commentParams.containsKey(REMOVE_COMMENT)) {
      removeComment(issueChangeHolder, commentParams);
    } else {
      if (StringUtils.isNotBlank(body)) {
        createComment(issue, issueChangeHolder, commentParams, body);
      }
    }
  }