| /* |
| * Copyright (c) 2019 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockito.plugins; |
| |
| import org.mockito.Incubating; |
| import org.mockito.MockitoFramework; |
| |
| /** |
| * Extension to {@link MockMaker} for mock makers that changes inline method implementations |
| * and need keep track of created mock objects. |
| * <p> |
| * Mockito's default inline mock maker keeps track of created mock objects via weak reference map. |
| * This poses a risk of memory leaks in certain scenarios |
| * (issue <a href="https://github.com/mockito/mockito/pull/1619">#1619</a>). |
| * There is no clean way to tackle those problems at the moment. |
| * Hence, {@code InlineMockMaker} interface exposes methods to explicitly clear mock references. |
| * Those methods are called by {@link MockitoFramework#clearInlineMocks()}. |
| * When the user encounters a leak, he can mitigate the problem with {@link MockitoFramework#clearInlineMocks()}. |
| * <p> |
| * {@code InlineMockMaker} is for expert users and framework integrators, when custom inline mock maker is in use. |
| * If you have a custom {@link MockMaker} that keeps track of mock objects, |
| * please have your mock maker implement {@code InlineMockMaker} interface. |
| * This way, it can participate in {@link MockitoFramework#clearInlineMocks()} API. |
| * |
| * @since 2.25.0 |
| */ |
| @Incubating |
| public interface InlineMockMaker extends MockMaker { |
| |
| /** |
| * Clean up internal state for specified {@code mock}. You may assume there won't be any interaction to the specific |
| * mock after this is called. |
| * |
| * @param mock the mock instance whose internal state is to be cleaned. |
| * @since 2.25.0 |
| */ |
| @Incubating |
| void clearMock(Object mock); |
| |
| /** |
| * Cleans up internal state for all existing mocks. You may assume there won't be any interaction to mocks created |
| * previously after this is called. |
| * |
| * @since 2.25.0 |
| */ |
| @Incubating |
| void clearAllMocks(); |
| |
| } |