diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java new file mode 100644 index 000000000..22e41f969 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java @@ -0,0 +1,21 @@ +package com.iqser.red.service.peristence.v1.server.configuration; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.stereotype.Component; + +@Component +public class ApplicationContextHolder implements ApplicationContextInitializer { + + private static ApplicationContext applicationContext; + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + ApplicationContextHolder.applicationContext = applicationContext; + } + + public static ApplicationContext getContext() { + return applicationContext; + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java new file mode 100644 index 000000000..d572e3deb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java @@ -0,0 +1,38 @@ +package com.iqser.red.service.peristence.v1.server.liquibase; + +import com.iqser.red.service.peristence.v1.server.configuration.ApplicationContextHolder; +import liquibase.change.custom.CustomTaskChange; +import liquibase.database.Database; +import liquibase.exception.CustomChangeException; +import liquibase.exception.SetupException; +import liquibase.exception.ValidationErrors; +import liquibase.resource.ResourceAccessor; +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; + +public abstract class ApplicationContextAwareChange implements CustomTaskChange { + + + @Override + public void execute(Database database) throws CustomChangeException { + + } + + + @Override + public void setUp() throws SetupException { + var context = ApplicationContextHolder.getContext(); + context.getAutowireCapableBeanFactory().autowireBeanProperties( + this, + AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, true); + } + + @Override + public void setFileOpener(ResourceAccessor resourceAccessor) { + + } + + @Override + public ValidationErrors validate(Database database) { + return null; + } +}