Class CachedFieldConfigSchemePersister
java.lang.Object
com.atlassian.jira.issue.fields.config.persistence.FieldConfigSchemePersisterImpl
com.atlassian.jira.issue.fields.config.persistence.CachedFieldConfigSchemePersister
- All Implemented Interfaces:
FieldConfigSchemePersister
A simple caching wrapper
NOTE : you may be wondering about the cache invalidation strategy on this cache. Will the top level classes
that use this cache such as {@link com.atlassian.jira.issue.CustomFieldManager@refreshCache} call init()
and this clears the cache.
TODO: This probably should be rewritten so that the upper lays of code are not responsible for clearing the lower level caches and also the "cache inheritance" pattern should be removed.
-
Field Summary
Fields inherited from class com.atlassian.jira.issue.fields.config.persistence.FieldConfigSchemePersisterImpl
ENTITY_CONFIG_ID, ENTITY_DESCRIPTION, ENTITY_FIELD, ENTITY_ID, ENTITY_ISSUE_TYPE, ENTITY_NAME, ENTITY_RELATED_TABLE_NAME, ENTITY_SCHEME_ID, ENTITY_TABLE_NAME, FK_RELATED_CONFIGS -
Constructor Summary
ConstructorsConstructorDescriptionCachedFieldConfigSchemePersister(OfBizDelegator delegator, QueryDslAccessor queryDslAccessor, ConstantsManager constantsManager, FieldConfigPersister fieldConfigPersister, FieldConfigContextPersister fieldContextPersister, FieldConfigManager fieldConfigManager, com.atlassian.cache.CacheManager cacheManager) -
Method Summary
Modifier and TypeMethodDescriptioncreate(FieldConfigScheme configScheme, ConfigurableField field) getConfigSchemeForFieldConfig(FieldConfig fieldConfig) Finds theFieldConfigSchemethat contains theFieldConfiggetFieldConfigScheme(Long configSchemeId) voidinit()voidonClearCache(ClearCacheEvent event) voidonSchemeContextUpdated(FieldConfigSchemeContextUpdated fieldConfigSchemeContextUpdated) voidvoidremoveByIssueType(IssueType issueType) RemovesFieldConfigSchemeassociations for the given issue type.protected voidremoveRelatedConfigsForUpdate(FieldConfigScheme configScheme, org.ofbiz.core.entity.GenericValue gv) update(FieldConfigScheme configScheme) Methods inherited from class com.atlassian.jira.issue.fields.config.persistence.FieldConfigSchemePersisterImpl
createWithDefaultValues, filterRelevantFields, getConfigSchemeIdsForCustomFieldId, getInvalidFieldConfigSchemeAfterIssueTypeRemoval, getRelevantFields, invalidateAll, removeIfExist
-
Constructor Details
-
CachedFieldConfigSchemePersister
public CachedFieldConfigSchemePersister(OfBizDelegator delegator, QueryDslAccessor queryDslAccessor, ConstantsManager constantsManager, FieldConfigPersister fieldConfigPersister, FieldConfigContextPersister fieldContextPersister, FieldConfigManager fieldConfigManager, com.atlassian.cache.CacheManager cacheManager)
-
-
Method Details
-
init
public void init()- Specified by:
initin interfaceFieldConfigSchemePersister- Overrides:
initin classFieldConfigSchemePersisterImpl
-
onClearCache
-
onSchemeContextUpdated
@EventListener public void onSchemeContextUpdated(FieldConfigSchemeContextUpdated fieldConfigSchemeContextUpdated) -
getFieldConfigScheme
- Specified by:
getFieldConfigSchemein interfaceFieldConfigSchemePersister- Overrides:
getFieldConfigSchemein classFieldConfigSchemePersisterImpl
-
getConfigSchemesForCustomField
- Specified by:
getConfigSchemesForCustomFieldin interfaceFieldConfigSchemePersister- Overrides:
getConfigSchemesForCustomFieldin classFieldConfigSchemePersisterImpl
-
getConfigSchemeForFieldConfig
Description copied from interface:FieldConfigSchemePersisterFinds theFieldConfigSchemethat contains theFieldConfig- Specified by:
getConfigSchemeForFieldConfigin interfaceFieldConfigSchemePersister- Overrides:
getConfigSchemeForFieldConfigin classFieldConfigSchemePersisterImpl- Parameters:
fieldConfig- the config to find the containingFieldConfigSchemeof; cannot be null.- Returns:
- the first scheme that contains the
FieldConfig. Not Null.
-
create
- Specified by:
createin interfaceFieldConfigSchemePersister- Overrides:
createin classFieldConfigSchemePersisterImpl
-
update
- Specified by:
updatein interfaceFieldConfigSchemePersister- Overrides:
updatein classFieldConfigSchemePersisterImpl
-
removeRelatedConfigsForUpdate
protected void removeRelatedConfigsForUpdate(@Nonnull FieldConfigScheme configScheme, @Nonnull org.ofbiz.core.entity.GenericValue gv) throws org.ofbiz.core.entity.GenericEntityException - Overrides:
removeRelatedConfigsForUpdatein classFieldConfigSchemePersisterImpl- Throws:
org.ofbiz.core.entity.GenericEntityException
-
remove
- Specified by:
removein interfaceFieldConfigSchemePersister- Overrides:
removein classFieldConfigSchemePersisterImpl
-
removeByIssueType
Description copied from interface:FieldConfigSchemePersisterRemovesFieldConfigSchemeassociations for the given issue type. Please note that this method call on it's own is NOT safe. it removes rows from a many-to-many table without considering other entities in the many-to-many relationship. What this means is that if there's only one row left in the table, this method may remove it, and you'll end up with orphaned values. Only use this in conjunction withFieldConfigSchemePersister.getInvalidFieldConfigSchemeAfterIssueTypeRemoval(com.atlassian.jira.issue.issuetype.IssueType).Also see
FieldConfigSchemeManagerImpl.removeInvalidFieldConfigSchemesForIssueType(com.atlassian.jira.issue.issuetype.IssueType)for correct usage.- Specified by:
removeByIssueTypein interfaceFieldConfigSchemePersister- Overrides:
removeByIssueTypein classFieldConfigSchemePersisterImpl- Parameters:
issueType- the issue type to remove the associations for
-