From ab1cc8af9dbd23ad49405240b8e137cfbe58f635 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 18 Feb 2022 17:02:22 +0200 Subject: [PATCH] RED-3452 --- .../ApplicationContextHolder.java | 21 ++++++++++ .../ApplicationContextAwareChange.java | 38 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/configuration/ApplicationContextHolder.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/liquibase/ApplicationContextAwareChange.java 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; + } +}