/*
* Copyright 2015-2017 Hewlett-Packard Enterprise Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.frontend.find.core.beanconfiguration;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.hp.autonomy.frontend.find.core.configuration.TextEncryptorPasswordFactory;
import org.jasypt.util.text.BasicTextEncryptor;
import org.jasypt.util.text.TextEncryptor;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Set;
@Configuration
public class ConfigFileConfiguration {
@Bean
public TextEncryptor textEncryptor() {
final FactoryBean<String> passwordFactory = new TextEncryptorPasswordFactory();
final BasicTextEncryptor basicTextEncryptor = new BasicTextEncryptor();
try {
basicTextEncryptor.setPassword(passwordFactory.getObject());
} catch(final Exception e) {
throw new BeanInitializationException("Failed to initialize TextEncryptor for some reason", e);
}
return basicTextEncryptor;
}
@Bean
public SimpleFilterProvider filterProvider() {
final Set<String> set = ImmutableSet.of(
"indexProtocol",
"indexPort",
"serviceProtocol",
"servicePort",
"productType",
"productTypeRegex",
"indexErrorMessage",
"plaintextPassword",
"currentPassword"
);
final SimpleBeanPropertyFilter.SerializeExceptFilter filter = new SimpleBeanPropertyFilter.SerializeExceptFilter(set);
return new SimpleFilterProvider(ImmutableMap.of("configurationFilter", filter));
}
}