I'm trying to migrate on old plugin I wrote, containing a custom field but I get then following error com.atlassian.cache.CacheException: com.atlassian.util.concurrent.LazyReference$InitializationException: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'xxx.plugins.jira.customfields.ReadOnlyProjectComponent': Unsatisfied dependency expressed through constructor argument with index 0 of type [com.atlassian.jira.issue.customfields.manager.OptionsManager]: No qualifying bean of type [com.atlassian.jira.issue.customfields.manager.OptionsManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.JiraImport(value=)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.atlassian.jira.issue.customfields.manager.OptionsManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.JiraImport(value=)}
Here is the code for the component
package com.index_education.plugins.jira.customfields;
import com.atlassian.jira.bc.issue.search.SearchService;import com.atlassian.jira.bc.project.component.ProjectComponent;import com.atlassian.jira.component.ComponentAccessor;import com.atlassian.jira.config.FeatureManager;import com.atlassian.jira.issue.customfields.impl.MultiSelectCFType;import com.atlassian.jira.issue.customfields.manager.GenericConfigManager;import com.atlassian.jira.issue.customfields.manager.OptionsManager;import com.atlassian.jira.issue.customfields.option.Option;import com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;import com.atlassian.jira.issue.Issue;import com.atlassian.jira.issue.fields.CustomField;import com.atlassian.jira.issue.fields.config.FieldConfig;import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;import com.atlassian.jira.issue.fields.rest.json.beans.JiraBaseUrls;import com.atlassian.jira.security.JiraAuthenticationContext;
import java.util.ArrayList;import java.util.List;import java.util.Map;
import com.atlassian.plugin.spring.scanner.annotation.imports.JiraImport;
public class ReadOnlyProjectComponent extends MultiSelectCFType {
public ReadOnlyProjectComponentJiraImport OptionsManager optionsManagerJiraImport CustomFieldValuePersister valuePersister,JiraImport GenericConfigManager genericConfigManagerJiraImport JiraBaseUrls jiraBaseUrlsJiraImport SearchService searchServiceJiraImport FeatureManager featureManager, JiraImport JiraAuthenticationContext authenticationContext) { super(optionsManager, valuePersister, genericConfigManager, jiraBaseUrls, searchService, featureManager, authenticationContext); }
Override public Map<String, Object> getVelocityParameters(final Issue issue, final CustomField field, final FieldLayoutItem fieldLayoutItem) {
// This method is also called to get the default value, in // which case issue is null if (issue.equals(null)) { return super.getVelocityParameters(issue, field, fieldLayoutItem); }
FieldConfig fieldConfig = field.getRelevantConfig(issue); // add what you need to the map here OptionsManager optionsManager = ComponentAccessor.getOptionsManager(); List<Option> existingOptions = new ArrayList<Option>(); optionsManager.removeCustomFieldConfigOptions(fieldConfig);
Long l = 0L; for (ProjectComponent component : ComponentAccessor.getProjectComponentManager().findAllForProject(issue.getProjectObject().getId())) { Option option = optionsManager.createOption(fieldConfig, null, l, component.getName()); existingOptions.add(option); l++; } optionsManager.updateOptions(existingOptions); final Map<String, Object> map = super.getVelocityParameters(issue, field, fieldLayoutItem); return map; }}
Any idea of what's wrong?