All Downloads are FREE. Search and download functionalities are using the official Maven repository.

open.source.exchange.parser.ApplicationContextParser Maven / Gradle / Ivy

package open.source.exchange.parser;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;

import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import open.source.exchange.entity.ExApplicationContext;
import open.source.exchange.model.ExBase;
import open.source.exchange.model.ExEnvironment;

@Log4j2
@Service
@RequiredArgsConstructor
public class ApplicationContextParser {

	@Autowired
	private ObjectParser objectParser;

	@Autowired
	private EnvironmentParser environmentParser;

	private ExApplicationContext parseCore(ApplicationContext applicationContext) {

		log.trace("parse core -> (applicationContext) {}", applicationContext);
		ExApplicationContext exApplicationContext = null;

		if (null != applicationContext) {
			ExBase exBase = objectParser.parse(applicationContext);
			exApplicationContext = new ExApplicationContext(exBase);

			String applicationName = applicationContext.getApplicationName();
			exApplicationContext.setApplicationName(applicationName);

			int beanDefinitionCount = applicationContext.getBeanDefinitionCount();
			exApplicationContext.setBeanDefinitionCount(beanDefinitionCount);

			String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
			exApplicationContext.setBeanDefinitionNames(beanDefinitionNames);

			String displayName = applicationContext.getDisplayName();
			exApplicationContext.setDisplayName(displayName);

			Environment environment = applicationContext.getEnvironment();
			ExEnvironment exEnvironment = environmentParser.parse(environment);
			exApplicationContext.setEnvironment(exEnvironment);

			String id = applicationContext.getId();
			exApplicationContext.setId(id);

			long startupDate = applicationContext.getStartupDate();
			exApplicationContext.setStartupDate(startupDate);
		}
		return exApplicationContext;
	}

	private ExApplicationContext parseNonCore(ApplicationContext applicationContext, ExApplicationContext exApplicationContext) {

		log.trace("parse non core -> (applicationContext) {} (exApplicationContext) {}", applicationContext, exApplicationContext);

		if (null != exApplicationContext) {
			ApplicationContext parent = applicationContext.getParent();
			ExApplicationContext exParent = parseCore(parent);
			exApplicationContext.setParent(exParent);
		}
		return exApplicationContext;
	}

	public ExApplicationContext parse(ApplicationContext applicationContext) {

		log.trace("parse -> (applicationContext) {}", applicationContext);

		ExApplicationContext exApplicationContext = parseCore(applicationContext);
		return parseNonCore(applicationContext, exApplicationContext);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy