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

com.automationrockstars.design.gir.webdriver.plugin.UiDriverPluginService Maven / Gradle / Ivy

The newest version!
/*
 * 
 */

package com.automationrockstars.design.gir.webdriver.plugin;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.openqa.selenium.WebDriver;

import java.util.List;
import java.util.ServiceLoader;

public class UiDriverPluginService {

    private static final CompositeUiDriverPlugin instance = new CompositeUiDriverPlugin();
    private static final List plugins = Lists.newCopyOnWriteArrayList();

    static {
        registerSpiPlugins();
    }

    public static CompositeUiDriverPlugin driverPlugins() {
        return instance;
    }

    public static void registerPlugin(UiDriverPlugin plugin) {
        plugins.add(plugin);
    }

    public static List getPlugins() {
        return ImmutableList.copyOf(plugins);
    }

    private static void registerSpiPlugins() {
        plugins.addAll(Lists.newArrayList(ServiceLoader.load(UiDriverPlugin.class).iterator()));
    }

    public static class CompositeUiDriverPlugin implements UiDriverPlugin {

        @Override
        public void beforeGetDriver() {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.beforeGetDriver();
                } catch (Throwable e) {
                }
            }

        }

        @Override
        public void afterGetDriver(WebDriver driver) {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.afterGetDriver(driver);
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }

        }

        @Override
        public void beforeCloseDriver(WebDriver driver) {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.beforeCloseDriver(driver);
                } catch (Throwable e) {
                }
            }

        }

        @Override
        public void afterCloseDriver() {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.afterCloseDriver();
                } catch (Throwable e) {
                }

            }

        }

        @Override
        public void beforeInstantiateDriver() {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.beforeInstantiateDriver();
                } catch (Throwable e) {
                }

            }

        }

        public void afterInstantiateDriver(WebDriver driver) {
            for (UiDriverPlugin plugin : plugins) {
                try {
                    plugin.afterInstantiateDriver(driver);
                } catch (Throwable e) {
                }

            }
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy