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

com.daredayo.util.Patient Maven / Gradle / Ivy

package com.daredayo.util;

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

public class Patient {

	public static ThreadLocal> raiseExceptionByName = new ThreadLocal<>();
	
	public static  void set(PoisonSpecifier poisonSpecifier, Boolean raiseException) {
		set(poisonSpecifier.getNameSpecifier(),raiseException);
	}

	public static void set(NameSpecifier nameSpecifier, Boolean raiseException) {
		getRaiseExceptionByName().put(nameSpecifier, raiseException);
	}

	public static void detroxify(NameSpecifier nameSpecifier) {
		set(nameSpecifier, false);
	}
	
	public static  void detroxify(PoisonSpecifier poisonSpecifier) {
		set(poisonSpecifier.getNameSpecifier(), false);
	}


	public static  void dose(NameSpecifier nameSpecifier, Supplier exception) throws V {

		Boolean b = getRaiseExceptionByName().get(nameSpecifier);
		if (b == null) {
			return;
		}
		if (Boolean.valueOf(b)) {
			throw exception.get();
		}
	}
	
	public static  void dose(PoisonSpecifier poisonSpecifier) throws V {

		Boolean b = getRaiseExceptionByName().get(poisonSpecifier.getNameSpecifier());
		if (b == null) {
			return;
		}
		if (Boolean.valueOf(b)) {
			throw poisonSpecifier.getException().get();
		}
	}
	
	static Map getRaiseExceptionByName(){
		Map map = raiseExceptionByName.get();
		if(map == null){
			map = new HashMap<>();
			raiseExceptionByName.set(map);
		}
		return map;
	}


	public interface PoisonSpecifier {
		public NameSpecifier getNameSpecifier();

		public Supplier getException();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy