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

org.fluentlenium.configuration.AnnotationConfiguration Maven / Gradle / Ivy

package org.fluentlenium.configuration;

import com.google.common.base.Strings;
import org.apache.commons.io.IOUtils;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.JsonException;
import org.openqa.selenium.remote.JsonToBeanConverter;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;

/**
 * {@link ConfigurationProperties} based on {@link FluentConfiguration} annotation.
 *
 * @see FluentConfiguration
 * @see ConfigurationProperties
 */
public class AnnotationConfiguration implements ConfigurationProperties {
    private final FluentConfiguration configuration;

    private final JsonToBeanConverter jsonConverter = new JsonToBeanConverter();

    public AnnotationConfiguration(Class containerClass) {
        this(containerClass != null ? containerClass.getAnnotation(FluentConfiguration.class) : null);
    }

    public AnnotationConfiguration(FluentConfiguration configuration) {
        super();
        this.configuration = configuration;
    }

    public String getStringValue(String property) {
        if (Strings.isNullOrEmpty(property)) return null;
        return property;
    }

    private  Class getConfigurationFactoryClassValue(Class configurationFactoryClass) {
        if (configurationFactoryClass == DefaultConfigurationFactory.class) return null;
        return configurationFactoryClass;
    }

    private Class getConfigurationDefaultsClassValue(Class configurationDefaultsClass) {
        if (configurationDefaultsClass == ConfigurationDefaults.class) return null;
        return configurationDefaultsClass;
    }

    private Capabilities getCapabilitiesValue(String property) {
        if (Strings.isNullOrEmpty(property)) return null;
        try {
            URL url = new URL(property);
            InputStream stream = null;
            try {
                stream = url.openStream();
                property = IOUtils.toString(stream, Charset.defaultCharset());
            } catch (IOException e) {
                throw new ConfigurationException("Can't read Capabilities defined at " + url);
            } finally {
                IOUtils.closeQuietly(stream);
            }
        } catch (MalformedURLException e) {
            // This is not an URL. Consider property as JSON.
        }
        CapabilitiesFactory factory = (CapabilitiesFactory) CapabilitiesRegistry.INSTANCE.get(property);
        if (factory != null) {
            return factory.newCapabilities();
        }

        try {
            return jsonConverter.convert(DesiredCapabilities.class, property);
        } catch (JsonException e) {
            throw new ConfigurationException("Can't convert JSON Capabilities to Object.", e);
        }
    }

    @Override
    public Class getConfigurationDefaults() {
        if (configuration == null) return null;
        return getConfigurationDefaultsClassValue(configuration.configurationDefaults());
    }

    private Long getLongValue(Long property) {
        if (property < 0) return null;
        return property;
    }

    private TriggerMode getTriggerModeValue(TriggerMode triggerMode) {
        if (triggerMode == TriggerMode.DEFAULT) return null;
        return triggerMode;
    }

    private DriverLifecycle getDriverLifecycleValue(DriverLifecycle driverLifecycle) {
        if (driverLifecycle == DriverLifecycle.DEFAULT) return null;
        return driverLifecycle;
    }

    @Override
    public String getWebDriver() {
        if (configuration == null) return null;
        return getStringValue(configuration.webDriver());
    }

    @Override
    public String getRemoteUrl() {
        if (configuration == null) return null;
        return getStringValue(configuration.remoteUrl());
    }

    @Override
    public Capabilities getCapabilities() {
        if (configuration == null) return null;
        return getCapabilitiesValue(configuration.capabilities());
    }

    @Override
    public Class getConfigurationFactory() {
        if (configuration == null) return null;
        return getConfigurationFactoryClassValue(configuration.configurationFactory());
    }

    @Override
    public DriverLifecycle getDriverLifecycle() {
        if (configuration == null) return null;
        return getDriverLifecycleValue(configuration.driverLifecycle());
    }

    @Override
    public Boolean getDeleteCookies() {
        if (configuration == null) return null;
        return configuration.deleteCookies().asBoolean();
    }

    @Override
    public String getBaseUrl() {
        if (configuration == null) return null;
        return getStringValue(configuration.baseUrl());
    }

    @Override
    public Long getPageLoadTimeout() {
        if (configuration == null) return null;
        return getLongValue(configuration.pageLoadTimeout());
    }

    @Override
    public Long getImplicitlyWait() {
        if (configuration == null) return null;
        return getLongValue(configuration.implicitlyWait());
    }

    @Override
    public Long getScriptTimeout() {
        if (configuration == null) return null;
        return getLongValue(configuration.scriptTimeout());
    }

    @Override
    public Boolean getEventsEnabled() {
        if (configuration == null) return null;
        return configuration.eventsEnabled().asBoolean();
    }

    @Override
    public String getScreenshotPath() {
        if (configuration == null) return null;
        return getStringValue(configuration.screenshotPath());
    }

    @Override
    public String getHtmlDumpPath() {
        if (configuration == null) return null;
        return getStringValue(configuration.htmlDumpPath());
    }

    @Override
    public TriggerMode getScreenshotMode() {
        if (configuration == null) return null;
        return getTriggerModeValue(configuration.screenshotMode());
    }

    @Override
    public TriggerMode getHtmlDumpMode() {
        if (configuration == null) return null;
        return getTriggerModeValue(configuration.htmlDumpMode());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy