spca.setSource(mfqms);
spca.setOutputChannel(channelResolver.resolveChannelName(platformType + "StatusFileInputChannel"));
spca.setAutoStartup(false);
spca.afterPropertiesSet();
DirectChannel outputChannel = (DirectChannel) channelResolver.resolveChannelName(platformType + "StatusChannel");
outputChannel.setBeanName(platformType + "StatusChannel");
outputChannel.setBeanFactory(context.getBeanFactory());
if (props.containsKey("wiretap.enabled") && "true".equals(props.get("wiretap.enabled"))) {
//set up wire tap
DirectChannel wireTapChannel = (DirectChannel) channelResolver.resolveChannelName("wireTapChannel");
wireTapChannel.setBeanName("wireTapChannel");
wireTapChannel.setBeanFactory(context.getBeanFactory());
LoggingHandler wireTapLogger = new LoggingHandler("TRACE");
wireTapLogger.setBeanName("OutputWireTapper");
wireTapLogger.setBeanFactory(context.getBeanFactory());
wireTapLogger.setLoggerName("wiretap");
wireTapLogger.setShouldLogFullMessage(true);
wireTapLogger.afterPropertiesSet();
wireTapChannel.subscribe(wireTapLogger);
List<ChannelInterceptor> ints = new ArrayList<ChannelInterceptor>();
WireTap wt = new WireTap(wireTapChannel);
ints.add(wt);
outputChannel.setInterceptors(ints);
}
DirectChannel signChannel = (DirectChannel)channelResolver.resolveChannelName(platformType+"MessageSignerChannel");
signChannel.setBeanFactory(context.getBeanFactory());
DirectChannel splitterChannel = (DirectChannel)channelResolver.resolveChannelName(platformType+"SplitterChannel");
splitterChannel.setBeanFactory(context.getBeanFactory());
if (props.containsKey(platformType + ".http.statusEndpointURIs")) {
log.debug("Resolving " + platformType + ".http.statusEndpointURIs ...");
String statusEndpointURIs = props.getProperty(platformType + ".http.statusEndpointURIs");
for (String uri : statusEndpointURIs.split(",")) {
//split into multiple messages
MethodInvokingSplitter mis = new MethodInvokingSplitter(notificationUtils, "splitMessage");
mis.setBeanName(platformType + "Splitter");
mis.setBeanFactory(context.getBeanFactory());
mis.setChannelResolver(channelResolver);
mis.setOutputChannel(signChannel);
splitterChannel.subscribe(mis);
//sign messages and inject url into message headers via HeaderEnricher
Map<String, SignedHeaderValueMessageProcessor<String>> urlHeaderToSign = new HashMap<String, SignedHeaderValueMessageProcessor<String>>();
URI su = URI.create(uri);
urlHeaderToSign.put("x-url", new SignedHeaderValueMessageProcessor<String>(su.getPath()));