Interface CustomFieldService
- All Known Implementing Classes:
CustomFieldServiceImpl
public interface CustomFieldService
Service for encapsulating custom field logic, especially the rather complex JIRA logic behind creating and working with these things.
- Author:
- ahennecke
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptioncom.atlassian.jira.issue.fields.config.FieldConfigScheme
associateCustomFieldContext
(com.atlassian.jira.issue.fields.CustomField customField, CustomFieldMetadata customFieldMetadata) Re-associates the custom field to the specified contexts.com.atlassian.jira.issue.fields.config.FieldConfigScheme
associateCustomFieldContext
(com.atlassian.jira.issue.fields.CustomField customField, Collection<IssueTypePrototype> issueTypes) Re-associates the custom field to the specified issue type specific contexts.com.atlassian.jira.issue.fields.CustomField
createCustomField
(CustomFieldMetadata fieldMetadata) Create a new custom field in JIRA with the given configurationcom.atlassian.jira.issue.fields.CustomField
getCustomField
(Long id) com.atlassian.jira.issue.fields.CustomField
getCustomField
(String id) <T extends com.atlassian.jira.issue.customfields.CustomFieldType>
List<com.atlassian.jira.issue.fields.CustomField>getCustomFields
(Class<T> type) Return all custom field instances which are of typeCustomFieldService
(but not sub-classes).<T extends com.atlassian.jira.issue.customfields.CustomFieldType>
List<com.atlassian.jira.issue.fields.CustomField>getCustomFields
(Class<T> type, boolean strict) Return all custom field instances which are of typeCustomFieldService
, or a subclass ofCustomFieldService
.boolean
isFieldApplicable
(com.atlassian.jira.issue.fields.CustomField customField, com.atlassian.jira.issue.Issue issue) Determine whether the given custom field is applicable for (i.e. configured for the context of) the specified issue.boolean
isFieldApplicable
(com.atlassian.jira.issue.fields.CustomField customField, Long projectId, String issueTypeId) Determine whether the given custom field is applicable for (i.e. configured for the context of) the specified project and issue type.boolean
isFieldVisible
(com.atlassian.jira.issue.fields.CustomField customField, com.atlassian.jira.issue.Issue issue) boolean
isSystemFieldName
(String fieldName) Check whether the passed field name matches a system field name (as used by JQL)boolean
isUniqueFieldName
(com.atlassian.jira.issue.fields.CustomField customField) Has the custom field a unique name?void
makeFieldRequired
(com.atlassian.jira.issue.fields.CustomField field) Make the specified field required for all configurationsvoid
removeCustomField
(com.atlassian.jira.issue.fields.CustomField customField) Removes the custom field and all associated data.void
setOptionsOrderFromMetadata
(com.atlassian.jira.issue.fields.CustomField customField, CustomFieldMetadata fieldMetadata) Set the order of Options in a CustomField based on the order of the Options in the CustomFieldMetadata.boolean
verifyCustomFieldExistsInDB
(Long customFieldId) Checks if a custom field with the given id exists in the databaseboolean
verifyCustomFieldExistsInDB
(String customFieldId) Checks if a custom field with the given id exists in the database.
-
Field Details
-
SERVICE
- See Also:
-
-
Method Details
-
createCustomField
Create a new custom field in JIRA with the given configuration -
associateCustomFieldContext
com.atlassian.jira.issue.fields.config.FieldConfigScheme associateCustomFieldContext(com.atlassian.jira.issue.fields.CustomField customField, CustomFieldMetadata customFieldMetadata) Re-associates the custom field to the specified contexts. Warning - this has not been extensively tested in the case where the custom field already has some contexts. This is intended to be used when the custom field's contexts have been removed due to the removal of an issue type, for example.- Parameters:
customField
- the field instancecustomFieldMetadata
- the metadata which contains context and issue type information
-
associateCustomFieldContext
com.atlassian.jira.issue.fields.config.FieldConfigScheme associateCustomFieldContext(com.atlassian.jira.issue.fields.CustomField customField, Collection<IssueTypePrototype> issueTypes) Re-associates the custom field to the specified issue type specific contexts. Warning - this has not been extensively tested in the case where the custom field already has some contexts. This is intended to be used when the custom field's contexts have been removed due to the removal of an issue type, for example.- Parameters:
customField
- the field instanceissueTypes
- issue type information
-
getCustomField
- Returns:
- the
CustomField
instance for the given ID, or null if it doesn't exist
-
getCustomField
- Returns:
- the
CustomField
instance for the given String ID, or null if it doesn't exist
-
getCustomFields
<T extends com.atlassian.jira.issue.customfields.CustomFieldType> List<com.atlassian.jira.issue.fields.CustomField> getCustomFields(Class<T> type) Return all custom field instances which are of typeCustomFieldService
(but not sub-classes).- Type Parameters:
T
- the CustomFieldType to check for. Equality checking is done on the custom field's type.- Parameters:
type
- the type to retrieve- Returns:
- the list of custom fields; never null
-
getCustomFields
<T extends com.atlassian.jira.issue.customfields.CustomFieldType> List<com.atlassian.jira.issue.fields.CustomField> getCustomFields(Class<T> type, boolean strict) Return all custom field instances which are of typeCustomFieldService
, or a subclass ofCustomFieldService
.- Type Parameters:
T
- the CustomFieldType to check for. Equality checking is done on the custom field's type.- Parameters:
type
- the type to retrievestrict
- set totrue
to do a strict equality check on the specified type.- Returns:
- the list of custom fields; never null
-
removeCustomField
void removeCustomField(com.atlassian.jira.issue.fields.CustomField customField) Removes the custom field and all associated data. Note that this requires the custom field to be fully recognisable in JIRA's current state (i.e. the CustomFieldType for this object must still be available).- Parameters:
customField
- the custom field object- See Also:
-
CustomFieldManager.removeCustomField(com.atlassian.jira.issue.fields.CustomField)
-
isUniqueFieldName
boolean isUniqueFieldName(com.atlassian.jira.issue.fields.CustomField customField) Has the custom field a unique name? Used whenever creating JQL to decide whether to use the name or the id of the field -
isSystemFieldName
Check whether the passed field name matches a system field name (as used by JQL) -
isFieldApplicable
boolean isFieldApplicable(com.atlassian.jira.issue.fields.CustomField customField, com.atlassian.jira.issue.Issue issue) Determine whether the given custom field is applicable for (i.e. configured for the context of) the specified issue.- Parameters:
customField
- the fieldissue
- the issue- Returns:
- whether or not the field is applicable
-
isFieldApplicable
boolean isFieldApplicable(com.atlassian.jira.issue.fields.CustomField customField, Long projectId, String issueTypeId) Determine whether the given custom field is applicable for (i.e. configured for the context of) the specified project and issue type.- Parameters:
customField
- the fieldprojectId
- the project the issue is inissueTypeId
- the issue type of the issue- Returns:
- whether or not the field is applicable
-
isFieldVisible
boolean isFieldVisible(com.atlassian.jira.issue.fields.CustomField customField, com.atlassian.jira.issue.Issue issue) -
makeFieldRequired
void makeFieldRequired(com.atlassian.jira.issue.fields.CustomField field) Make the specified field required for all configurations- Parameters:
field
- the custom field.
-
setOptionsOrderFromMetadata
void setOptionsOrderFromMetadata(com.atlassian.jira.issue.fields.CustomField customField, CustomFieldMetadata fieldMetadata) Set the order of Options in a CustomField based on the order of the Options in the CustomFieldMetadata. This is part of the work that is done in createCustomField, but split into a public method so we can fix up the order of Options after the fact in upgrade tasks, etc.- Parameters:
customField
-fieldMetadata
-- Throws:
CustomFieldException
- If the Options in the CustomField do not match the Options in the CustomFieldMetadata. This only re-orders if they have the same options.
-
verifyCustomFieldExistsInDB
Checks if a custom field with the given id exists in the database- Parameters:
customFieldId
-- Returns:
-
verifyCustomFieldExistsInDB
Checks if a custom field with the given id exists in the database. The id passed is expected to be in the form of "customfield_xxxx". If the given id does not match the expected form, false is returned.- Parameters:
customFieldId
-- Returns:
-