/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.configuration; import org.mockito.ReturnValues; import org.mockito.configuration.AnnotationEngine; import org.mockito.configuration.DefaultMockitoConfiguration; import org.mockito.configuration.IMockitoConfiguration; import org.mockito.stubbing.Answer; import java.io.Serializable; /** * Thread-safe wrapper on user-defined org.mockito.configuration.MockitoConfiguration implementation */ @SuppressWarnings("deprecation")//supressed until ReturnValues are removed public class GlobalConfiguration implements IMockitoConfiguration, Serializable { static final long serialVersionUID = -2860353062105505938L; private static ThreadLocal globalConfiguration = new ThreadLocal(); //back door for testing IMockitoConfiguration getIt() { return globalConfiguration.get(); } public GlobalConfiguration() { //Configuration should be loaded only once but I cannot really test it if (globalConfiguration.get() == null) { globalConfiguration.set(createConfig()); } } private IMockitoConfiguration createConfig() { IMockitoConfiguration defaultConfiguration = new DefaultMockitoConfiguration(); IMockitoConfiguration config = new ClassPathLoader().loadConfiguration(); if (config != null) { return config; } else { return defaultConfiguration; } } public static void validate() { new GlobalConfiguration(); } public ReturnValues getReturnValues() { return globalConfiguration.get().getReturnValues(); } public AnnotationEngine getAnnotationEngine() { return globalConfiguration.get().getAnnotationEngine(); } public boolean cleansStackTrace() { return globalConfiguration.get().cleansStackTrace(); } public boolean enableClassCache() { return globalConfiguration.get().enableClassCache(); } public Answer getDefaultAnswer() { return globalConfiguration.get().getDefaultAnswer(); } }