@Override public void applyBeanPropertyValues(Object existingBean, String beanName) throws BeansException { markBeanAsCreated(beanName); BeanDefinition bd = getMergedBeanDefinition(beanName); BeanWrapper bw = new BeanWrapperImpl(existingBean); initBeanWrapper(bw); applyPropertyValues(beanName, bd, bw, bd.getPropertyValues()); }
@Test public void testComplexGenericIndexedMapEntry() { List<String> inputValue = new LinkedList<>(); inputValue.add("10"); ComplexMapHolder holder = new ComplexMapHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("genericIndexedMap[1]", inputValue); assertEquals(new Integer(1), holder.getGenericIndexedMap().keySet().iterator().next()); assertEquals(new Long(10), holder.getGenericIndexedMap().values().iterator().next().get(0)); }
@Test public void testComplexGenericIndexedMapEntryWithCollectionConversion() { Set<String> inputValue = new HashSet<>(); inputValue.add("10"); ComplexMapHolder holder = new ComplexMapHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("genericIndexedMap[1]", inputValue); assertEquals(new Integer(1), holder.getGenericIndexedMap().keySet().iterator().next()); assertEquals(new Long(10), holder.getGenericIndexedMap().values().iterator().next().get(0)); }
@Test public void testGenericMapOfLists() throws MalformedURLException { GenericBean<String> gb = new GenericBean<>(); Map<Integer, List<Integer>> map = new HashMap<>(); map.put(new Integer(1), new LinkedList<>()); gb.setMapOfLists(map); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("mapOfLists[1][0]", new Integer(5)); assertEquals(new Integer(5), bw.getPropertyValue("mapOfLists[1][0]")); assertEquals(new Integer(5), gb.getMapOfLists().get(new Integer(1)).get(0)); }
@Test public void testGenericallyTypedSetOfIntegerBean() throws Exception { GenericSetOfIntegerBean gb = new GenericSetOfIntegerBean(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("genericProperty", "10"); bw.setPropertyValue("genericListProperty", new String[] {"20", "30"}); assertEquals(new Integer(10), gb.getGenericProperty().iterator().next()); assertEquals(new Integer(20), gb.getGenericListProperty().get(0).iterator().next()); assertEquals(new Integer(30), gb.getGenericListProperty().get(1).iterator().next()); }
@Test public void testComplexDerivedIndexedMapEntry() { List<String> inputValue = new LinkedList<>(); inputValue.add("10"); ComplexMapHolder holder = new ComplexMapHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("derivedIndexedMap[1]", inputValue); assertEquals(new Integer(1), holder.getDerivedIndexedMap().keySet().iterator().next()); assertEquals(new Long(10), holder.getDerivedIndexedMap().values().iterator().next().get(0)); }
@Test public void testGenericMapElement() { GenericBean<?> gb = new GenericBean<>(); gb.setShortMap(new HashMap<>()); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("shortMap[4]", "5"); assertEquals(new Integer(5), bw.getPropertyValue("shortMap[4]")); assertEquals(new Integer(5), gb.getShortMap().get(new Short("4"))); }
@Test public void testGenericallyTypedIntegerBean() throws Exception { GenericIntegerBean gb = new GenericIntegerBean(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("genericProperty", "10"); bw.setPropertyValue("genericListProperty", new String[] {"20", "30"}); assertEquals(new Integer(10), gb.getGenericProperty()); assertEquals(new Integer(20), gb.getGenericListProperty().get(0)); assertEquals(new Integer(30), gb.getGenericListProperty().get(1)); }
@Test public void testSettingGenericPropertyWithReadOnlyInterface() { Bar bar = new Bar(); BeanWrapper bw = new BeanWrapperImpl(bar); bw.setPropertyValue("version", "10"); assertEquals(new Double(10.0), bar.getVersion()); }
@Test public void testByteArrayPropertyEditor() { PrimitiveArrayBean bean = new PrimitiveArrayBean(); BeanWrapper bw = new BeanWrapperImpl(bean); bw.setPropertyValue("byteArray", "myvalue"); assertEquals("myvalue", new String(bean.getByteArray())); }
@Test public void testGenericMapElementWithKeyType() { GenericBean<?> gb = new GenericBean<>(); gb.setLongMap(new HashMap<Long, Integer>()); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("longMap[4]", "5"); assertEquals("5", gb.getLongMap().get(new Long("4"))); assertEquals("5", bw.getPropertyValue("longMap[4]")); }
@Test public void testGetAttributeNameWithStrictCasing() { PropertyDescriptor pd = new BeanWrapperImpl(AttributeTestBean.class).getPropertyDescriptor("name"); String attributeName = JmxUtils.getAttributeName(pd, true); assertEquals("Incorrect casing on attribute name", "Name", attributeName); }
@Test public void testGenericListElement() throws MalformedURLException { GenericBean<?> gb = new GenericBean<>(); gb.setResourceList(new ArrayList<>()); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("resourceList[0]", "http://localhost:8080"); assertEquals(new UrlResource("http://localhost:8080"), gb.getResourceList().get(0)); }
@Test public void testCustomEnumSetWithGetterSetterMismatch() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnumSetMismatch", new String[] {"VALUE_1", "VALUE_2"}); assertEquals(2, gb.getCustomEnumSet().size()); assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_1)); assertTrue(gb.getCustomEnumSet().contains(CustomEnum.VALUE_2)); }
@Test public void testCustomEnum() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnum", "VALUE_1"); assertEquals(CustomEnum.VALUE_1, gb.getCustomEnum()); }
@Test public void testNonPublicEnum() { NonPublicEnumHolder holder = new NonPublicEnumHolder(); BeanWrapper bw = new BeanWrapperImpl(holder); bw.setPropertyValue("nonPublicEnum", "VALUE_1"); assertEquals(NonPublicEnum.VALUE_1, holder.getNonPublicEnum()); }
@Test public void testCustomEnumWithNull() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnum", null); assertEquals(null, gb.getCustomEnum()); }
@Test public void testStandardEnumSetWithMultipleValues() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setConversionService(new DefaultConversionService()); assertNull(gb.getStandardEnumSet()); bw.setPropertyValue("standardEnumSet", new String[] {"VALUE_1", "VALUE_2"}); assertEquals(2, gb.getStandardEnumSet().size()); assertTrue(gb.getStandardEnumSet().contains(CustomEnum.VALUE_1)); assertTrue(gb.getStandardEnumSet().contains(CustomEnum.VALUE_2)); }
@Test public void testCustomEnumArrayWithSingleValue() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnumArray", "VALUE_1"); assertEquals(1, gb.getCustomEnumArray().length); assertEquals(CustomEnum.VALUE_1, gb.getCustomEnumArray()[0]); }
@Test public void testCustomEnumArrayWithMultipleValuesAsCsv() { GenericBean<?> gb = new GenericBean<>(); BeanWrapper bw = new BeanWrapperImpl(gb); bw.setPropertyValue("customEnumArray", "VALUE_1,VALUE_2"); assertEquals(2, gb.getCustomEnumArray().length); assertEquals(CustomEnum.VALUE_1, gb.getCustomEnumArray()[0]); assertEquals(CustomEnum.VALUE_2, gb.getCustomEnumArray()[1]); }