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

com.automationrockstars.design.gir.webdriver.plugin.UiObjectActionPluginService 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 java.util.List;
import java.util.ServiceLoader;

public class UiObjectActionPluginService {

    private static CompositeActionPlugin instance = new CompositeActionPlugin();
    private static List plugins = Lists.newArrayList();

    static {
        registerSpiPlugins();
    }

    public static UiObjectActionPlugin actionPlugins() {
        return instance;
    }

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

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

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

    public static class CompositeActionPlugin implements UiObjectActionPlugin {

        public void beforeClick(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.beforeClick(element);
            }
        }

        public void afterClick(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.afterClick(element);
            }

        }

        public void beforeSubmit(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.beforeSubmit(element);
            }

        }

        public void afterSubmit(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.afterSubmit(element);
            }
        }

        public void beforeSendKeys(UiObject element, CharSequence... keysToSend) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.beforeSendKeys(element, keysToSend);
            }

        }

        public void afterSendKeys(UiObject element, CharSequence... keysToSend) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.afterSendKeys(element, keysToSend);
            }
        }

        public void beforeClear(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.beforeClear(element);
            }

        }

        public void afterClear(UiObject element) {
            for (UiObjectActionPlugin plugin : plugins) {
                plugin.afterClear(element);
            }

        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy