/* * Copyright 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.configuration; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.ser.FilterProvider; import com.google.common.collect.ImmutableMap; import com.hp.autonomy.frontend.configuration.AbstractAuthenticatingConfigFileService; import com.hp.autonomy.types.requests.idol.actions.tags.FieldPath; import org.jasypt.util.text.TextEncryptor; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.util.Map; /** * Common logic applied to HoD and Idol config implementations */ public abstract class FindConfigFileService<C extends FindConfig<C, B>, B extends FindConfigBuilder<C, B>> extends AbstractAuthenticatingConfigFileService<C> { public static final String CONFIG_FILE_LOCATION = "hp.find.home"; private static final String CONFIG_FILE_NAME = "config.json"; protected FindConfigFileService(final FilterProvider filterProvider, final TextEncryptor textEncryptor, final JsonSerializer<FieldPath> fieldPathSerializer, final JsonDeserializer<FieldPath> fieldPathDeserializer) { final ObjectMapper objectMapper = new Jackson2ObjectMapperBuilder() .featuresToEnable(SerializationFeature.INDENT_OUTPUT) .mixIns(customMixins()) .serializersByType(ImmutableMap.of(FieldPath.class, fieldPathSerializer)) .deserializersByType(ImmutableMap.of(FieldPath.class, fieldPathDeserializer)) .createXmlMapper(false) .build(); setConfigFileLocation(CONFIG_FILE_LOCATION); setConfigFileName(CONFIG_FILE_NAME); setDefaultConfigFile(getDefaultConfigFile()); setMapper(objectMapper); setTextEncryptor(textEncryptor); setFilterProvider(filterProvider); } protected abstract String getDefaultConfigFile(); protected abstract Map<Class<?>, Class<?>> customMixins(); @Override public void postInitialise(final C config) { postUpdate(config); } @Override public C preUpdate(final C config) { return config; } @SuppressWarnings("NoopMethodInAbstractClass") @Override public void postUpdate(final C config) { } }