class GitGenerator {
    private static final Logger LOG = LoggerFactory.getLogger(GitGenerator.class);

    @Autowired
    private ApplicationContext applicationContext;

    private String generatorPath;
    private String versionKey;

    private String text;
    private Map<String, String> map;

    @PostConstruct
    public void initialize() {<FILL_FUNCTION_BODY>}

    private void initializeText() {
        text = FileUtil.getText(applicationContext, generatorPath);
    }

    private void initializeJsonMap() {
        if (StringUtils.isEmpty(text)) {
            return;
        }

        if (MapUtils.isNotEmpty(map)) {
            return;
        }

        try {
            map = JsonUtil.fromJson(text, new TypeReference<Map<String, String>>() {
            });
        } catch (Exception e) {

        }
    }

    private void initializePropertiesMap() {
        if (StringUtils.isEmpty(text)) {
            return;
        }

        if (MapUtils.isNotEmpty(map)) {
            return;
        }

        try {
            DiscoveryProperties properties = new DiscoveryProperties(text, DiscoveryConstant.ENCODING_UTF_8);
            map = properties.getMap();
        } catch (Exception e) {

        }
    }

    public String getVersionKey() {
        return versionKey;
    }

    public String getGeneratorPath() {
        return generatorPath;
    }

    public String getText() {
        return text;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public String getVersion() {
        if (MapUtils.isEmpty(map)) {
            return null;
        }

        return match(versionKey, map);
        // return map.get(versionKey);
    }

    private String match(String versionKey, Map<String, String> map) {
        String value = new String(versionKey);
        for (Map.Entry<String, String> entry : map.entrySet()) {
            String regex = "\\{" + entry.getKey() + "\\}";
            // String regex = "\\$\\{" + entry.getKey() + "\\}";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(value);
            value = matcher.replaceAll(entry.getValue());
        }

        return value;
    }
}

        generatorPath = PluginContextAware.getGitGeneratorPath(applicationContext.getEnvironment());
        versionKey = PluginContextAware.getGitVersionKey(applicationContext.getEnvironment());

        initializeText();
        initializeJsonMap();
        initializePropertiesMap();

        String version = getVersion();
        LOG.info("--------------------------------------------------");
        if (StringUtils.isNotEmpty(version)) {
            LOG.info("Use {}={} as metadata version", versionKey, version);
        } else {
            LOG.error("Not found value of {}, use default metadata version setting", versionKey);
        }
        LOG.info("--------------------------------------------------");
    
<no_super_class>