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

com.undefinedlabs.scope.rules.ScalaTestContextManager Maven / Gradle / Ivy

package com.undefinedlabs.scope.rules;

import com.undefinedlabs.scope.ScopeSpanContainer;

import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

public enum ScalaTestContextManager {

    INSTANCE;

    private final Map> scopeSpanContainerQueueMap = new HashMap<>();

    public void add(final String descriptionId, final ScopeSpanContainer scopeSpanContainer) {
        //final String descriptionId = buildDescriptionId(description);

        synchronized (this.scopeSpanContainerQueueMap) {
            final Queue queue = this.scopeSpanContainerQueueMap.get(descriptionId);
            if(queue == null) {
                final Queue newQueue = new ConcurrentLinkedQueue<>();
                newQueue.add(scopeSpanContainer);
                this.scopeSpanContainerQueueMap.put(descriptionId, newQueue);
            } else {
                queue.add(scopeSpanContainer);
            }
        }
    }

    public ScopeSpanContainer poll(final String descriptionId) {
        //final String descriptionId = buildDescriptionId(description);

        synchronized (this.scopeSpanContainerQueueMap){
            final Queue queue = this.scopeSpanContainerQueueMap.get(descriptionId);
            if(queue == null) {
                return null;
            }

            final ScopeSpanContainer container = queue.poll();
            if(container == null){
                this.scopeSpanContainerQueueMap.remove(descriptionId);
            }
            return container;
        }
    }

    public ScopeSpanContainer peek(final String descriptionId) {
        //final String descriptionId = buildDescriptionId(description);

        synchronized (this.scopeSpanContainerQueueMap){
            final Queue queue = this.scopeSpanContainerQueueMap.get(descriptionId);
            if(queue == null) {
                return null;
            }

            final ScopeSpanContainer container = queue.peek();
            if(container == null){
                this.scopeSpanContainerQueueMap.remove(descriptionId);
            }
            return container;
        }
    }

    //public String buildDescriptionId(final JUnit4ScopeDescription description) {
    //    return description.getClassName()+"_"+description.getMethodName()/*+(description.getIteration() != null ? "_"+ description.getIteration() : "")*/;
    //}

    protected Map> getScopeSpanContainerQueueMap() {
        return this.scopeSpanContainerQueueMap;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy