package com.sebastian_daschner.jaxrs_analyzer.analysis;
import com.sebastian_daschner.jaxrs_analyzer.model.results.ClassResult;
import com.sebastian_daschner.jaxrs_analyzer.utils.Pair;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* Thread-safe singleton of unhandled class analysis jobs.
*
* @author Sebastian Daschner
*/
public class JobRegistry {
private static final JobRegistry INSTANCE = new JobRegistry();
private Queue<Pair<String, ClassResult>> unhandledClasses = new ConcurrentLinkedQueue<>();
private JobRegistry() {
// only one instance allowed
}
/**
* Adds the (sub-)resource class name to the analysis list with the associated class result.
*/
public void analyzeResourceClass(final String className, final ClassResult classResult) {
// TODO check if class has already been analyzed
unhandledClasses.add(Pair.of(className, classResult));
}
/**
* Returns a class which has not been analyzed yet.
*
* @return An unhandled class or {@code null} if all classes have been analyzed
*/
public Pair<String, ClassResult> nextUnhandledClass() {
return unhandledClasses.poll();
}
public static JobRegistry getInstance() {
return INSTANCE;
}
}