[spring-extensions] 02/05: Allow nulls in list-combining factory bean.

Scott Cantor cantor.2 at osu.edu
Tue Jun 21 13:36:05 UTC 2022


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch dev/JSPS-1
in repository spring-extensions.

View the commit online:
http://git.shibboleth.net/view/?p=spring-extensions.git;a=commit;h=87b0e301bea1d3f9eebd5d4e14990280b31f9a04

commit 87b0e301bea1d3f9eebd5d4e14990280b31f9a04
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed May 18 13:31:58 2022 -0400

    Allow nulls in list-combining factory bean.
---
 .../spring/factory/CombiningListFactoryBean.java   | 33 +++++++++++-----------
 .../factory/CombiningListFactoryBeanTest.java      | 14 +++++----
 .../net/shibboleth/ext/spring/factory/lists.xml    |  2 ++
 3 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/src/main/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBean.java b/src/main/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBean.java
index d744723..bd3f813 100644
--- a/src/main/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBean.java
+++ b/src/main/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBean.java
@@ -21,28 +21,25 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.config.ListFactoryBean;
 
-import net.shibboleth.utilities.java.support.logic.Constraint;
-
 /**
- * A factory which extends {@link ListFactoryBean} by requiring two
- * lists as input.
+ * A factory which extends {@link ListFactoryBean} by requiring two lists as input.
  */
 public class CombiningListFactoryBean extends ListFactoryBean {
 
     /** First list to combine. */
-    private List<?> firstList = Collections.emptyList();
+    @Nullable private List<?> firstList = Collections.emptyList();
  
     /** Second list to combine. */
-    private List<?> secondList = Collections.emptyList();
+    @Nullable private List<?> secondList = Collections.emptyList();
  
     /** {@inheritDoc} */
     @Override public void setSourceList(final List<?> sourceList) {
-        throw new BeanCreationException("Call setFirstList() amnd setSecondList");
+        throw new BeanCreationException("Call setFirstList() amnd setSecondList()");
     }
 
     /** Set the first list to combine.
@@ -55,8 +52,8 @@ public class CombiningListFactoryBean extends ListFactoryBean {
     /** Get the first list to combine.
      * @param list The firstList to set.
      */
-    public void setFirstList(@Nonnull final List<?> list) {
-        firstList = Constraint.isNotNull(list, "First list must be nonnull");
+    public void setFirstList(@Nullable final List<?> list) {
+        firstList = list;
     }
 
     /** Set the second list to combine.
@@ -69,17 +66,21 @@ public class CombiningListFactoryBean extends ListFactoryBean {
     /** Get the second list to combine.
      * @param list The secondList to set.
      */
-    public void setSecondList(@Nonnull final List<?> list) {
-        secondList = Constraint.isNotNull(list, "Second list must be nonnull");
+    public void setSecondList(@Nullable final List<?> list) {
+        secondList = list;
     }
     
     /** {@inheritDoc} */
     @Override protected List<Object> createInstance() {
-        final ArrayList<Object> combined = new ArrayList<>(firstList.size() + secondList.size());
-        combined.addAll(firstList);
-        combined.addAll(secondList);
+        final ArrayList<Object> combined = new ArrayList<>();
+        if (firstList != null) {
+            combined.addAll(firstList);
+        }
+        if (secondList != null) {
+            combined.addAll(secondList);
+        }
         super.setSourceList(combined);
         return super.createInstance();
     }
 
-}
+}
\ No newline at end of file
diff --git a/src/test/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBeanTest.java b/src/test/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBeanTest.java
index a3f6b14..fbd5292 100644
--- a/src/test/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBeanTest.java
+++ b/src/test/java/net/shibboleth/ext/spring/factory/CombiningListFactoryBeanTest.java
@@ -36,9 +36,9 @@ public class CombiningListFactoryBeanTest {
     @Test
     public void test() {
         
-        Resource r = new ClassPathResource("net/shibboleth/ext/spring/factory/lists.xml");
+        final Resource r = new ClassPathResource("net/shibboleth/ext/spring/factory/lists.xml");
   
-        GenericApplicationContext ctx = new ApplicationContextBuilder()
+        final GenericApplicationContext ctx = new ApplicationContextBuilder()
                 .setName("appCtx")
                 .setServiceConfigurations(Collections.singletonList(r))
                 .build();
@@ -51,14 +51,17 @@ public class CombiningListFactoryBeanTest {
         assertTrue(list.contains("b"));
         assertTrue(list.contains("parent"));
         assertTrue(list.contains("child"));
+        
+        final List<?> empty = (List<?>) ctx.getBean("nulls");
+        assertEquals(empty.size(), 0);
     }
     
     @Test
     public void resourceTest() {
         
-        Resource r = new ClassPathResource("net/shibboleth/ext/spring/factory/resourceLists.xml");
+        final Resource r = new ClassPathResource("net/shibboleth/ext/spring/factory/resourceLists.xml");
   
-        GenericApplicationContext ctx = new ApplicationContextBuilder()
+        final GenericApplicationContext ctx = new ApplicationContextBuilder()
                 .setName("appCtx")
                 .setServiceConfigurations(Collections.singletonList(r))
                 .build();
@@ -69,4 +72,5 @@ public class CombiningListFactoryBeanTest {
         assertEquals(bean.getResources().size(), 2);
         
     }
-}
+
+}
\ No newline at end of file
diff --git a/src/test/resources/net/shibboleth/ext/spring/factory/lists.xml b/src/test/resources/net/shibboleth/ext/spring/factory/lists.xml
index 23d5c84..9aebda1 100644
--- a/src/test/resources/net/shibboleth/ext/spring/factory/lists.xml
+++ b/src/test/resources/net/shibboleth/ext/spring/factory/lists.xml
@@ -34,4 +34,6 @@
     <bean id="combined" class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
      p:firstList-ref="list" p:secondList-ref="child"/>
 
+    <bean id="nulls" class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"/>
+
 </beans>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list