added multi-configurer support
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package com.inteligr8.activiti.ext;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.activiti.engine.cfg.ProcessEngineConfigurator;
|
||||
import org.activiti.spring.SpringProcessEngineConfiguration;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.activiti.api.engine.ProcessEngineConfigurationConfigurer;
|
||||
|
||||
@Component(MultiProcessEngineConfigurer.BEAN_NAME)
|
||||
@Primary
|
||||
public class MultiProcessEngineConfigurer implements ProcessEngineConfigurationConfigurer {
|
||||
|
||||
public static final String BEAN_NAME = "inteligr8.multiext.processEngineConfigurer";
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void processEngineConfigurationInitialized(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
|
||||
this.logger.info("Multi-Ext enabled for ProcessEngineConfigurationConfigurer");
|
||||
|
||||
this.wrapSpringProcessEngineConfigurationConfigurers(springProcessEngineConfiguration);
|
||||
this.wrapProcessEngineConfigurators(springProcessEngineConfiguration);
|
||||
}
|
||||
|
||||
private void wrapSpringProcessEngineConfigurationConfigurers(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
|
||||
Map<String, ProcessEngineConfigurationConfigurer> beans = this.applicationContext.getBeansOfType(ProcessEngineConfigurationConfigurer.class);
|
||||
beans.remove(BEAN_NAME);
|
||||
|
||||
this.logger.debug("Executing {} spring process engine configurers", beans.size());
|
||||
for (Entry<String, ProcessEngineConfigurationConfigurer> configurer : beans.entrySet()) {
|
||||
this.logger.trace("Executing spring process engine configurer: {}: {}", configurer.getKey(), configurer.getValue().getClass());
|
||||
configurer.getValue().processEngineConfigurationInitialized(springProcessEngineConfiguration);
|
||||
}
|
||||
}
|
||||
|
||||
private void wrapProcessEngineConfigurators(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
|
||||
Map<String, ProcessEngineConfigurator> beans = this.applicationContext.getBeansOfType(ProcessEngineConfigurator.class);
|
||||
|
||||
this.logger.debug("Executing {} process engine configurators", beans.size());
|
||||
for (Entry<String, ProcessEngineConfigurator> configurator : beans.entrySet()) {
|
||||
this.logger.trace("Executing process engine configurator: {}: {}", configurator.getKey(), configurator.getValue().getClass());
|
||||
springProcessEngineConfiguration.addConfigurator(configurator.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user