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

org.mockserver.ui.MockServerMatcherNotifier Maven / Gradle / Ivy

package org.mockserver.ui;

import org.mockserver.mock.RequestMatchers;
import org.mockserver.model.ObjectWithReflectiveEqualsHashCodeToString;
import org.mockserver.scheduler.Scheduler;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author jamesdbloom
 */
public class MockServerMatcherNotifier extends ObjectWithReflectiveEqualsHashCodeToString {

    private boolean listenerAdded = false;
    private final List listeners = Collections.synchronizedList(new ArrayList<>());
    private final Scheduler scheduler;

    public MockServerMatcherNotifier(Scheduler scheduler) {
        this.scheduler = scheduler;
    }

    protected void notifyListeners(final RequestMatchers notifier, Cause cause) {
        if (listenerAdded && !listeners.isEmpty()) {
            for (MockServerMatcherListener listener : listeners.toArray(new MockServerMatcherListener[0])) {
                scheduler.submit(() -> listener.updated(notifier, cause));
            }
        }
    }

    public void registerListener(MockServerMatcherListener listener) {
        listeners.add(listener);
        listenerAdded = true;
    }

    public void unregisterListener(MockServerMatcherListener listener) {
        listeners.remove(listener);
    }

    public enum Cause {
        FILE_WATCHER,
        INITIALISER,
        API
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy