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

org.unlaxer.parser.ParserFactoryBySupplier Maven / Gradle / Ivy

package org.unlaxer.parser;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

import org.unlaxer.util.FactoryBoundCache;

public class ParserFactoryBySupplier{
	
	static FactoryBoundCache, Parser>//
		singletonsBySupplier = new FactoryBoundCache<>((supplier) -> {
			try {
				Parser parser = supplier.get();
				return parser;
			} catch (Exception e) {
				throw new RuntimeException(e);
			}
		});
	
	@SuppressWarnings("unchecked")
	public static  T get(Supplier supplier) {
		T parser = (T) singletonsBySupplier.get(supplier);
		if(false == initialized(supplier)) {
			initilizedBySupplier.put(supplier, true);
			parser.initialize();
		}
		return parser;
	}
	
	static Map , Boolean> 
		initilizedBySupplier = new HashMap<>();
	
	static boolean initialized(Supplier supplier) {
		return initilizedBySupplier.getOrDefault(supplier, false);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy