| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| package org.mockito.internal.stubbing.defaultanswers; |
| |
| import org.mockito.internal.MockitoCore; |
| import org.mockito.internal.creation.MockSettingsImpl; |
| import org.mockito.invocation.InvocationOnMock; |
| import org.mockito.stubbing.Answer; |
| |
| import java.io.Serializable; |
| |
| public class ReturnsMocks implements Answer<Object>, Serializable { |
| |
| private static final long serialVersionUID = -6755257986994634579L; |
| private final MockitoCore mockitoCore = new MockitoCore(); |
| private final Answer<Object> delegate = new ReturnsMoreEmptyValues(); |
| |
| public Object answer(InvocationOnMock invocation) throws Throwable { |
| Object ret = delegate.answer(invocation); |
| if (ret != null) { |
| return ret; |
| } |
| |
| return returnValueFor(invocation.getMethod().getReturnType()); |
| } |
| |
| Object returnValueFor(Class<?> clazz) { |
| if (!mockitoCore.isTypeMockable(clazz)) { |
| return null; |
| } |
| |
| return mockitoCore.mock(clazz, new MockSettingsImpl().defaultAnswer(this)); |
| } |
| } |