com.obj.nc.flows.dataSources.PulledNotificationDataConvertingFlowConfiguration Maven / Gradle / Ivy
/*
* Copyright (C) 2021 the original author or authors.
*
* This file is part of Notiflow
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*/
package com.obj.nc.flows.dataSources;
import com.obj.nc.functions.processors.pullNotifDataConverter.ExtensionsBasedPullNotifData2EventConverter;
import com.obj.nc.functions.processors.pullNotifDataConverter.ExtensionsBasedPullNotifData2NotificationConverter;
import com.obj.nc.functions.sink.inputPersister.GenericEventPersister;
import com.obj.nc.routers.MessageOrIntentRouter;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.channel.PublishSubscribeChannel;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@Configuration
@RequiredArgsConstructor
public class PulledNotificationDataConvertingFlowConfiguration {
public static final String PULL_NOTIF_DATA_CONVERTING_FLOW_ID = "PULL_NOTIF_DATA_CONVERTING_FLOW_ID";
public static final String PULL_NOTIF_DATA_CONVERTING_FLOW_ID_INPUT_CHANNEL_ID = PULL_NOTIF_DATA_CONVERTING_FLOW_ID + "_INPUT";
private final ExtensionsBasedPullNotifData2EventConverter pullNotifData2EventsConverter;
private final ExtensionsBasedPullNotifData2NotificationConverter pullNotifData2NotificationsConverter;
private final MessageOrIntentRouter messageOrIntentRouter;
private final GenericEventPersister genericEventPersister;
private final ThreadPoolTaskScheduler executor;
@Bean(PULL_NOTIF_DATA_CONVERTING_FLOW_ID_INPUT_CHANNEL_ID)
public PublishSubscribeChannel pullNotifDataConvertingFlowInputChannel() {
return new PublishSubscribeChannel(executor);
}
@Bean(PULL_NOTIF_DATA_CONVERTING_FLOW_ID)
public IntegrationFlow pullNotifDataConvertingFlow() {
return IntegrationFlows
.from(pullNotifDataConvertingFlowInputChannel())
.publishSubscribeChannel(spec -> spec
.subscribe(subFlow -> subFlow
.handle(pullNotifData2EventsConverter)
.split()
.handle(genericEventPersister))
.subscribe(subFlow -> subFlow
.handle(pullNotifData2NotificationsConverter)
.split()
.route(messageOrIntentRouter))
)
.get();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy