diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java index b9e2e8002fd88b6cadb374e2b3740290dcec1e03..1e91d31e6d9e07d641ee304ab1c66262840792b4 100644 --- a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java +++ b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java @@ -280,10 +280,13 @@ public final class BeanUtils private static <T> T fillBean(Class<T> beanClass, Object sourceBean, AnnotationMap setterAnnotations, Converter converter) { + if (sourceBean == null) + { + return null; + } assert beanClass != null; - assert sourceBean != null; - assert setterAnnotations != null; - assert converter != null; + assert setterAnnotations != null : "undefined setter annotations for " + beanClass; + assert converter != null : "undefined converter for " + beanClass; try { diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/BeanUtilsTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/BeanUtilsTest.java index a89f99c71adcb67cc23c671c68c31054a095274d..ed90cbb6dedc4095878bd7ec33ffe013bfe2dbbb 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/BeanUtilsTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/BeanUtilsTest.java @@ -687,6 +687,14 @@ public final class BeanUtilsTest } } + @Test + public void testFillComplexBeanWithNull() + { + final BeanWithBean1 b3 = new BeanWithBean1(); + final BeanWithBean2 b4 = BeanUtils.fillBean(BeanWithBean2.class, b3); + assertEquals(null, b4.getBean()); + } + @Test public void testFillComplexBean() { @@ -701,7 +709,7 @@ public final class BeanUtilsTest final Bean2a b2 = b4.getBean(); assertBeansAreEqual("Bean comparison", b1, b2); } - + public static class BeanWithBeanArray1 { private Bean1a[] bean;