Package org.lightadmin

Source Code of org.lightadmin.AdministrationConfigurationListener

package org.lightadmin;

import org.lightadmin.api.config.management.rmi.GlobalConfigurationManagementService;
import org.lightadmin.core.config.domain.unit.ConfigurationUnits;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;

import java.util.Collection;

import static com.google.common.collect.Lists.newArrayList;
import static org.lightadmin.core.config.domain.unit.ConfigurationUnitsConverter.unitsFromConfiguration;
import static org.springframework.core.annotation.AnnotationUtils.findAnnotation;
import static org.springframework.util.ObjectUtils.isEmpty;

public class AdministrationConfigurationListener extends AbstractTestExecutionListener {

    @Override
    public void beforeTestClass(final TestContext testContext) throws Exception {
        final Class<?>[] configurationTypes = configurationType(testContext.getTestClass());
        if (isEmpty(configurationTypes)) {
            return;
        }

        final GlobalConfigurationManagementService globalConfigurationService = globalConfigurationService(testContext);

        globalConfigurationService.removeAllDomainTypeAdministrationConfigurations();

        globalConfigurationService.registerDomainTypeConfiguration(configurationUnitsFor(configurationTypes));
    }

    @Override
    public void afterTestClass(final TestContext testContext) throws Exception {
        if (!isEmpty(configurationType(testContext.getTestClass()))) {
            globalConfigurationService(testContext).removeAllDomainTypeAdministrationConfigurations();
        }
    }

    public static Class<?>[] configurationType(Class clazz) {
        final RunWithConfiguration annotation = findAnnotation(clazz, RunWithConfiguration.class);

        return annotation == null ? null : annotation.value();
    }

    private GlobalConfigurationManagementService globalConfigurationService(final TestContext testContext) {
        return testContext.getApplicationContext().getBean(GlobalConfigurationManagementService.class);
    }

    private ConfigurationUnits[] configurationUnitsFor(Class<?>... configurationTypes) {
        Collection<ConfigurationUnits> result = newArrayList();
        for (Class<?> configurationType : configurationTypes) {
            result.add(unitsFromConfiguration(configurationType));
        }
        return result.toArray(new ConfigurationUnits[result.size()]);
    }
}
TOP

Related Classes of org.lightadmin.AdministrationConfigurationListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.