| 1 | |
package biz.xsoftware.impl.mock; |
| 2 | |
|
| 3 | |
import java.lang.reflect.Proxy; |
| 4 | |
|
| 5 | |
import biz.xsoftware.mock.MockObject; |
| 6 | |
import biz.xsoftware.mock.MockObjectFactory; |
| 7 | |
|
| 8 | 14 | public final class MockObjectFactoryImpl extends MockObjectFactory { |
| 9 | |
|
| 10 | |
@Override |
| 11 | |
public MockObject createMockImpl(final String id, final Class<?>[] interfaces) { |
| 12 | 98 | final Class<?>[] interfacesPlusMock = new Class[interfaces.length + 1]; |
| 13 | 98 | interfacesPlusMock[0] = MockObject.class; |
| 14 | 196 | for (int i = 1; i < interfacesPlusMock.length; i++) { |
| 15 | 98 | if (interfaces[i - 1] == null) { |
| 16 | |
|
| 17 | 0 | throw new NullPointerException("interface(s) given cannot be null"); |
| 18 | |
} |
| 19 | 98 | interfacesPlusMock[i] = interfaces[i - 1]; |
| 20 | |
} |
| 21 | |
|
| 22 | 98 | ClassLoader cl = MockObjectFactory.class.getClassLoader(); |
| 23 | 98 | MockObjectImpl impl = new MockObjectImpl(id, interfaces); |
| 24 | 98 | Object o = Proxy.newProxyInstance(cl, interfacesPlusMock, impl); |
| 25 | 98 | MockObject m = (MockObject) o; |
| 26 | 98 | return m; |
| 27 | |
} |
| 28 | |
} |