All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.atleon.spring.AloStreamApplicationListener Maven / Gradle / Ivy

There is a newer version: 0.28.3
Show newest version
package io.atleon.spring;

import io.atleon.core.AloStream;
import io.atleon.core.AloStreamConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ApplicationContextEvent;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;

public class AloStreamApplicationListener implements ApplicationListener, ConfiguredAloStream {

    private final AloStream stream;

    private final C config;

    public AloStreamApplicationListener(AloStream stream, C config) {
        this.stream = stream;
        this.config = config;
    }

    @Override
    public void onApplicationEvent(ApplicationContextEvent event) {
        if (event instanceof ContextRefreshedEvent && isAutoStartEnabled(event.getApplicationContext(), name())) {
            start();
        } else if (event instanceof ContextClosedEvent) {
            stop();
        }
    }

    @Override
    public void start() {
        if (stream.state() == AloStream.State.STOPPED) {
            stream.start(config);
        }
    }

    @Override
    public void stop() {
        stream.stop();
    }

    @Override
    public String name() {
        return config.name();
    }

    @Override
    public AloStream.State state() {
        return stream.state();
    }

    @Override
    public String toString() {
        return "AloStreamApplicationListener{stream=" + stream + ", config=" + config + '}';
    }

    private static boolean isAutoStartEnabled(ApplicationContext context, String streamName) {
        return !Contexts.isPropertySetToFalse(context, "atleon.stream." + streamName + ".auto.start.enabled");
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy