Thanks @david.pinn it is working now. Below is working code:
@ExportAsService({MyPluginListener.class })
@Named("myPluginListener")
public class MyPluginListener implements InitializingBean, DisposableBean {
private final static String PLUGIN_KEY = "your.plugin.key";
private final EventPublisher eventPublisher;
private final ActiveObjects activeObjects;
@Inject
public MyPluginListener(@ComponentImport EventPublisher eventPublisher, ActiveObjects activeObjects ){
this.eventPublisher=eventPublisher;
this.activeObjects=activeObjects;
}
@Override
public void afterPropertiesSet() throws Exception {
eventPublisher.register(this);
}
@Override
public void destroy() throws Exception {
eventPublisher.unregister(this);
}
@EventListener
public void onPluginStarted(final PluginEnabledEvent pluginEnabledEvent)
{
String startUpPluginKey = pluginEnabledEvent.getPlugin().getKey();
if (PLUGIN_KEY.equals(startUpPluginKey))
{
generateCustomField();
}
}
private void generateCustomField() {
List<IssueType> issueTypes = (List<IssueType>) ComponentAccessor.getIssueTypeSchemeManager().getDefaultIssueTypeScheme().getAssociatedIssueTypes();
List<JiraContextNode> contexts=ComponentAccessor.getIssueTypeSchemeManager().getDefaultIssueTypeScheme().getContexts();
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomFieldType customFieldType =customFieldManager.getCustomFieldType("com.atlassian.jira.plugin.system.customfieldtypes:textfield");
CustomFieldSearcher customFieldSearcher = customFieldManager.getCustomFieldSearcher("com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher");
System.out.println("-----------------------------customFieldType------------------: "+customFieldType);
System.out.println("-----------------------------customFieldSearcher------------------: "+customFieldSearcher);
try {
customFieldManager.createCustomField(
"MyCustom filed Name", "MyCustom filed Name Description", customFieldType,
customFieldSearcher,
contexts, issueTypes );
} catch (GenericEntityException e1) {
e1.printStackTrace();
}
}
}