/* | |
* 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)); | |
} | |
} |