Rework global/project/share config

Description

Remove Project level config

Migrate to global level if different from default.
If global level already exists for project. Merge it.
If global level already exists for project but it is related with many projects. Extract it to new global config. Merge it.

Project config changes

Add “Default shared fields (shared issue)”, “Default filter columns (shared filter)”.

Child issues

Issue Type Icon ESFJ-779 Move Default config to the config list Priority: Medium
Released
Issue Type Icon ESFJ-780 Add “Default shared fields (shared issue)”, “Default filter columns (shared filter)” to global config Priority: Medium
Released
Issue Type Icon ESFJ-781 Migrate project config to global config. Remove option to create Project-level configs Priority: Medium
Released

Linked issues

is duplicated by
Issue Type Icon ESFJ-549 Implement default configuration for global settings Priority: Medium
Withdrawn
relates to
Issue Type Icon ESFJ-289 Revisit External Share Form Priority: Low
Backlog
is blocked by
Issue Type Icon SUP-230 default expiration time is not being set Priority: Medium
Closed

Activity

Krzysztof Bogdan 19 February 2024, 13:29
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configMigrationRunner': Invocation of init method failed
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:222)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:419)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at ovh.atlasinc.jira.share.AddonApplication.main(AddonApplication.java:65)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:95)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
Caused by: java.lang.NullPointerException: Cannot invoke "Object.equals(Object)" because "o" is null
	at java.base/java.util.ImmutableCollections$Set12.contains(ImmutableCollections.java:817)
	at ovh.atlasinc.jira.share.share.ConfigMigrationRunner.lambda$createGlobalLevelConfigs$1(ConfigMigrationRunner.java:196)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:708)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
	at ovh.atlasinc.jira.share.share.ConfigMigrationRunner.createGlobalLevelConfigs(ConfigMigrationRunner.java:196)
	at ovh.atlasinc.jira.share.share.ConfigMigrationRunner.migrateConfigs(ConfigMigrationRunner.java:178)
	at ovh.atlasinc.jira.share.share.ConfigMigrationRunner.migrateProjectConfigsForHost(ConfigMigrationRunner.java:119)
	at ovh.atlasinc.jira.share.share.ConfigMigrationRunner.migrateProjectConfigs(ConfigMigrationRunner.java:66)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMethod.invoke(InitDestroyAnnotationBeanPostProcessor.java:457)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:401)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:219)
	... 22 common frames omitted