diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ed9e052..699c108 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -13,7 +13,6 @@
-
diff --git a/provider/src/main/java/m/co/rh/id/aprovider/ProviderModule.java b/provider/src/main/java/m/co/rh/id/aprovider/ProviderModule.java
index 3f37e49..b961738 100644
--- a/provider/src/main/java/m/co/rh/id/aprovider/ProviderModule.java
+++ b/provider/src/main/java/m/co/rh/id/aprovider/ProviderModule.java
@@ -17,5 +17,7 @@ public interface ProviderModule {
*
* @param provider provider to assist in retrieving registered components from other modules
*/
- void dispose(Provider provider);
+ default void dispose(Provider provider) {
+ // Default leave blank
+ }
}
diff --git a/provider/src/test/java/m/co/rh/id/aprovider/DefaultNestedProviderUnitTest.java b/provider/src/test/java/m/co/rh/id/aprovider/DefaultNestedProviderUnitTest.java
index 0c04584..b54030e 100644
--- a/provider/src/test/java/m/co/rh/id/aprovider/DefaultNestedProviderUnitTest.java
+++ b/provider/src/test/java/m/co/rh/id/aprovider/DefaultNestedProviderUnitTest.java
@@ -53,18 +53,9 @@ public class DefaultNestedProviderUnitTest {
@Test
public void getProviderRegistryUsingGet() {
- ServiceAImpl serviceA = new ServiceAImpl();
Provider testProvider = Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- // leave blank
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
+ null, mockContext, (providerRegistry, provider) -> {
+ // leave blank
});
assertSame(testProvider.get(ProviderRegistry.class), testProvider);
@@ -78,17 +69,9 @@ public void singleton_registrationAndExactGet() {
ExecutorService executorService = Executors.newSingleThreadExecutor();
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
Provider testProvider = Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService);
- providerRegistry.register(ExecutorService.class, executorService);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
+ null, mockContext, (providerRegistry, provider) -> {
+ providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService);
+ providerRegistry.register(ExecutorService.class, executorService);
});
assertSame(testProvider.get(ExecutorService.class), executorService);
@@ -105,17 +88,7 @@ public void dispose(Provider provider) {
public void singleton_registrationAndGet() {
ServiceAImpl serviceA = new ServiceAImpl();
Provider testProvider = Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ null, mockContext, (providerRegistry, provider) -> providerRegistry.register(IServiceA.class, serviceA));
IServiceA serviceAFromProvider = testProvider.get(IServiceA.class);
assertSame(serviceAFromProvider, serviceA);
@@ -139,17 +112,7 @@ public void dispose(Provider provider) {
public void singleton_registrationAndLazyGet() {
ServiceAImpl serviceA = new ServiceAImpl();
Provider testProvider = Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ null, mockContext, (providerRegistry, provider) -> providerRegistry.register(IServiceA.class, serviceA));
IServiceA serviceAFromProvider = testProvider.lazyGet(IServiceA.class).get();
assertSame(serviceAFromProvider, serviceA);
@@ -177,16 +140,8 @@ public void singleton_registrationAndLazyGetAndTryLazyGetDifference() {
ServiceAImpl serviceA = new ServiceAImpl();
DefaultNestedProvider testProvider = (DefaultNestedProvider)
Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- // leave blank
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
+ null, mockContext, (providerRegistry, provider) -> {
+ // leave blank
});
assertThrows(NullPointerException.class, () -> testProvider.get(IServiceA.class));
@@ -213,17 +168,9 @@ public void dispose(Provider provider) {
public void singleton_registerSameClass() {
ServiceAImpl serviceA = new ServiceAImpl();
Provider.createNestedProvider("test",
- null, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- providerRegistry.register(IServiceA.class, new ServiceAImpl());
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ null, mockContext, (providerRegistry, provider) -> {
+ providerRegistry.register(IServiceA.class, serviceA);
+ providerRegistry.register(IServiceA.class, new ServiceAImpl());
});
}
@@ -231,17 +178,7 @@ public void dispose(Provider provider) {
public void module_registrationAndGet() {
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(new ModuleA());
- }
-
- @Override
- public void dispose(Provider provider) {
-
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerModule(new ModuleA()));
IServiceA serviceAFromProvider = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider);
@@ -266,17 +203,9 @@ public void module_registrationMultipleSameModule() {
// the exception was caused by duplicate services, NOT cause by multiple module instances
Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(new ModuleA());
- providerRegistry.registerModule(new ModuleA());
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerModule(new ModuleA());
+ providerRegistry.registerModule(new ModuleA());
});
}
@@ -294,17 +223,7 @@ public void module_registrationAndDispose() {
final ModuleA registerModuleA = new ModuleA();
testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(registerModuleA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerModule(registerModuleA));
assertFalse(registerModuleA.isDisposed);
testProvider.dispose();
assertTrue(registerModuleA.isDisposed);
@@ -314,18 +233,8 @@ public void dispose(Provider provider) {
public void lazySingleton_registrationAndGet() {
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new));
IServiceA serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
IServiceA serviceAFromProvider2 = testProvider.get(IServiceA.class);
@@ -350,18 +259,8 @@ public void dispose(Provider provider) {
public void lazySingleton_executorService_registrationAndGet() {
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- ExecutorService.class, Executors::newSingleThreadExecutor);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerLazy(
+ ExecutorService.class, Executors::newSingleThreadExecutor));
ExecutorService executorServiceFromProvider1 = testProvider.get(ExecutorService.class);
assertNotNull(executorServiceFromProvider1);
// ExecutorService extends Executor, must be able to get instance if using parent class
@@ -378,20 +277,12 @@ public void lazySingleton_dependencyInversionPattern() {
*/
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
// try to get IServiceB first to check if it works
IServiceB serviceBFromProvider1 = testProvider.get(IServiceB.class);
@@ -412,20 +303,12 @@ public void dispose(Provider provider) {
// Another similar scenario, only get IServiceA first then get IServiceB
testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
@@ -451,20 +334,12 @@ public void lazyFuture_dependencyInversionPattern() {
*/
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerAsync(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerAsync(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerAsync(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerAsync(
+ IServiceA.class, ServiceAImpl::new);
});
// try to get IServiceB first to check if it works
IServiceB serviceBFromProvider1 = testProvider.get(IServiceB.class);
@@ -485,20 +360,12 @@ public void dispose(Provider provider) {
// Another similar scenario, only get IServiceA first then get IServiceB
testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
@@ -519,22 +386,12 @@ public void dispose(Provider provider) {
public void factory_registrationAndGet() {
Provider testProvider = Provider.createNestedProvider("test",
null, mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerFactory(MyPojo.class, () -> {
- MyPojo myPojo = new MyPojo();
- myPojo.setAge(99);
- myPojo.setName("Foo");
- return myPojo;
- });
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerFactory(MyPojo.class, () -> {
+ MyPojo myPojo = new MyPojo();
+ myPojo.setAge(99);
+ myPojo.setName("Foo");
+ return myPojo;
+ }));
MyPojo myPojo1 = testProvider.get(MyPojo.class);
assertNotNull(myPojo1);
assertEquals(myPojo1.getAge(), 99);
@@ -571,22 +428,12 @@ public void dispose(Provider provider) {
@Test
public void pool_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerPool(MyPojo.class, () -> {
- MyPojo myPojo = new MyPojo();
- myPojo.setAge(99);
- myPojo.setName("Foo");
- return myPojo;
- });
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerPool(MyPojo.class, () -> {
+ MyPojo myPojo = new MyPojo();
+ myPojo.setAge(99);
+ myPojo.setName("Foo");
+ return myPojo;
+ }));
MyPojo myPojo1 = testProvider.get(MyPojo.class);
assertNotNull(myPojo1);
assertEquals(myPojo1.getAge(), 99);
@@ -626,36 +473,28 @@ public void disposableComponents_registerAndDisposeWithoutGet() throws Interrupt
DisposableRegisterFactoryService registerFactoryService = Mockito.mock(DisposableRegisterFactoryService.class);
DisposableRegisterPoolService registerPoolService = Mockito.mock(DisposableRegisterPoolService.class);
DisposableRegisterLazyService registerLazyService = Mockito.mock(DisposableRegisterLazyService.class);
- ProviderModule providerModule = new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(
- DisposableRegisterService.class,
- registerService
- );
- providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
- () -> registerAsyncService
- );
- // Register factory always return same instance for testing purposes
- // dispose should not be called since "get" is not called
- providerRegistry.registerFactory(
- DisposableRegisterFactoryService.class,
- () -> registerFactoryService
- );
- // Register pool always return same instance for testing purposes
- // dispose should not be called since "get" is not called
- providerRegistry.registerPool(DisposableRegisterPoolService.class,
- () -> registerPoolService);
- providerRegistry.registerLazy(
- DisposableRegisterLazyService.class,
- () -> registerLazyService
- );
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ ProviderModule providerModule = (providerRegistry, provider) -> {
+ providerRegistry.register(
+ DisposableRegisterService.class,
+ registerService
+ );
+ providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
+ () -> registerAsyncService
+ );
+ // Register factory always return same instance for testing purposes
+ // dispose should not be called since "get" is not called
+ providerRegistry.registerFactory(
+ DisposableRegisterFactoryService.class,
+ () -> registerFactoryService
+ );
+ // Register pool always return same instance for testing purposes
+ // dispose should not be called since "get" is not called
+ providerRegistry.registerPool(DisposableRegisterPoolService.class,
+ () -> registerPoolService);
+ providerRegistry.registerLazy(
+ DisposableRegisterLazyService.class,
+ () -> registerLazyService
+ );
};
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
threadPoolExecutor.prestartAllCoreThreads();
@@ -685,34 +524,26 @@ public void disposableComponents_registerGetAndThenDispose() throws InterruptedE
DisposableRegisterService registerService = Mockito.mock(DisposableRegisterService.class);
DisposableRegisterAsyncService registerAsyncService = Mockito.mock(DisposableRegisterAsyncService.class);
DisposableRegisterLazyService registerLazyService = Mockito.mock(DisposableRegisterLazyService.class);
- ProviderModule providerModule = new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(
- DisposableRegisterService.class,
- registerService
- );
- providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
- () -> registerAsyncService
- );
- providerRegistry.registerFactory(
- DisposableRegisterFactoryService.class,
- () -> Mockito.mock(DisposableRegisterFactoryService.class)
- );
- providerRegistry.registerPool(
- DisposableRegisterPoolService.class,
- () -> Mockito.mock(DisposableRegisterPoolService.class)
- );
- providerRegistry.registerLazy(
- DisposableRegisterLazyService.class,
- () -> registerLazyService
- );
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ ProviderModule providerModule = (providerRegistry, provider) -> {
+ providerRegistry.register(
+ DisposableRegisterService.class,
+ registerService
+ );
+ providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
+ () -> registerAsyncService
+ );
+ providerRegistry.registerFactory(
+ DisposableRegisterFactoryService.class,
+ () -> Mockito.mock(DisposableRegisterFactoryService.class)
+ );
+ providerRegistry.registerPool(
+ DisposableRegisterPoolService.class,
+ () -> Mockito.mock(DisposableRegisterPoolService.class)
+ );
+ providerRegistry.registerLazy(
+ DisposableRegisterLazyService.class,
+ () -> registerLazyService
+ );
};
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
threadPoolExecutor.prestartAllCoreThreads();
@@ -785,29 +616,13 @@ public void singletonParent_registrationAndExactGet() {
// testing real case scenario where you need both ExecutorService & ScheduledExecutorService
ExecutorService executorService = Executors.newSingleThreadExecutor();
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- Provider rootProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider rootProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(ExecutorService.class, executorService);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ rootProvider, mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.register(ExecutorService.class, executorService));
assertSame(testProvider.get(ExecutorService.class), executorService);
assertSame(testProvider.get(ScheduledExecutorService.class), scheduledExecutorService);
@@ -822,31 +637,14 @@ public void dispose(Provider provider) {
@Test
public void factoryParent_registrationAndExactGet() {
// testing real case scenario where you need both ExecutorService & ScheduledExecutorService
- Provider rootProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerFactory(IServiceA.class,
- () -> Mockito.mock(IServiceA.class));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider rootProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.registerFactory(IServiceA.class,
+ () -> Mockito.mock(IServiceA.class)));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
+ rootProvider, mockContext, (providerRegistry, provider) ->
providerRegistry.registerFactory(IServiceB.class,
- () -> Mockito.mock(IServiceB.class));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ () -> Mockito.mock(IServiceB.class)));
IServiceA serviceA1 = testProvider.get(IServiceA.class);
IServiceA serviceA2 = testProvider.get(IServiceA.class);
@@ -858,30 +656,13 @@ public void dispose(Provider provider) {
@Test
public void singletonParent_registrationAndExactGet_withParentDependency() {
- Provider rootProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider rootProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.registerLazy(IServiceA.class, ServiceAImpl::new));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
+ rootProvider, mockContext, (providerRegistry, provider) ->
providerRegistry.registerLazy(IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ () -> new ServiceBImpl(provider.get(IServiceA.class))));
IServiceB serviceB = testProvider.get(IServiceB.class);
IServiceA serviceA = testProvider.get(IServiceA.class);
@@ -892,30 +673,12 @@ public void dispose(Provider provider) {
@Test
public void singletonParent_registrationAndExactGet_withParentDependencyAndParentNestedProvider() {
Provider rootProvider = Provider.createNestedProvider("test", null,
- mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ mockContext, (providerRegistry, provider) ->
+ providerRegistry.registerLazy(IServiceA.class, ServiceAImpl::new));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
+ rootProvider, mockContext, (providerRegistry, provider) ->
providerRegistry.registerLazy(IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ () -> new ServiceBImpl(provider.get(IServiceA.class))));
IServiceB serviceB = testProvider.get(IServiceB.class);
IServiceA serviceA = testProvider.get(IServiceA.class);
@@ -925,30 +688,13 @@ public void dispose(Provider provider) {
@Test
public void singletonParent_registerAsyncAndExactGet_withParentDependency() {
- Provider rootProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerAsync(IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider rootProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.registerAsync(IServiceA.class, ServiceAImpl::new));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
+ rootProvider, mockContext, (providerRegistry, provider) ->
providerRegistry.registerAsync(IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ () -> new ServiceBImpl(provider.get(IServiceA.class))));
IServiceB serviceB = testProvider.get(IServiceB.class);
IServiceA serviceA = testProvider.get(IServiceA.class);
@@ -958,32 +704,15 @@ public void dispose(Provider provider) {
@Test
public void singletonParent_registerAndExactGet_withParentDependencyAndChildInvokeGet() {
- Provider rootProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider rootProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) -> providerRegistry.register(IServiceA.class, ServiceAImpl::new));
Provider testProvider = Provider.createNestedProvider("test",
- rootProvider, mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- // test get value here,
- // should contain value from parent
- IServiceA iServiceA = provider.get(IServiceA.class);
- providerRegistry.registerAsync(IServiceB.class,
- () -> new ServiceBImpl(iServiceA));
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
+ rootProvider, mockContext, (providerRegistry, provider) -> {
+ // test get value here,
+ // should contain value from parent
+ IServiceA iServiceA = provider.get(IServiceA.class);
+ providerRegistry.registerAsync(IServiceB.class,
+ () -> new ServiceBImpl(iServiceA));
});
IServiceB serviceB = testProvider.get(IServiceB.class);
diff --git a/provider/src/test/java/m/co/rh/id/aprovider/DefaultProviderUnitTest.java b/provider/src/test/java/m/co/rh/id/aprovider/DefaultProviderUnitTest.java
index a8f2737..ed13833 100644
--- a/provider/src/test/java/m/co/rh/id/aprovider/DefaultProviderUnitTest.java
+++ b/provider/src/test/java/m/co/rh/id/aprovider/DefaultProviderUnitTest.java
@@ -53,18 +53,10 @@ public class DefaultProviderUnitTest {
@Test
public void getProviderRegistryUsingGet() {
- ServiceAImpl serviceA = new ServiceAImpl();
- Provider testProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- // leave blank
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider testProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) -> {
+ // leave blank
+ });
assertSame(testProvider.get(ProviderRegistry.class), testProvider);
assertSame(testProvider.lazyGet(ProviderRegistry.class).get(), testProvider);
@@ -76,18 +68,11 @@ public void singleton_registrationAndExactGet() {
// testing real case scenario where you need both ExecutorService & ScheduledExecutorService
ExecutorService executorService = Executors.newSingleThreadExecutor();
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- Provider testProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService);
- providerRegistry.register(ExecutorService.class, executorService);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider testProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) -> {
+ providerRegistry.register(ScheduledExecutorService.class, scheduledExecutorService);
+ providerRegistry.register(ExecutorService.class, executorService);
+ });
assertSame(testProvider.get(ExecutorService.class), executorService);
assertSame(testProvider.get(ScheduledExecutorService.class), scheduledExecutorService);
@@ -102,17 +87,9 @@ public void dispose(Provider provider) {
@Test
public void singleton_registrationAndGet() {
ServiceAImpl serviceA = new ServiceAImpl();
- Provider testProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider testProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.register(IServiceA.class, serviceA));
IServiceA serviceAFromProvider = testProvider.get(IServiceA.class);
assertSame(serviceAFromProvider, serviceA);
@@ -135,17 +112,9 @@ public void dispose(Provider provider) {
@Test
public void singleton_registrationAndLazyGet() {
ServiceAImpl serviceA = new ServiceAImpl();
- Provider testProvider = Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
- });
+ Provider testProvider = Provider.createProvider(mockContext,
+ (providerRegistry, provider) ->
+ providerRegistry.register(IServiceA.class, serviceA));
IServiceA serviceAFromProvider = testProvider.lazyGet(IServiceA.class).get();
assertSame(serviceAFromProvider, serviceA);
@@ -172,16 +141,8 @@ public void dispose(Provider provider) {
public void singleton_registrationAndLazyGetAndTryLazyGetDifference() {
ServiceAImpl serviceA = new ServiceAImpl();
DefaultProvider testProvider = (DefaultProvider)
- Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- // leave blank
- }
-
- @Override
- public void dispose(Provider provider) {
- // nothing to dispose
- }
+ Provider.createProvider(mockContext, (providerRegistry, provider) -> {
+ // leave blank
});
assertThrows(NullPointerException.class, () -> testProvider.get(IServiceA.class));
@@ -207,34 +168,16 @@ public void dispose(Provider provider) {
@Test(expected = IllegalArgumentException.class)
public void singleton_registerSameClass() {
ServiceAImpl serviceA = new ServiceAImpl();
- Provider.createProvider(mockContext, new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(IServiceA.class, serviceA);
- providerRegistry.register(IServiceA.class, new ServiceAImpl());
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ Provider.createProvider(mockContext, (providerRegistry, provider) -> {
+ providerRegistry.register(IServiceA.class, serviceA);
+ providerRegistry.register(IServiceA.class, new ServiceAImpl());
});
}
@Test
public void module_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(new ModuleA());
- }
-
- @Override
- public void dispose(Provider provider) {
-
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerModule(new ModuleA()));
IServiceA serviceAFromProvider = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider);
@@ -258,17 +201,9 @@ public void dispose(Provider provider) {
public void module_registrationMultipleSameModule() {
// the exception was caused by duplicate services, NOT cause by multiple module instances
Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(new ModuleA());
- providerRegistry.registerModule(new ModuleA());
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerModule(new ModuleA());
+ providerRegistry.registerModule(new ModuleA());
});
}
@@ -284,17 +219,7 @@ public void module_registrationAndDispose() {
// test another scenario where module is registered on root module
final ModuleA registerModuleA = new ModuleA();
testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerModule(registerModuleA);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerModule(registerModuleA));
assertFalse(registerModuleA.isDisposed);
testProvider.dispose();
assertTrue(registerModuleA.isDisposed);
@@ -303,18 +228,8 @@ public void dispose(Provider provider) {
@Test
public void lazySingleton_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new));
IServiceA serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
IServiceA serviceAFromProvider2 = testProvider.get(IServiceA.class);
@@ -338,18 +253,8 @@ public void dispose(Provider provider) {
@Test
public void lazySingleton_executorService_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- ExecutorService.class, Executors::newSingleThreadExecutor);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerLazy(
+ ExecutorService.class, Executors::newSingleThreadExecutor));
ExecutorService executorServiceFromProvider1 = testProvider.get(ExecutorService.class);
assertNotNull(executorServiceFromProvider1);
// ExecutorService extends Executor, must be able to get instance if using parent class
@@ -365,20 +270,12 @@ public void lazySingleton_dependencyInversionPattern() {
The provider support this inversion pattern by using LazySingletonProviderRegister
*/
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
// try to get IServiceB first to check if it works
IServiceB serviceBFromProvider1 = testProvider.get(IServiceB.class);
@@ -398,20 +295,12 @@ public void dispose(Provider provider) {
// Another similar scenario, only get IServiceA first then get IServiceB
testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
@@ -436,20 +325,12 @@ public void lazyFuture_dependencyInversionPattern() {
The provider support this inversion pattern by using LazySingletonProviderRegister
*/
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerAsync(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerAsync(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerAsync(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerAsync(
+ IServiceA.class, ServiceAImpl::new);
});
// try to get IServiceB first to check if it works
IServiceB serviceBFromProvider1 = testProvider.get(IServiceB.class);
@@ -469,20 +350,12 @@ public void dispose(Provider provider) {
// Another similar scenario, only get IServiceA first then get IServiceB
testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerLazy(
- IServiceB.class,
- () -> new ServiceBImpl(provider.get(IServiceA.class)));
- providerRegistry.registerLazy(
- IServiceA.class, ServiceAImpl::new);
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ (providerRegistry, provider) -> {
+ providerRegistry.registerLazy(
+ IServiceB.class,
+ () -> new ServiceBImpl(provider.get(IServiceA.class)));
+ providerRegistry.registerLazy(
+ IServiceA.class, ServiceAImpl::new);
});
serviceAFromProvider1 = testProvider.get(IServiceA.class);
assertNotNull(serviceAFromProvider1);
@@ -502,22 +375,12 @@ public void dispose(Provider provider) {
@Test
public void factory_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerFactory(MyPojo.class, () -> {
- MyPojo myPojo = new MyPojo();
- myPojo.setAge(99);
- myPojo.setName("Foo");
- return myPojo;
- });
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerFactory(MyPojo.class, () -> {
+ MyPojo myPojo = new MyPojo();
+ myPojo.setAge(99);
+ myPojo.setName("Foo");
+ return myPojo;
+ }));
MyPojo myPojo1 = testProvider.get(MyPojo.class);
assertNotNull(myPojo1);
assertEquals(myPojo1.getAge(), 99);
@@ -554,22 +417,12 @@ public void dispose(Provider provider) {
@Test
public void pool_registrationAndGet() {
Provider testProvider = Provider.createProvider(mockContext,
- new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.registerPool(MyPojo.class, () -> {
- MyPojo myPojo = new MyPojo();
- myPojo.setAge(99);
- myPojo.setName("Foo");
- return myPojo;
- });
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
- });
+ (providerRegistry, provider) -> providerRegistry.registerPool(MyPojo.class, () -> {
+ MyPojo myPojo = new MyPojo();
+ myPojo.setAge(99);
+ myPojo.setName("Foo");
+ return myPojo;
+ }));
MyPojo myPojo1 = testProvider.get(MyPojo.class);
assertNotNull(myPojo1);
assertEquals(myPojo1.getAge(), 99);
@@ -609,36 +462,28 @@ public void disposableComponents_registerAndDisposeWithoutGet() throws Interrupt
DisposableRegisterFactoryService registerFactoryService = Mockito.mock(DisposableRegisterFactoryService.class);
DisposableRegisterPoolService registerPoolService = Mockito.mock(DisposableRegisterPoolService.class);
DisposableRegisterLazyService registerLazyService = Mockito.mock(DisposableRegisterLazyService.class);
- ProviderModule providerModule = new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(
- DisposableRegisterService.class,
- registerService
- );
- providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
- () -> registerAsyncService
- );
- // Register factory always return same instance for testing purposes
- // dispose should not be called since "get" is not called
- providerRegistry.registerFactory(
- DisposableRegisterFactoryService.class,
- () -> registerFactoryService
- );
- // Register pool always return same instance for testing purposes
- // dispose should not be called since "get" is not called
- providerRegistry.registerPool(DisposableRegisterPoolService.class,
- () -> registerPoolService);
- providerRegistry.registerLazy(
- DisposableRegisterLazyService.class,
- () -> registerLazyService
- );
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ ProviderModule providerModule = (providerRegistry, provider) -> {
+ providerRegistry.register(
+ DisposableRegisterService.class,
+ registerService
+ );
+ providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
+ () -> registerAsyncService
+ );
+ // Register factory always return same instance for testing purposes
+ // dispose should not be called since "get" is not called
+ providerRegistry.registerFactory(
+ DisposableRegisterFactoryService.class,
+ () -> registerFactoryService
+ );
+ // Register pool always return same instance for testing purposes
+ // dispose should not be called since "get" is not called
+ providerRegistry.registerPool(DisposableRegisterPoolService.class,
+ () -> registerPoolService);
+ providerRegistry.registerLazy(
+ DisposableRegisterLazyService.class,
+ () -> registerLazyService
+ );
};
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
threadPoolExecutor.prestartAllCoreThreads();
@@ -667,34 +512,26 @@ public void disposableComponents_registerGetAndThenDispose() throws InterruptedE
DisposableRegisterService registerService = Mockito.mock(DisposableRegisterService.class);
DisposableRegisterAsyncService registerAsyncService = Mockito.mock(DisposableRegisterAsyncService.class);
DisposableRegisterLazyService registerLazyService = Mockito.mock(DisposableRegisterLazyService.class);
- ProviderModule providerModule = new ProviderModule() {
- @Override
- public void provides(ProviderRegistry providerRegistry, Provider provider) {
- providerRegistry.register(
- DisposableRegisterService.class,
- registerService
- );
- providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
- () -> registerAsyncService
- );
- providerRegistry.registerFactory(
- DisposableRegisterFactoryService.class,
- () -> Mockito.mock(DisposableRegisterFactoryService.class)
- );
- providerRegistry.registerPool(
- DisposableRegisterPoolService.class,
- () -> Mockito.mock(DisposableRegisterPoolService.class)
- );
- providerRegistry.registerLazy(
- DisposableRegisterLazyService.class,
- () -> registerLazyService
- );
- }
-
- @Override
- public void dispose(Provider provider) {
- // leave blank
- }
+ ProviderModule providerModule = (providerRegistry, provider) -> {
+ providerRegistry.register(
+ DisposableRegisterService.class,
+ registerService
+ );
+ providerRegistry.registerAsync(DisposableRegisterAsyncService.class,
+ () -> registerAsyncService
+ );
+ providerRegistry.registerFactory(
+ DisposableRegisterFactoryService.class,
+ () -> Mockito.mock(DisposableRegisterFactoryService.class)
+ );
+ providerRegistry.registerPool(
+ DisposableRegisterPoolService.class,
+ () -> Mockito.mock(DisposableRegisterPoolService.class)
+ );
+ providerRegistry.registerLazy(
+ DisposableRegisterLazyService.class,
+ () -> registerLazyService
+ );
};
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
threadPoolExecutor.prestartAllCoreThreads();