Refactor Renderer Module Management

- Renamed `moduleManager` to `moduleService` in RendererData for clarity.
- Updated G2DRenderer to use the new module service methods with string IDs instead of class references.
- Modified RendererWorkingSet interface and implementation to use string IDs for module identification instead of class types.
- Adjusted tests in ModuleManagerTest and RendererWorkingSetImplTest to reflect changes in module management and identification.
- Ensured consistency across the codebase by replacing class references with module IDs in method calls and assertions.
This commit is contained in:
extio-de
2025-12-25 11:56:09 +01:00
parent 72cc5afe8a
commit b0bc14793f
10 changed files with 308 additions and 360 deletions

View File

@@ -15,8 +15,8 @@ public class DemoModule extends AbstractClientModule {
@Override
public void onLoad() {
this.getModuleService().changeActiveState(this.getClass(), true);
this.getModuleService().changeDisplayState(this.getClass(), true);
this.getModuleService().changeActiveState(this.getId(), true);
this.getModuleService().changeDisplayState(this.getId(), true);
}
@Override

View File

@@ -71,7 +71,8 @@ public class ModuleManagerTest {
@Test
public void testLoadModule() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
final var newModule = new AlwaysDisplayModule();
this.moduleManager.loadModule(newModule);
assertEquals(3, this.moduleManager.getModulesAll().size());
assertTrue(this.moduleManager.getModulesAll().stream().anyMatch(m -> m instanceof AlwaysDisplayModule));
@@ -81,14 +82,14 @@ public class ModuleManagerTest {
public void testLoadModule_AlreadyLoaded() {
final int initialSize = this.moduleManager.getModulesAll().size();
this.moduleManager.loadModule(TestModule.class);
this.moduleManager.loadModule(this.testModule);
assertEquals(initialSize, this.moduleManager.getModulesAll().size());
}
@Test
public void testUnloadModule() {
this.moduleManager.unloadModule(TestModule.class);
this.moduleManager.unloadModule(this.testModule.getId());
assertEquals(1, this.moduleManager.getModulesAll().size());
assertFalse(this.moduleManager.getModulesAll().contains(this.testModule));
@@ -99,17 +100,17 @@ public class ModuleManagerTest {
public void testUnloadModule_NotLoaded() {
final int initialSize = this.moduleManager.getModulesAll().size();
this.moduleManager.unloadModule(AlwaysDisplayModule.class);
this.moduleManager.unloadModule("NonExistentModule");
assertEquals(initialSize, this.moduleManager.getModulesAll().size());
}
@Test
public void testUnloadModule_DeactivatesFirst() {
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
assertTrue(this.moduleManager.getModulesActive().contains(this.testModule));
this.moduleManager.unloadModule(TestModule.class);
this.moduleManager.unloadModule(this.testModule.getId());
assertFalse(this.moduleManager.getModulesActive().contains(this.testModule));
assertTrue(this.testModule.onDeactivateCalled);
@@ -117,7 +118,7 @@ public class ModuleManagerTest {
@Test
public void testChangeActiveState_Activate() {
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
assertTrue(this.moduleManager.getModulesActive().contains(this.testModule));
assertTrue(this.testModule.onActivateCalled);
@@ -125,10 +126,10 @@ public class ModuleManagerTest {
@Test
public void testChangeActiveState_Deactivate() {
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
this.testModule.onActivateCalled = false;
this.moduleManager.changeActiveState(TestModule.class, false);
this.moduleManager.changeActiveState(this.testModule.getId(), false);
assertFalse(this.moduleManager.getModulesActive().contains(this.testModule));
assertTrue(this.testModule.onDeactivateCalled);
@@ -136,42 +137,35 @@ public class ModuleManagerTest {
@Test
public void testChangeActiveState_AlreadyActive() {
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
this.testModule.onActivateCalled = false;
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
assertFalse(this.testModule.onActivateCalled);
}
@Test
public void testChangeActiveState_AlreadyInactive() {
this.moduleManager.changeActiveState(TestModule.class, false);
this.moduleManager.changeActiveState(this.testModule.getId(), false);
assertFalse(this.testModule.onDeactivateCalled);
}
@Test
public void testChangeActiveState_ByClassName() {
this.moduleManager.changeActiveState(TestModule.class.getName(), true);
assertTrue(this.moduleManager.getModulesActive().contains(this.testModule));
assertTrue(this.testModule.onActivateCalled);
}
@Test
public void testChangeActiveState_AlwaysDisplayModule() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
final var alwaysDisplayModule = new AlwaysDisplayModule();
this.moduleManager.loadModule(alwaysDisplayModule);
this.moduleManager.changeActiveState(AlwaysDisplayModule.class, true);
this.moduleManager.changeActiveState(alwaysDisplayModule.getId(), true);
assertTrue(this.moduleManager.isDisplayed(AlwaysDisplayModule.class));
assertTrue(this.moduleManager.isDisplayed(alwaysDisplayModule.getId()));
}
@Test
public void testDeactivateAll() {
this.moduleManager.changeActiveState(TestModule.class, true);
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testModule.getId(), true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.deactivateAll();
@@ -182,34 +176,34 @@ public class ModuleManagerTest {
@Test
public void testChangeDisplayState_Show() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.testClientModule.onShowCalled = false;
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
assertTrue(this.moduleManager.isDisplayed(TestClientModule.class));
assertTrue(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onShowCalled);
}
@Test
public void testChangeDisplayState_Hide() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.testClientModule.onHideCalled = false;
this.moduleManager.changeDisplayState(TestClientModule.class, false);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), false);
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onHideCalled);
}
@Test
public void testChangeDisplayState_AlreadyShown() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.testClientModule.onShowCalled = false;
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
assertFalse(this.testClientModule.onShowCalled, "onShow should not be called when already shown");
}
@@ -218,111 +212,98 @@ public class ModuleManagerTest {
public void testChangeDisplayState_AlreadyHidden() {
this.testClientModule.onHideCalled = false;
this.moduleManager.changeDisplayState(TestClientModule.class, false);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), false);
assertFalse(this.testClientModule.onHideCalled, "onHide should not be called when already hidden");
}
@Test
public void testChangeDisplayState_ByClassName() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.testClientModule.onShowCalled = false;
this.moduleManager.changeDisplayState(TestClientModule.class.getName(), true);
assertTrue(this.moduleManager.isDisplayed(TestClientModule.class));
}
@Test
public void testChangeDisplayState_AlwaysDisplayModule() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
this.moduleManager.changeActiveState(AlwaysDisplayModule.class, true);
final var alwaysDisplayModule = new AlwaysDisplayModule();
this.moduleManager.loadModule(alwaysDisplayModule);
this.moduleManager.changeActiveState(alwaysDisplayModule.getId(), true);
this.moduleManager.changeDisplayState(AlwaysDisplayModule.class, false);
this.moduleManager.changeDisplayState(alwaysDisplayModule.getId(), false);
assertTrue(this.moduleManager.isDisplayed(AlwaysDisplayModule.class));
}
@Test
public void testIsDisplayed_ByClassName() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
assertTrue(this.moduleManager.isDisplayed(TestClientModule.class.getName()));
assertTrue(this.moduleManager.isDisplayed(alwaysDisplayModule.getId()));
}
@Test
public void testHideAll() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.testClientModule.onHideCalled = false;
this.moduleManager.hideAll();
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onHideCalled);
}
@Test
public void testHideAll_DoesNotHideAlwaysDisplay() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
this.moduleManager.changeActiveState(AlwaysDisplayModule.class, true);
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
final var alwaysDisplayModule = new AlwaysDisplayModule();
this.moduleManager.loadModule(alwaysDisplayModule);
this.moduleManager.changeActiveState(alwaysDisplayModule.getId(), true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.hideAll();
assertTrue(this.moduleManager.isDisplayed(AlwaysDisplayModule.class));
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertTrue(this.moduleManager.isDisplayed(alwaysDisplayModule.getId()));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
}
@Test
public void testHideExcept() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(AlwaysDisplayModule.class, true);
final var alwaysDisplayModule = new AlwaysDisplayModule();
this.moduleManager.loadModule(alwaysDisplayModule);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.changeActiveState(alwaysDisplayModule.getId(), true);
this.testClientModule.onHideCalled = false;
this.moduleManager.hideExcept(AlwaysDisplayModule.class.getName());
this.moduleManager.hideExcept(alwaysDisplayModule.getId());
assertTrue(this.moduleManager.isDisplayed(AlwaysDisplayModule.class));
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertTrue(this.moduleManager.isDisplayed(alwaysDisplayModule.getId()));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onHideCalled);
}
@Test
public void testHideExcept_MultipleExceptions() {
this.moduleManager.loadModule(AlwaysDisplayModule.class);
this.moduleManager.loadModule(HighPriorityModule.class);
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(AlwaysDisplayModule.class, true);
this.moduleManager.changeActiveState(HighPriorityModule.class, true);
this.moduleManager.changeDisplayState(HighPriorityModule.class, true);
final var alwaysDisplayModule = new AlwaysDisplayModule();
final var highPriorityModule = new HighPriorityModule();
this.moduleManager.loadModule(alwaysDisplayModule);
this.moduleManager.loadModule(highPriorityModule);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.changeActiveState(alwaysDisplayModule.getId(), true);
this.moduleManager.changeActiveState(highPriorityModule.getId(), true);
this.moduleManager.changeDisplayState(highPriorityModule.getId(), true);
this.moduleManager.hideExcept(
AlwaysDisplayModule.class.getName(),
HighPriorityModule.class.getName()
alwaysDisplayModule.getId(),
highPriorityModule.getId()
);
assertTrue(this.moduleManager.isDisplayed(AlwaysDisplayModule.class));
assertTrue(this.moduleManager.isDisplayed(HighPriorityModule.class));
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertTrue(this.moduleManager.isDisplayed(alwaysDisplayModule.getId()));
assertTrue(this.moduleManager.isDisplayed(highPriorityModule.getId()));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
}
@Test
public void testRestoreVisibility() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.hideExcept();
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
this.testClientModule.onShowCalled = false;
this.moduleManager.restoreVisibility();
assertTrue(this.moduleManager.isDisplayed(TestClientModule.class));
assertTrue(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onShowCalled);
}
@@ -330,15 +311,15 @@ public class ModuleManagerTest {
public void testRestoreVisibility_NoState() {
this.moduleManager.restoreVisibility();
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
}
@Test
public void testIsModal() {
assertFalse(this.moduleManager.isModal());
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.hideExcept();
assertTrue(this.moduleManager.isModal());
@@ -350,7 +331,8 @@ public class ModuleManagerTest {
@Test
public void testModuleSorting_Priority() {
this.moduleManager.loadModule(HighPriorityModule.class);
final var highPriorityModule = new HighPriorityModule();
this.moduleManager.loadModule(highPriorityModule);
final List<AbstractModule> modules = this.moduleManager.getModulesAll();
@@ -385,20 +367,20 @@ public class ModuleManagerTest {
@Test
public void testDeactivate_HidesDisplayedClientModule() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.testClientModule.onHideCalled = false;
this.moduleManager.changeActiveState(TestClientModule.class, false);
this.moduleManager.changeActiveState(this.testClientModule.getId(), false);
assertFalse(this.moduleManager.isDisplayed(TestClientModule.class));
assertFalse(this.moduleManager.isDisplayed(this.testClientModule.getId()));
assertTrue(this.testClientModule.onHideCalled);
}
@Test
public void testDeactivateAll_ClearsVisibilityStack() {
this.moduleManager.changeActiveState(TestClientModule.class, true);
this.moduleManager.changeDisplayState(TestClientModule.class, true);
this.moduleManager.changeActiveState(this.testClientModule.getId(), true);
this.moduleManager.changeDisplayState(this.testClientModule.getId(), true);
this.moduleManager.hideExcept();
assertTrue(this.moduleManager.isModal());
@@ -417,8 +399,9 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_WithSubscriber() {
this.moduleManager.loadModule(CallbackSubscriberModule.class);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
final var callbackSubscriberModule = new CallbackSubscriberModule();
this.moduleManager.loadModule(callbackSubscriberModule);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
final List<AbstractModule> subscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
@@ -428,8 +411,9 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_MultipleCallbacks() {
this.moduleManager.loadModule(MultiCallbackSubscriberModule.class);
this.moduleManager.changeActiveState(MultiCallbackSubscriberModule.class, true);
final var multiCallbackSubscriberModule = new MultiCallbackSubscriberModule();
this.moduleManager.loadModule(multiCallbackSubscriberModule);
this.moduleManager.changeActiveState(multiCallbackSubscriberModule.getId(), true);
final List<AbstractModule> uiPreSubscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
final List<AbstractModule> runSubscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.RUN);
@@ -446,8 +430,9 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_UnsubscribedCallbackEmpty() {
this.moduleManager.loadModule(CallbackSubscriberModule.class);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
final var callbackSubscriberModule = new CallbackSubscriberModule();
this.moduleManager.loadModule(callbackSubscriberModule);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
final List<AbstractModule> runSubscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.RUN);
@@ -456,13 +441,14 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_RemovedOnDeactivate() {
this.moduleManager.loadModule(CallbackSubscriberModule.class);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
final var callbackSubscriberModule = new CallbackSubscriberModule();
this.moduleManager.loadModule(callbackSubscriberModule);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
List<AbstractModule> subscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
assertEquals(1, subscribers.size());
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, false);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), false);
subscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
assertTrue(subscribers.isEmpty());
@@ -470,10 +456,12 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_MultipleModules() {
this.moduleManager.loadModule(CallbackSubscriberModule.class);
this.moduleManager.loadModule(MultiCallbackSubscriberModule.class);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
this.moduleManager.changeActiveState(MultiCallbackSubscriberModule.class, true);
final var callbackSubscriberModule = new CallbackSubscriberModule();
final var multiCallbackSubscriberModule = new MultiCallbackSubscriberModule();
this.moduleManager.loadModule(callbackSubscriberModule);
this.moduleManager.loadModule(multiCallbackSubscriberModule);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
this.moduleManager.changeActiveState(multiCallbackSubscriberModule.getId(), true);
final List<AbstractModule> uiPreSubscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
@@ -484,14 +472,15 @@ public class ModuleManagerTest {
@Test
public void testGetSubscribersForCallback_ReactivateModule() {
this.moduleManager.loadModule(CallbackSubscriberModule.class);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, false);
final var callbackSubscriberModule = new CallbackSubscriberModule();
this.moduleManager.loadModule(callbackSubscriberModule);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), false);
List<AbstractModule> subscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
assertTrue(subscribers.isEmpty());
this.moduleManager.changeActiveState(CallbackSubscriberModule.class, true);
this.moduleManager.changeActiveState(callbackSubscriberModule.getId(), true);
subscribers = this.moduleManager.getSubscribersForCallback(ModuleExecutorCallbacks.UI_PRE);
assertEquals(1, subscribers.size());

View File

@@ -32,19 +32,28 @@ public class RendererWorkingSetImplTest {
private RenderingBoPool renderingBoPool;
private TestModuleA moduleA;
private TestModuleB moduleB;
private TestModuleC moduleC;
@BeforeEach
void setUp() {
this.renderingBoPool = mock(RenderingBoPool.class);
this.workingSet = new RendererWorkingSetImpl(this.renderingBoPool);
this.moduleA = new TestModuleA();
this.moduleB = new TestModuleB();
this.moduleC = new TestModuleC();
}
@Test
void addSingleAddsToUncommittedWork() {
final RenderingBo bo1 = mock(RenderingBo.class);
when(bo1.getId()).thenReturn("bo1");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(this.moduleA.getId(), bo1);
final var uncommitted = this.workingSet.getUncommittedWork(TestModuleA.class);
final var uncommitted = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertNotNull(uncommitted);
assertEquals(Map.of("bo1", bo1), uncommitted);
}
@@ -56,9 +65,9 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo2 = mock(RenderingBo.class);
when(bo2.getId()).thenReturn("bo2");
this.workingSet.add(TestModuleA.class, List.of(bo1, bo2));
this.workingSet.add(this.moduleA.getId(), List.of(bo1, bo2));
final var uncommitted = this.workingSet.getUncommittedWork(TestModuleA.class);
final var uncommitted = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertEquals(Map.of("bo1", bo1, "bo2", bo2), uncommitted);
}
@@ -69,11 +78,11 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo2 = mock(RenderingBo.class);
when(bo2.getId()).thenReturn("bo2");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
final var returnedUncommitted = this.workingSet.commit(TestModuleA.class, false);
final var currentUncommitted = this.workingSet.getUncommittedWork(TestModuleA.class);
final var returnedUncommitted = this.workingSet.commit(this.moduleA.getId(), false);
final var currentUncommitted = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertSame(currentUncommitted, returnedUncommitted);
assertTrue(currentUncommitted.isEmpty());
@@ -93,11 +102,11 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo3 = mock(RenderingBo.class);
when(bo3.getId()).thenReturn("bo3");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
final var returnedUncommitted = this.workingSet.commit(TestModuleA.class, true);
final var currentUncommitted = this.workingSet.getUncommittedWork(TestModuleA.class);
final var returnedUncommitted = this.workingSet.commit(this.moduleA.getId(), true);
final var currentUncommitted = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertSame(currentUncommitted, returnedUncommitted);
assertEquals(Map.of("bo1", bo1, "bo2", bo2), currentUncommitted);
@@ -107,7 +116,7 @@ public class RendererWorkingSetImplTest {
assertEquals(2, live.size());
assertTrue(live.containsAll(List.of(bo1, bo2)));
this.workingSet.add(TestModuleA.class, bo3);
this.workingSet.add(this.moduleA.getId(), bo3);
final List<RenderingBo> liveAfterAdd = new ArrayList<>();
this.workingSet.getLiveSet(liveAfterAdd, null);
assertEquals(2, liveAfterAdd.size());
@@ -123,12 +132,12 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo3 = mock(RenderingBo.class);
when(bo3.getId()).thenReturn("bo3");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.add(TestModuleB.class, bo3);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
this.workingSet.add(this.moduleB.getId(), bo3);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.commit(TestModuleB.class, false);
this.workingSet.commit(this.moduleA.getId(), false);
this.workingSet.commit(this.moduleB.getId(), false);
final List<RenderingBo> live = new ArrayList<>();
this.workingSet.getLiveSet(live, null);
@@ -138,7 +147,7 @@ public class RendererWorkingSetImplTest {
@Test
void commitOnUnknownProducerCreatesEmptyState() {
final var returnedUncommitted = this.workingSet.commit(TestModuleC.class, false);
final var returnedUncommitted = this.workingSet.commit(this.moduleC.getId(), false);
assertNotNull(returnedUncommitted);
assertTrue(returnedUncommitted.isEmpty());
@@ -154,24 +163,24 @@ public class RendererWorkingSetImplTest {
final var bo2 = new TestBoB();
bo2.setId("bo2");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.commit(this.moduleA.getId(), false);
this.workingSet.add(this.moduleA.getId(), bo2);
// Before clear
final List<RenderingBo> liveBefore = new ArrayList<>();
this.workingSet.getLiveSet(liveBefore, null);
assertTrue(liveBefore.contains(bo1));
assertNotNull(this.workingSet.get(TestModuleA.class, "bo2"));
assertNotNull(this.workingSet.get(this.moduleA.getId(), "bo2"));
this.workingSet.clear(TestModuleA.class);
this.workingSet.clear(this.moduleA.getId());
// After clear
final List<RenderingBo> liveAfter = new ArrayList<>();
this.workingSet.getLiveSet(liveAfter, null);
assertTrue(liveAfter.isEmpty());
final var uncommittedAfter = this.workingSet.getUncommittedWork(TestModuleA.class);
final var uncommittedAfter = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertTrue(uncommittedAfter.isEmpty());
verify(this.renderingBoPool, times(1)).release(bo1);
@@ -184,10 +193,10 @@ public class RendererWorkingSetImplTest {
void clearOnUnknownProducerDoesNothing() {
final RenderingBo bo1 = mock(RenderingBo.class);
when(bo1.getId()).thenReturn("bo1");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.commit(this.moduleA.getId(), false);
this.workingSet.clear(TestModuleC.class);
this.workingSet.clear(this.moduleC.getId());
final List<RenderingBo> live = new ArrayList<>();
this.workingSet.getLiveSet(live, null);
@@ -202,14 +211,14 @@ public class RendererWorkingSetImplTest {
final var bo2 = new TestBoA();
bo2.setId("bo2");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
this.workingSet.commit(this.moduleA.getId(), false);
final var bo3 = new TestBoB();
bo3.setId("bo3");
this.workingSet.add(TestModuleA.class, bo3);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.add(this.moduleA.getId(), bo3);
this.workingSet.commit(this.moduleA.getId(), false);
verify(this.renderingBoPool, times(1)).release(bo1);
verify(this.renderingBoPool, times(1)).release(bo2);
@@ -227,12 +236,12 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo2 = mock(RenderingBo.class);
when(bo2.getId()).thenReturn("bo2");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
final var retrieved1 = this.workingSet.get(TestModuleA.class, "bo1");
final var retrieved2 = this.workingSet.get(TestModuleA.class, "bo2");
final var notFound = this.workingSet.get(TestModuleA.class, "nonexistent");
final var retrieved1 = this.workingSet.get(this.moduleA.getId(), "bo1");
final var retrieved2 = this.workingSet.get(this.moduleA.getId(), "bo2");
final var notFound = this.workingSet.get(this.moduleA.getId(), "nonexistent");
assertSame(bo1, retrieved1);
assertSame(bo2, retrieved2);
@@ -246,16 +255,16 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo2 = mock(RenderingBo.class);
when(bo2.getId()).thenReturn("bo2");
this.workingSet.add(TestModuleA.class, bo1);
this.workingSet.add(TestModuleA.class, bo2);
final var committedWork = this.workingSet.commit(TestModuleA.class, false);
this.workingSet.add(this.moduleA.getId(), bo1);
this.workingSet.add(this.moduleA.getId(), bo2);
final var committedWork = this.workingSet.commit(this.moduleA.getId(), false);
// After commit without clone, the uncommitted work should be empty
assertTrue(committedWork.isEmpty());
// get() only retrieves from next set, not live set, so it returns null after commit
final var retrieved1 = this.workingSet.get(TestModuleA.class, "bo1");
final var retrieved2 = this.workingSet.get(TestModuleA.class, "bo2");
final var retrieved1 = this.workingSet.get(this.moduleA.getId(), "bo1");
final var retrieved2 = this.workingSet.get(this.moduleA.getId(), "bo2");
assertTrue(retrieved1 == null);
assertTrue(retrieved2 == null);
@@ -268,13 +277,13 @@ public class RendererWorkingSetImplTest {
final RenderingBo bo1_replacement = mock(RenderingBo.class);
when(bo1_replacement.getId()).thenReturn("bo1");
this.workingSet.add(TestModuleA.class, bo1);
final var uncommittedBefore = this.workingSet.getUncommittedWork(TestModuleA.class);
this.workingSet.add(this.moduleA.getId(), bo1);
final var uncommittedBefore = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertEquals(1, uncommittedBefore.size());
assertSame(bo1, uncommittedBefore.get("bo1"));
this.workingSet.add(TestModuleA.class, bo1_replacement);
final var uncommittedAfter = this.workingSet.getUncommittedWork(TestModuleA.class);
this.workingSet.add(this.moduleA.getId(), bo1_replacement);
final var uncommittedAfter = this.workingSet.getUncommittedWork(this.moduleA.getId());
assertEquals(1, uncommittedAfter.size());
assertSame(bo1_replacement, uncommittedAfter.get("bo1"));
}
@@ -288,12 +297,12 @@ public class RendererWorkingSetImplTest {
final var boA2 = new TestBoA();
boA2.setId("boA2");
this.workingSet.add(TestModuleA.class, boA1);
this.workingSet.add(TestModuleB.class, boB1);
this.workingSet.add(TestModuleA.class, boA2);
this.workingSet.add(this.moduleA.getId(), boA1);
this.workingSet.add(this.moduleB.getId(), boB1);
this.workingSet.add(this.moduleA.getId(), boA2);
this.workingSet.commit(TestModuleA.class, false);
this.workingSet.commit(TestModuleB.class, false);
this.workingSet.commit(this.moduleA.getId(), false);
this.workingSet.commit(this.moduleB.getId(), false);
final List<RenderingBo> allLive = new ArrayList<>();
this.workingSet.getLiveSet(allLive, null);
@@ -301,7 +310,7 @@ public class RendererWorkingSetImplTest {
assertTrue(allLive.containsAll(List.of(boA1, boB1, boA2)));
final List<RenderingBo> filteredLive = new ArrayList<>();
this.workingSet.getLiveSet(filteredLive, TestModuleA.class::equals);
this.workingSet.getLiveSet(filteredLive, this.moduleA.getId()::equals);
assertEquals(2, filteredLive.size());
assertTrue(filteredLive.containsAll(List.of(boA1, boA2)));
assertFalse(filteredLive.contains(boB1));