package eu.dnetlib.test.utils;

import org.springframework.beans.factory.FactoryBean;
import static org.mockito.Mockito.mock;

/**
 * Return a mockito mock for a given class.
 *
 * @author marko
 *
 */
public class MockBeanFactory implements FactoryBean {

	/**
	 * class to mock.
	 */
	private Class<?> clazz;

	/**
	 * {@inheritDoc}
	 * @see org.springframework.beans.factory.FactoryBean#getObject()
	 */
	public Object getObject() throws Exception {
		return mock(clazz);
	}

	/**
	 * {@inheritDoc}
	 * @see org.springframework.beans.factory.FactoryBean#getObjectType()
	 */
	public Class<?> getObjectType() {
		return clazz;
	}

	/**
	 * {@inheritDoc}
	 * @see org.springframework.beans.factory.FactoryBean#isSingleton()
	 */
	public boolean isSingleton() {
		return true;
	}

	public Class<?> getClazz() {
		return clazz;
	}

	public void setClazz(final Class<?> clazz) {
		this.clazz = clazz;
	}

}
