| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.verification; |
| |
| import java.util.Set; |
| import org.mockito.internal.verification.api.VerificationData; |
| import org.mockito.listeners.VerificationListener; |
| import org.mockito.verification.VerificationEvent; |
| import org.mockito.verification.VerificationMode; |
| |
| public class MockAwareVerificationMode implements VerificationMode { |
| |
| private final Object mock; |
| private final VerificationMode mode; |
| private final Set<VerificationListener> listeners; |
| |
| public MockAwareVerificationMode(Object mock, VerificationMode mode, Set<VerificationListener> listeners) { |
| this.mock = mock; |
| this.mode = mode; |
| this.listeners = listeners; |
| } |
| |
| public void verify(VerificationData data) { |
| try { |
| mode.verify(data); |
| notifyListeners(new VerificationEventImpl(mock, mode, data, null)); |
| } catch (RuntimeException e) { |
| notifyListeners(new VerificationEventImpl(mock, mode, data, e)); |
| throw e; |
| } catch (Error e) { |
| notifyListeners(new VerificationEventImpl(mock, mode, data, e)); |
| throw e; |
| } |
| } |
| |
| |
| private void notifyListeners(VerificationEvent event) { |
| for (VerificationListener listener : listeners) { |
| listener.onVerification(event); |
| } |
| } |
| |
| public Object getMock() { |
| return mock; |
| } |
| |
| public VerificationMode description(String description) { |
| return VerificationModeFactory.description(this, description); |
| } |
| } |