1/*
2 * Copyright (c) 2007 Mockito contributors
3 * This program is made available under the terms of the MIT License.
4 */
5
6package org.mockito.internal.progress;
7
8import java.io.Serializable;
9
10import org.mockito.MockSettings;
11import org.mockito.internal.listeners.MockingProgressListener;
12import org.mockito.invocation.Invocation;
13import org.mockito.verification.VerificationMode;
14
15@SuppressWarnings("unchecked")
16public class ThreadSafeMockingProgress implements MockingProgress, Serializable {
17
18    private static final long serialVersionUID = 6839454041642082618L;
19    private static ThreadLocal<MockingProgress> mockingProgress = new ThreadLocal<MockingProgress>();
20
21    static MockingProgress threadSafely() {
22        if (mockingProgress.get() == null) {
23            mockingProgress.set(new MockingProgressImpl());
24        }
25        return mockingProgress.get();
26    }
27
28    public void reportOngoingStubbing(IOngoingStubbing iOngoingStubbing) {
29        threadSafely().reportOngoingStubbing(iOngoingStubbing);
30    }
31
32    public IOngoingStubbing pullOngoingStubbing() {
33        return threadSafely().pullOngoingStubbing();
34    }
35
36    public void verificationStarted(VerificationMode verify) {
37        threadSafely().verificationStarted(verify);
38    }
39
40    public VerificationMode pullVerificationMode() {
41        return threadSafely().pullVerificationMode();
42    }
43
44    public void stubbingStarted() {
45        threadSafely().stubbingStarted();
46    }
47
48    public void validateState() {
49        threadSafely().validateState();
50    }
51
52    public void stubbingCompleted(Invocation invocation) {
53        threadSafely().stubbingCompleted(invocation);
54    }
55
56    public String toString() {
57        return threadSafely().toString();
58    }
59
60    public void reset() {
61        threadSafely().reset();
62    }
63
64    public void resetOngoingStubbing() {
65        threadSafely().resetOngoingStubbing();
66    }
67
68    public ArgumentMatcherStorage getArgumentMatcherStorage() {
69        return threadSafely().getArgumentMatcherStorage();
70    }
71
72    public void mockingStarted(Object mock, Class classToMock) {
73        threadSafely().mockingStarted(mock, classToMock);
74    }
75
76    public void setListener(MockingProgressListener listener) {
77        threadSafely().setListener(listener);
78    }
79}