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

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

The newest version!
/*
 * 
 */
package com.automationrockstars.design.gir.webdriver.plugin;

import com.automationrockstars.design.gir.webdriver.UiObject;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

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

public class UiObjectFindPluginService {

    private static final List plugins = Lists.newArrayList();
    private static final UiObjectFindPlugin instance = new CompositeFindPlugin();

    static {
        registerSpiPlugins();
    }

    public static final UiObjectFindPlugin findPlugins() {
        return instance;
    }

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

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

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

    public static class CompositeFindPlugin implements UiObjectFindPlugin {

        public void beforeFindElements(UiObject element, By by) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.beforeFindElements(element, by);
            }

        }

        public void afterFindElements(UiObject element, By by, List result) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.afterFindElements(element, by, result);
            }

        }

        public void beforeFindElement(UiObject element, By by) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.beforeFindElement(element, by);
            }

        }

        public void afterFindElement(UiObject element, By by, WebElement result) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.afterFindElement(element, by, result);
            }

        }

        @Override
        public void beforeWaitForVisible(UiObject element) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.beforeWaitForVisible(element);
            }

        }

        @Override
        public void afterWaitForVisible(UiObject element) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.afterWaitForVisible(element);
            }

        }

        @Override
        public void beforeWaitForPresent(UiObject element) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.beforeWaitForPresent(element);
            }

        }

        @Override
        public void afterWaitForPresent(UiObject element) {
            for (UiObjectFindPlugin plugin : plugins) {
                plugin.afterWaitForPresent(element);
            }

        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy