public static Collection<CustomFieldOptionJsonBean> shortBeans(final Collection<Option> allowedValues, final JiraBaseUrls baseUrls) { Collection<CustomFieldOptionJsonBean> result = Lists.newArrayListWithCapacity(allowedValues.size()); for (Option from : allowedValues) { result.add(CustomFieldOptionJsonBean.shortBean(from, baseUrls)); } return result; } }
/** * * @return null if the input is null */ public static CustomFieldOptionJsonBean shortBean(final Option option, final JiraBaseUrls urls) { if (option == null) { return null; } final CustomFieldOptionJsonBean bean = new CustomFieldOptionJsonBean(); bean.self = urls.restApi2BaseUrl() + "customFieldOption/" + JiraUrlCodec.encode(option.getOptionId().toString()); bean.value = option.getValue(); bean.id = String.valueOf(option.getOptionId()); List<Option> children = option.getChildOptions(); if (children != null && !children.isEmpty()) { bean.children = shortBeans(children, urls); } return bean; }
@JsonIgnore public void setId(Long id) { setId(String.valueOf(id)); }
/** * Method for building a cascading option with a specific child. * @return null if the input is null */ public static CustomFieldOptionJsonBean shortBean(final Option parent, final Option child, final JiraBaseUrls urls) { if (parent == null) { return null; } final CustomFieldOptionJsonBean bean = new CustomFieldOptionJsonBean(); bean.self = urls.restApi2BaseUrl() + "customFieldOption/" + JiraUrlCodec.encode(parent.getOptionId().toString()); bean.value = parent.getValue(); bean.id = String.valueOf(parent.getOptionId()); bean.child = shortBean(child, urls); return bean; }
@Override public JsonData getJsonDefaultValue(IssueContext issueCtx, CustomField field) { FieldConfig config = field.getRelevantConfig(issueCtx); Collection<Option> defaultValue = (Collection<Option>) field.getCustomFieldType().getDefaultValue(config); return defaultValue == null ? null : new JsonData(CustomFieldOptionJsonBean.shortBeans(defaultValue, jiraBaseUrls)); }
if (bean.getId() != null) parent = findOptionById(bean.getId(), field, errors); if (parent == null || !allowedOptions.contains(parent)) errors.addError(field.getId(), i18nHelper.getText("rest.custom.field.option.id.invalid", bean.getId()), ErrorCollection.Reason.VALIDATION_FAILED); parent = null; String value = bean.getValue(); if (value != null) CustomFieldOptionJsonBean beanChild = bean.getChild(); if (beanChild != null) if (beanChild.getId() != null) child = findOptionById(beanChild.getId(), field, errors); if (child == null || !children.contains(child)) errors.addError(field.getId(), i18nHelper.getText("rest.custom.field.child.option.id.invalid", beanChild.getId()), ErrorCollection.Reason.VALIDATION_FAILED); else if (beanChild.getValue() != null) if (option.getValue().equals(beanChild.getValue())) errors.addError(field.getId(), i18nHelper.getText("rest.custom.field.child.option.value.invalid", beanChild.getValue()), ErrorCollection.Reason.VALIDATION_FAILED);
@Override public FieldTypeInfo getFieldTypeInfo(FieldTypeInfoContext fieldTypeInfoContext) { // Get the allowed options FieldConfig config = ((CustomField) fieldTypeInfoContext.getOderableField()).getRelevantConfig(fieldTypeInfoContext.getIssueContext()); Options options = optionsManager.getOptions(config); Collection<CustomFieldOptionJsonBean> optionBeans = CustomFieldOptionJsonBean.shortBeans(options, jiraBaseUrls); return new FieldTypeInfo(optionBeans, null); }
@Override public FieldTypeInfo getFieldTypeInfo(FieldTypeInfoContext fieldTypeInfoContext) { // Get the allowed options FieldConfig config = ((CustomField) fieldTypeInfoContext.getOderableField()).getRelevantConfig(fieldTypeInfoContext.getIssueContext()); Options options = optionsManager.getOptions(config); Collection<CustomFieldOptionJsonBean> optionBeans = CustomFieldOptionJsonBean.shortBeans(options, jiraBaseUrls); return new FieldTypeInfo(optionBeans, null); }
@Override public FieldJsonRepresentation getJsonFromIssue(CustomField field, Issue issue, boolean renderedVersionRequested, @Nullable FieldLayoutItem fieldLayoutItem) { Map<String, Option> options = getValueFromIssue(field, issue); if (options == null) { return new FieldJsonRepresentation(new JsonData(null)); } Option parent = options.get(PARENT_KEY); Option child = options.get(CHILD_KEY); return new FieldJsonRepresentation(new JsonData(CustomFieldOptionJsonBean.shortBean(parent, child, jiraBaseUrls))); }
@Override public FieldTypeInfo getFieldTypeInfo(FieldTypeInfoContext fieldTypeInfoContext) { // Get the allowed options FieldConfig config = ((CustomField) fieldTypeInfoContext.getOderableField()).getRelevantConfig(fieldTypeInfoContext.getIssueContext()); Options options = optionsManager.getOptions(config); Collection<CustomFieldOptionJsonBean> optionBeans = CustomFieldOptionJsonBean.shortBeans(options, jiraBaseUrls); return new FieldTypeInfo(optionBeans, null); }
@Override public JsonData getJsonDefaultValue(IssueContext issueCtx, CustomField field) { FieldConfig config = field.getRelevantConfig(issueCtx); Option defaultValue = (Option) field.getCustomFieldType().getDefaultValue(config); return defaultValue == null ? null : new JsonData(CustomFieldOptionJsonBean.shortBean(defaultValue, jiraBaseUrls)); } }
@Override public FieldJsonRepresentation getJsonFromIssue(CustomField field, Issue issue, boolean renderedVersionRequested, @Nullable FieldLayoutItem fieldLayoutItem) { Collection<Option> valueFromIssue = getValueFromIssue(field, issue); if (valueFromIssue == null) { return new FieldJsonRepresentation(new JsonData(null)); } return new FieldJsonRepresentation(new JsonData(CustomFieldOptionJsonBean.shortBeans(valueFromIssue, jiraBaseUrls))); }
@Override public FieldJsonRepresentation getJsonFromIssue(CustomField field, Issue issue, boolean renderedVersionRequested, @Nullable FieldLayoutItem fieldLayoutItem) { Option valueFromIssue = getValueFromIssue(field, issue); if (valueFromIssue == null) { return new FieldJsonRepresentation(new JsonData(null)); } return new FieldJsonRepresentation(new JsonData(CustomFieldOptionJsonBean.shortBean(valueFromIssue, jiraBaseUrls))); }
@Override public JsonData getJsonDefaultValue(IssueContext issueCtx, CustomField field) { FieldConfig fieldConfig = field.getRelevantConfig(issueCtx); final Object o = genericConfigManager.retrieve(DEFAULT_VALUE_TYPE, fieldConfig.getId().toString()); if (o != null) { final CustomFieldParams params = new CustomFieldParamsImpl(fieldConfig.getCustomField(), o); Map<String, Option> options = getOptionMapFromCustomFieldParams(params); if (options == null) { return new JsonData(null); } Option parent = options.get(PARENT_KEY); Option child = options.get(CHILD_KEY); return new JsonData(CustomFieldOptionJsonBean.shortBean(parent, child, jiraBaseUrls)); } else { return null; } } }