
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