From b795a920a8aecb49980983b271c04555a5770eaf Mon Sep 17 00:00:00 2001
From: Kusal Kithul-Godage
Date: Tue, 13 Dec 2022 06:43:49 +1100
Subject: [PATCH 1/2] WW-5265 Formatting fixes
---
.../config/ConfigurationManagerTest.java | 150 +++++++++---------
1 file changed, 75 insertions(+), 75 deletions(-)
diff --git a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
index 307cd3be0..bb54ad565 100644
--- a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
@@ -70,81 +70,81 @@ public class ConfigurationManagerTest extends XWorkTestCase {
}
public void testDestroyConfiguration() throws Exception {
- class State {
- public boolean isDestroyed1 =false;
- public boolean isDestroyed2 =false;
- }
-
- final State state = new State();
- ConfigurationManager configurationManager = new ConfigurationManager(Container.DEFAULT_NAME);
- configurationManager.addContainerProvider(new ConfigurationProvider() {
- public void destroy() {
- throw new RuntimeException("testing testing 123");
- }
- public void init(Configuration configuration) throws ConfigurationException {
- }
- public void loadPackages() throws ConfigurationException {
- }
- public boolean needsReload() { return false;
- }
- public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
- }
- public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
- }
- });
- configurationManager.addContainerProvider(new ConfigurationProvider() {
- public void destroy() {
- state.isDestroyed1 = true;
- }
- public void init(Configuration configuration) throws ConfigurationException {
- }
- public void loadPackages() throws ConfigurationException {
- }
- public boolean needsReload() { return false;
- }
- public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
- }
- public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
- }
- });
- configurationManager.addContainerProvider(new ConfigurationProvider() {
- public void destroy() {
- throw new RuntimeException("testing testing 123");
- }
- public void init(Configuration configuration) throws ConfigurationException {
- }
- public void loadPackages() throws ConfigurationException {
- }
- public boolean needsReload() { return false;
- }
- public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
- }
- public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
- }
- });
- configurationManager.addContainerProvider(new ConfigurationProvider() {
- public void destroy() {
- state.isDestroyed2 = true;
- }
- public void init(Configuration configuration) throws ConfigurationException {
- }
- public void loadPackages() throws ConfigurationException {
- }
- public boolean needsReload() { return false;
- }
- public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
- }
- public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
- }
- });
-
- assertFalse(state.isDestroyed1);
- assertFalse(state.isDestroyed2);
-
- configurationManager.clearContainerProviders();
-
- assertTrue(state.isDestroyed1);
- assertTrue(state.isDestroyed2);
+ class State {
+ public boolean isDestroyed1 =false;
+ public boolean isDestroyed2 =false;
+ }
+
+ final State state = new State();
+ ConfigurationManager configurationManager = new ConfigurationManager(Container.DEFAULT_NAME);
+ configurationManager.addContainerProvider(new ConfigurationProvider() {
+ public void destroy() {
+ throw new RuntimeException("testing testing 123");
+ }
+ public void init(Configuration configuration) throws ConfigurationException {
+ }
+ public void loadPackages() throws ConfigurationException {
+ }
+ public boolean needsReload() { return false;
+ }
+ public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
+ }
+ public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
+ }
+ });
+ configurationManager.addContainerProvider(new ConfigurationProvider() {
+ public void destroy() {
+ state.isDestroyed1 = true;
+ }
+ public void init(Configuration configuration) throws ConfigurationException {
+ }
+ public void loadPackages() throws ConfigurationException {
+ }
+ public boolean needsReload() { return false;
+ }
+ public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
+ }
+ public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
+ }
+ });
+ configurationManager.addContainerProvider(new ConfigurationProvider() {
+ public void destroy() {
+ throw new RuntimeException("testing testing 123");
+ }
+ public void init(Configuration configuration) throws ConfigurationException {
+ }
+ public void loadPackages() throws ConfigurationException {
+ }
+ public boolean needsReload() { return false;
+ }
+ public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
+ }
+ public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
+ }
+ });
+ configurationManager.addContainerProvider(new ConfigurationProvider() {
+ public void destroy() {
+ state.isDestroyed2 = true;
+ }
+ public void init(Configuration configuration) throws ConfigurationException {
+ }
+ public void loadPackages() throws ConfigurationException {
+ }
+ public boolean needsReload() { return false;
+ }
+ public void register(ContainerBuilder builder, Properties props) throws ConfigurationException {
+ }
+ public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException {
+ }
+ });
+
+ assertFalse(state.isDestroyed1);
+ assertFalse(state.isDestroyed2);
+
+ configurationManager.clearContainerProviders();
+
+ assertTrue(state.isDestroyed1);
+ assertTrue(state.isDestroyed2);
}
public void testClearConfigurationProviders() throws Exception {
From 45aa17238604d13a83420e9c538f3a8c00ec46bf Mon Sep 17 00:00:00 2001
From: Kusal Kithul-Godage
Date: Tue, 13 Dec 2022 06:44:08 +1100
Subject: [PATCH 2/2] WW-5265 Allow removal of a single/specific container
provider from Struts configuration
---
.../xwork2/config/ConfigurationManager.java | 9 ++++++++-
.../xwork2/config/ConfigurationManagerTest.java | 16 ++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java b/core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
index 41e24b1b3..d27327663 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/ConfigurationManager.java
@@ -90,7 +90,7 @@ public class ConfigurationManager {
*
*
*
- * TODO: The lazy instantiation of XmlConfigurationProvider should be refactored to be elsewhere. The behavior described above seems unintuitive.
+ * TODO: The lazy instantiation of StrutsDefaultConfigurationProvider should be refactored to be elsewhere. The behavior described above seems unintuitive.
*
*
* @return the list of registered ConfigurationProvider objects
@@ -137,6 +137,13 @@ public class ConfigurationManager {
}
}
+ public void removeContainerProvider(ContainerProvider provider) {
+ if (containerProviders.remove(provider)) {
+ clearContainerProvider(provider);
+ providersChanged = true;
+ }
+ }
+
public void clearContainerProviders() {
for (ContainerProvider containerProvider : containerProviders) {
clearContainerProvider(containerProvider);
diff --git a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
index bb54ad565..a37ac6b34 100644
--- a/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/config/ConfigurationManagerTest.java
@@ -30,6 +30,9 @@ import com.opensymphony.xwork2.util.location.LocatableProperties;
import java.util.Properties;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
/**
* ConfigurationManagerTest
@@ -147,6 +150,19 @@ public class ConfigurationManagerTest extends XWorkTestCase {
assertTrue(state.isDestroyed2);
}
+ public void testRemoveConfigurationProvider() throws Exception {
+ ConfigurationProvider configProvider1 = mock(ConfigurationProvider.class);
+ ConfigurationProvider configProvider2 = mock(ConfigurationProvider.class);
+ configurationManager.addContainerProvider(configProvider1);
+ configurationManager.addContainerProvider(configProvider2);
+
+ configurationManager.removeContainerProvider(configProvider1);
+
+ verify(configProvider1).destroy();
+ assertFalse(configurationManager.getContainerProviders().contains(configProvider1));
+ assertTrue(configurationManager.getContainerProviders().contains(configProvider2));
+ }
+
public void testClearConfigurationProviders() throws Exception {
configProviderMock.expect("destroy");
configurationManager.clearContainerProviders();