blob: 775f1cd8fb86ee633b411e92f03d6c0dc27c8f67 [file] [log] [blame]
/*
* Copyright 2017 The Mifos Initiative.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.mifos.anubis.config;
import io.mifos.anubis.filter.InitializationFilter;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_SINGLETON;
/**
* @author Myrle Krantz
*/
class FilterRegistrationBeanRegistrar implements ImportBeanDefinitionRegistrar {
FilterRegistrationBeanRegistrar() { }
@Override public void registerBeanDefinitions(final AnnotationMetadata importingClassMetadata,
final BeanDefinitionRegistry registry) {
final boolean includeInitializationFilter = (boolean)importingClassMetadata
.getAnnotationAttributes(EnableAnubis.class.getTypeName())
.get("storeTenantKeysAtInitialization");
if (includeInitializationFilter) {
final AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder
.rootBeanDefinition(this.getClass())
.setFactoryMethod("initializationFilterRegistration")
.addConstructorArgReference(InitializationFilter.class.getCanonicalName())
.setScope(SCOPE_SINGLETON).getBeanDefinition();
registry.registerBeanDefinition("initializationFilterRegistration", beanDefinition);
}
}
@SuppressWarnings("SpringJavaAutowiringInspection")
@Bean
static FilterRegistrationBean initializationFilterRegistration(
final InitializationFilter initializationFilter) {
final FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(initializationFilter);
registration.addUrlPatterns("/initialize");
registration.setName("initializationFilter");
registration.setOrder(Integer.MAX_VALUE); //After the tenant header filter and the security filter.
return registration;
}
}