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

au.com.agic.apptesting.utils.impl.DesiredCapabilitiesLoaderImpl Maven / Gradle / Ivy

package au.com.agic.apptesting.utils.impl;


import static com.google.common.base.Preconditions.checkNotNull;

import au.com.agic.apptesting.constants.Constants;
import au.com.agic.apptesting.profiles.FileProfileAccess;
import au.com.agic.apptesting.profiles.configuration.Configuration;
import au.com.agic.apptesting.utils.DesiredCapabilitiesLoader;
import au.com.agic.apptesting.utils.SystemPropertyUtils;

import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import javax.validation.constraints.NotNull;

/**
 * Provides a service for loading desired capability profiles
 */
public class DesiredCapabilitiesLoaderImpl implements DesiredCapabilitiesLoader {

	private static final Logger LOGGER = LoggerFactory.getLogger(DesiredCapabilitiesLoaderImpl.class);
	private static final SystemPropertyUtils SYSTEM_PROPERTY_UTILS = new SystemPropertyUtilsImpl();

	private static final FileProfileAccess PROFILE_ACCESS = new FileProfileAccess<>(
		SYSTEM_PROPERTY_UTILS.getProperty(Constants.CONFIGURATION),
		Configuration.class);

	@NotNull
	@Override
	public List getCapabilities() {

		final Optional configuration = PROFILE_ACCESS.getProfile();

		if (configuration != null
			&& configuration.isPresent()
			&& configuration.get().getSettings() != null
			&& configuration.get().getSettings().getDesiredCapabilities() != null) {

			return configuration.get().getSettings().getDesiredCapabilities().stream()
				.map(this::generateFromXML)
				.collect(Collectors.toList());
		}

		return new ArrayList<>();
	}

	private DesiredCapabilities generateFromXML(
		@NotNull final au.com.agic.apptesting.profiles.configuration.DesiredCapabilities desiredCapabilities) {
		checkNotNull(desiredCapabilities);

		final DesiredCapabilities seleniumDesiredCapabilities = new DesiredCapabilities();

		if (desiredCapabilities.getCapability() != null) {
			desiredCapabilities.getCapability().stream()
				.filter(e ->
					StringUtils.isNotBlank(e.getName()) && StringUtils.isNotBlank(e.getValue()))
				.forEach(e -> seleniumDesiredCapabilities.setCapability(e.getName(), e.getValue()));
		}

		return seleniumDesiredCapabilities;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy