/*
* Copyright 2015 Hewlett-Packard 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.idol.configuration;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.google.common.collect.ImmutableMap;
import com.hp.autonomy.frontend.configuration.authentication.Authentication;
import com.hp.autonomy.frontend.configuration.filter.ConfigurationFilterMixin;
import com.hp.autonomy.frontend.configuration.server.ServerConfig;
import com.hp.autonomy.frontend.find.core.configuration.FindConfigFileService;
import com.hp.autonomy.searchcomponents.core.config.FieldInfo;
import com.hp.autonomy.searchcomponents.core.config.FieldInfoConfigMixins;
import com.hp.autonomy.searchcomponents.core.config.FieldValue;
import com.hp.autonomy.searchcomponents.core.config.FieldValueConfigMixins;
import com.hp.autonomy.searchcomponents.idol.view.configuration.ViewConfig;
import com.hp.autonomy.types.requests.idol.actions.tags.FieldPath;
import org.jasypt.util.text.TextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class IdolFindConfigFileService extends FindConfigFileService<IdolFindConfig, IdolFindConfig.IdolFindConfigBuilder> {
@Autowired
public IdolFindConfigFileService(final FilterProvider filterProvider,
final TextEncryptor textEncryptor,
final JsonSerializer<FieldPath> fieldPathSerializer,
final JsonDeserializer<FieldPath> fieldPathDeserializer) {
super(filterProvider, textEncryptor, fieldPathSerializer, fieldPathDeserializer);
}
@Override
public Class<IdolFindConfig> getConfigClass() {
return IdolFindConfig.class;
}
@Override
public IdolFindConfig getEmptyConfig() {
return IdolFindConfig.builder().build();
}
@Override
protected String getDefaultConfigFile() {
return "/defaultIdolConfigFile.json";
}
@Override
protected Map<Class<?>, Class<?>> customMixins() {
return ImmutableMap.<Class<?>, Class<?>>builder()
.put(Authentication.class, IdolAuthenticationMixins.class)
.put(ServerConfig.class, ConfigurationFilterMixin.class)
.put(ViewConfig.class, ConfigurationFilterMixin.class)
.put(IdolFindConfig.class, ConfigurationFilterMixin.class)
.put(FieldInfo.class, FieldInfoConfigMixins.class)
.put(FieldValue.class, FieldValueConfigMixins.class)
.build();
}
}