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

info.novatec.testit.webtester.internal.implementation.advices.MarkingAdvice Maven / Gradle / Ivy

package info.novatec.testit.webtester.internal.implementation.advices;

import java.lang.reflect.Method;

import net.bytebuddy.asm.Advice;

import info.novatec.testit.webtester.browser.Browser;
import info.novatec.testit.webtester.config.Configuration;
import info.novatec.testit.webtester.css.DefaultStyleChanger;
import info.novatec.testit.webtester.markings.Marker;
import info.novatec.testit.webtester.pagefragments.PageFragment;
import info.novatec.testit.webtester.pagefragments.annotations.Mark;


public class MarkingAdvice {

    private static final Marker MARKER = new Marker(new DefaultStyleChanger());

    @Advice.OnMethodEnter
    public static void mark(@Advice.This PageFragment pageFragment, @Advice.Origin Method method) {
        new MarkingAdviceImpl(pageFragment, method).execute();
    }

    public static class MarkingAdviceImpl {

        private final PageFragment pageFragment;
        private final Method method;

        public MarkingAdviceImpl(PageFragment pageFragment, Method method) {
            this.pageFragment = pageFragment;
            this.method = method;
        }

        public void execute() {

            Browser browser = pageFragment.browser();
            Configuration configuration = browser.configuration();
            Mark mark = method.getAnnotation(Mark.class);
            if (!configuration.isMarkingsEnabled() || mark == null) {
                return;
            }

            switch (mark.value()) {
                case READ:
                    MARKER.markAsRead(pageFragment);
                    break;
                case USED:
                    MARKER.markAsUsed(pageFragment);
                    break;
            }

        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy