Author: oheger Date: Sun Oct 27 20:32:16 2013 New Revision: 1536196 URL: http://svn.apache.org/r1536196 Log: Generified PropertyUtilsBean and PropertyUtils.
Modified: commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtils.java commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtilsBean.java commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/PropertyUtilsTestCase.java Modified: commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtils.java URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtils.java?rev=1536196&r1=1536195&r2=1536196&view=diff ============================================================================== --- commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtils.java (original) +++ commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtils.java Sun Oct 27 20:32:16 2013 @@ -203,7 +203,7 @@ public class PropertyUtils { * propety cannot be found * @see PropertyUtilsBean#describe */ - public static Map describe(Object bean) + public static Map<String, Object> describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -344,7 +344,7 @@ public class PropertyUtils { * @deprecated This method should not be exposed */ @Deprecated - public static FastHashMap getMappedPropertyDescriptors(Class beanClass) { + public static FastHashMap getMappedPropertyDescriptors(Class<?> beanClass) { return PropertyUtilsBean.getInstance().getMappedPropertyDescriptors(beanClass); @@ -478,7 +478,7 @@ public class PropertyUtils { * @see PropertyUtilsBean#getPropertyDescriptors(Class) */ public static PropertyDescriptor[] - getPropertyDescriptors(Class beanClass) { + getPropertyDescriptors(Class<?> beanClass) { return PropertyUtilsBean.getInstance().getPropertyDescriptors(beanClass); @@ -527,7 +527,7 @@ public class PropertyUtils { * propety cannot be found * @see PropertyUtilsBean#getPropertyEditorClass(Object,String) */ - public static Class getPropertyEditorClass(Object bean, String name) + public static Class<?> getPropertyEditorClass(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -560,7 +560,7 @@ public class PropertyUtils { * propety cannot be found * @see PropertyUtilsBean#getPropertyType(Object, String) */ - public static Class getPropertyType(Object bean, String name) + public static Class<?> getPropertyType(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Modified: commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtilsBean.java URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtilsBean.java?rev=1536196&r1=1536195&r2=1536196&view=diff ============================================================================== --- commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtilsBean.java (original) +++ commons/proper/beanutils/branches/java5/src/main/java/org/apache/commons/beanutils/PropertyUtilsBean.java Sun Oct 27 20:32:16 2013 @@ -30,6 +30,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.apache.commons.beanutils.expression.DefaultResolver; import org.apache.commons.beanutils.expression.Resolver; @@ -112,10 +113,10 @@ public class PropertyUtilsBean { * The cache of PropertyDescriptor arrays for beans we have already * introspected, keyed by the java.lang.Class of this object. */ - private WeakFastHashMap descriptorsCache = null; - private WeakFastHashMap mappedDescriptorsCache = null; - private static final Class[] EMPTY_CLASS_PARAMETERS = new Class[0]; - private static final Class[] LIST_CLASS_PARAMETER = new Class[] {java.util.List.class}; + private WeakFastHashMap<Class<?>, PropertyDescriptor[]> descriptorsCache = null; + private WeakFastHashMap<Class<?>, FastHashMap> mappedDescriptorsCache = null; + private static final Class<?>[] EMPTY_CLASS_PARAMETERS = new Class[0]; + private static final Class<?>[] LIST_CLASS_PARAMETER = new Class[] {java.util.List.class}; /** An empty object array */ private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0]; @@ -127,9 +128,9 @@ public class PropertyUtilsBean { /** Base constructor */ public PropertyUtilsBean() { - descriptorsCache = new WeakFastHashMap(); + descriptorsCache = new WeakFastHashMap<Class<?>, PropertyDescriptor[]>(); descriptorsCache.setFast(true); - mappedDescriptorsCache = new WeakFastHashMap(); + mappedDescriptorsCache = new WeakFastHashMap<Class<?>, FastHashMap>(); mappedDescriptorsCache.setFast(true); } @@ -253,9 +254,9 @@ public class PropertyUtilsBean { } } } else if (orig instanceof Map) { - Iterator entries = ((Map) orig).entrySet().iterator(); + Iterator<?> entries = ((Map<?, ?>) orig).entrySet().iterator(); while (entries.hasNext()) { - Map.Entry entry = (Map.Entry) entries.next(); + Map.Entry<?, ?> entry = (Entry<?, ?>) entries.next(); String name = (String)entry.getKey(); if (isWriteable(dest, name)) { try { @@ -315,14 +316,14 @@ public class PropertyUtilsBean { * @exception NoSuchMethodException if an accessor method for this * propety cannot be found */ - public Map describe(Object bean) + public Map<String, Object> describe(Object bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (bean == null) { throw new IllegalArgumentException("No bean specified"); } - Map description = new HashMap(); + Map<String, Object> description = new HashMap<String, Object>(); if (bean instanceof DynaBean) { DynaProperty[] descriptors = ((DynaBean) bean).getDynaClass().getDynaProperties(); @@ -438,7 +439,7 @@ public class PropertyUtilsBean { if (bean.getClass().isArray()) { return Array.get(bean, index); } else if (bean instanceof List) { - return ((List)bean).get(index); + return ((List<?>)bean).get(index); } } if (name == null) { @@ -502,7 +503,7 @@ public class PropertyUtilsBean { "' is not indexed on bean class '" + bean.getClass() + "'"); } else { //get the List's value - return ((java.util.List) value).get(index); + return ((java.util.List<?>) value).get(index); } } else { //get the array's value @@ -646,7 +647,7 @@ public class PropertyUtilsBean { Object invokeResult = invokeMethod(readMethod, bean, EMPTY_OBJECT_ARRAY); /* test and fetch from the map */ if (invokeResult instanceof java.util.Map) { - result = ((java.util.Map)invokeResult).get(key); + result = ((java.util.Map<?, ?>)invokeResult).get(key); } } else { throw new NoSuchMethodException("Property '" + name + @@ -669,14 +670,14 @@ public class PropertyUtilsBean { * @deprecated This method should not be exposed */ @Deprecated - public FastHashMap getMappedPropertyDescriptors(Class beanClass) { + public FastHashMap getMappedPropertyDescriptors(Class<?> beanClass) { if (beanClass == null) { return null; } // Look up any cached descriptors for this bean class - return (FastHashMap) mappedDescriptorsCache.get(beanClass); + return mappedDescriptorsCache.get(beanClass); } @@ -737,7 +738,7 @@ public class PropertyUtilsBean { String next = resolver.next(name); Object nestedBean = null; if (bean instanceof Map) { - nestedBean = getPropertyOfMapBean((Map) bean, next); + nestedBean = getPropertyOfMapBean((Map<?, ?>) bean, next); } else if (resolver.isMapped(next)) { nestedBean = getMappedProperty(bean, next); } else if (resolver.isIndexed(next)) { @@ -755,7 +756,7 @@ public class PropertyUtilsBean { } if (bean instanceof Map) { - bean = getPropertyOfMapBean((Map) bean, name); + bean = getPropertyOfMapBean((Map<?, ?>) bean, name); } else if (resolver.isMapped(name)) { bean = getMappedProperty(bean, name); } else if (resolver.isIndexed(name)) { @@ -791,7 +792,7 @@ public class PropertyUtilsBean { * no simple method is available. * @since 1.8.0 */ - protected Object getPropertyOfMapBean(Map bean, String propertyName) + protected Object getPropertyOfMapBean(Map<?, ?> bean, String propertyName) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -954,7 +955,7 @@ public class PropertyUtilsBean { * @exception IllegalArgumentException if <code>beanClass</code> is null */ public PropertyDescriptor[] - getPropertyDescriptors(Class beanClass) { + getPropertyDescriptors(Class<?> beanClass) { if (beanClass == null) { throw new IllegalArgumentException("No bean class specified"); @@ -963,7 +964,7 @@ public class PropertyUtilsBean { // Look up any cached descriptors for this bean class PropertyDescriptor[] descriptors = null; descriptors = - (PropertyDescriptor[]) descriptorsCache.get(beanClass); + descriptorsCache.get(beanClass); if (descriptors != null) { return (descriptors); } @@ -1031,7 +1032,7 @@ public class PropertyUtilsBean { Method[] methods = beanClass.getMethods(); for (int j = 0; j < methods.length; j++) { if (methods[j].getName().equals(methodName)) { - Class[] parameterTypes = methods[j].getParameterTypes(); + Class<?>[] parameterTypes = methods[j].getParameterTypes(); if (parameterTypes.length == 1 && List.class.isAssignableFrom(parameterTypes[0])) { writeMethod = methods[j]; @@ -1110,7 +1111,7 @@ public class PropertyUtilsBean { * @exception NoSuchMethodException if an accessor method for this * propety cannot be found */ - public Class getPropertyEditorClass(Object bean, String name) + public Class<?> getPropertyEditorClass(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -1158,7 +1159,7 @@ public class PropertyUtilsBean { * @exception NoSuchMethodException if an accessor method for this * propety cannot be found */ - public Class getPropertyType(Object bean, String name) + public Class<?> getPropertyType(Object bean, String name) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -1193,7 +1194,7 @@ public class PropertyUtilsBean { if (descriptor == null) { return (null); } - Class type = descriptor.getType(); + Class<?> type = descriptor.getType(); if (type == null) { return (null); } else if (type.isArray()) { @@ -1246,7 +1247,7 @@ public class PropertyUtilsBean { * @param descriptor Property descriptor to return a getter for * @return The read method */ - Method getReadMethod(Class clazz, PropertyDescriptor descriptor) { + Method getReadMethod(Class<?> clazz, PropertyDescriptor descriptor) { return (MethodUtils.getAccessibleMethod(clazz, descriptor.getReadMethod())); } @@ -1355,7 +1356,7 @@ public class PropertyUtilsBean { * @param descriptor Property descriptor to return a setter for * @return The write method */ - Method getWriteMethod(Class clazz, PropertyDescriptor descriptor) { + Method getWriteMethod(Class<?> clazz, PropertyDescriptor descriptor) { return (MethodUtils.getAccessibleMethod(clazz, descriptor.getWriteMethod())); } @@ -1637,7 +1638,8 @@ public class PropertyUtilsBean { Array.set(bean, index, value); return; } else if (bean instanceof List) { - ((List)bean).set(index, value); + List<Object> list = toObjectList(bean); + list.set(index, value); return; } } @@ -1711,7 +1713,8 @@ public class PropertyUtilsBean { if (!array.getClass().isArray()) { if (array instanceof List) { // Modify the specified value in the List - ((List) array).set(index, value); + List<Object> list = toObjectList(array); + list.set(index, value); } else { throw new IllegalArgumentException("Property '" + name + "' is not indexed on bean class '" + bean.getClass() + "'"); @@ -1864,7 +1867,8 @@ public class PropertyUtilsBean { Object invokeResult = invokeMethod(readMethod, bean, EMPTY_OBJECT_ARRAY); /* test and fetch from the map */ if (invokeResult instanceof java.util.Map) { - ((java.util.Map)invokeResult).put(key, value); + java.util.Map<String, Object> map = toPropertyMap(invokeResult); + map.put(key, value); } } else { throw new NoSuchMethodException("Property '" + name + @@ -1924,7 +1928,7 @@ public class PropertyUtilsBean { String next = resolver.next(name); Object nestedBean = null; if (bean instanceof Map) { - nestedBean = getPropertyOfMapBean((Map)bean, next); + nestedBean = getPropertyOfMapBean((Map<?, ?>)bean, next); } else if (resolver.isMapped(next)) { nestedBean = getMappedProperty(bean, next); } else if (resolver.isIndexed(next)) { @@ -1942,7 +1946,7 @@ public class PropertyUtilsBean { } if (bean instanceof Map) { - setPropertyOfMapBean((Map) bean, name, value); + setPropertyOfMapBean(toPropertyMap(bean), name, value); } else if (resolver.isMapped(name)) { setMappedProperty(bean, name, value); } else if (resolver.isIndexed(name)) { @@ -2009,7 +2013,7 @@ public class PropertyUtilsBean { * no simple method is available. * @since 1.8.0 */ - protected void setPropertyOfMapBean(Map bean, String propertyName, Object value) + protected void setPropertyOfMapBean(Map<String, Object> bean, String propertyName, Object value) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -2180,7 +2184,7 @@ public class PropertyUtilsBean { } } String expectedString = ""; - Class[] parTypes = method.getParameterTypes(); + Class<?>[] parTypes = method.getParameterTypes(); if (parTypes != null) { for (int i = 0; i < parTypes.length; i++) { if (i > 0) { @@ -2217,7 +2221,7 @@ public class PropertyUtilsBean { } } String expectedString = ""; - Class[] parTypes = method.getParameterTypes(); + Class<?>[] parTypes = method.getParameterTypes(); if (parTypes != null) { for (int i = 0; i < parTypes.length; i++) { if (i > 0) { @@ -2242,4 +2246,34 @@ public class PropertyUtilsBean { } } + + /** + * Converts an object to a list of objects. This method is used when dealing + * with indexed properties. It assumes that indexed properties are stored as + * lists of objects. + * + * @param obj the object to be converted + * @return the resulting list of objects + */ + private static List<Object> toObjectList(Object obj) { + @SuppressWarnings("unchecked") + // indexed properties are stored in lists of objects + List<Object> list = (List<Object>) obj; + return list; + } + + /** + * Converts an object to a map with property values. This method is used + * when dealing with mapped properties. It assumes that mapped properties + * are stored in a Map<String, Object>. + * + * @param obj the object to be converted + * @return the resulting properties map + */ + private static Map<String, Object> toPropertyMap(Object obj) { + @SuppressWarnings("unchecked") + // mapped properties are stores in maps of type <String, Object> + Map<String, Object> map = (Map<String, Object>) obj; + return map; + } } Modified: commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/PropertyUtilsTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/PropertyUtilsTestCase.java?rev=1536196&r1=1536195&r2=1536196&view=diff ============================================================================== --- commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/PropertyUtilsTestCase.java (original) +++ commons/proper/beanutils/branches/java5/src/test/java/org/apache/commons/beanutils/PropertyUtilsTestCase.java Sun Oct 27 20:32:16 2013 @@ -253,7 +253,7 @@ public class PropertyUtilsTestCase exten */ public void testCopyPropertiesMap() { - Map map = new HashMap(); + Map<String, Object> map = new HashMap<String, Object>(); map.put("booleanProperty", Boolean.FALSE); map.put("doubleProperty", new Double(333.0)); map.put("dupProperty", new String[] { "New 0", "New 1", "New 2" }); @@ -308,7 +308,7 @@ public class PropertyUtilsTestCase exten */ public void testDescribe() { - Map map = null; + Map<String, Object> map = null; try { map = PropertyUtils.describe(bean); } catch (Exception e) { @@ -1044,7 +1044,7 @@ public class PropertyUtilsTestCase exten public void testGetIndexedList() { String[] firstArray = new String[] {"FIRST-1", "FIRST-2", "FIRST-3"}; String[] secondArray = new String[] {"SECOND-1", "SECOND-2", "SECOND-3", "SECOND-4"}; - List mainList = new ArrayList(); + List<Object> mainList = new ArrayList<Object>(); mainList.add(Arrays.asList(firstArray)); mainList.add(Arrays.asList(secondArray)); TestBean bean = new TestBean(mainList); @@ -1065,14 +1065,14 @@ public class PropertyUtilsTestCase exten * Test getting a value out of a mapped Map */ public void testGetIndexedMap() { - Map firstMap = new HashMap(); + Map<String, Object> firstMap = new HashMap<String, Object>(); firstMap.put("FIRST-KEY-1", "FIRST-VALUE-1"); firstMap.put("FIRST-KEY-2", "FIRST-VALUE-2"); - Map secondMap = new HashMap(); + Map<String, Object> secondMap = new HashMap<String, Object>(); secondMap.put("SECOND-KEY-1", "SECOND-VALUE-1"); secondMap.put("SECOND-KEY-2", "SECOND-VALUE-2"); - List mainList = new ArrayList(); + List<Object> mainList = new ArrayList<Object>(); mainList.add(firstMap); mainList.add(secondMap); TestBean bean = new TestBean(mainList); @@ -1174,7 +1174,7 @@ public class PropertyUtilsTestCase exten */ public void testGetMappedList() { TestBean bean = new TestBean(); - List list = new ArrayList(); + List<Object> list = new ArrayList<Object>(); list.add("klm"); list.add("nop"); list.add("qrs"); @@ -1193,7 +1193,7 @@ public class PropertyUtilsTestCase exten */ public void testGetMappedMap() { TestBean bean = new TestBean(); - Map map = new HashMap(); + Map<String, Object> map = new HashMap<String, Object>(); map.put("sub-key-1", "sub-value-1"); map.put("sub-key-2", "sub-value-2"); map.put("sub-key-3", "sub-value-3"); @@ -1669,7 +1669,7 @@ public class PropertyUtilsTestCase exten // don't init! try { - NestedTestBean value = (NestedTestBean) PropertyUtils.getProperty( + PropertyUtils.getProperty( nestedBean, "simpleBeanProperty.indexedProperty[0]"); fail("NestedNullException not thrown"); @@ -1704,7 +1704,7 @@ public class PropertyUtilsTestCase exten */ public void testGetPropertyType() { - Class clazz = null; + Class<?> clazz = null; int intArray[] = new int[0]; String stringArray[] = new String[0]; @@ -1906,9 +1906,8 @@ public class PropertyUtilsTestCase exten assertTrue("Found foo descriptor", n >= 0); Method reader = pd[n].getReadMethod(); assertNotNull("Found foo read method", reader); - Object value = null; try { - value = reader.invoke(beanPrivate, new Class[0]); + reader.invoke(beanPrivate, (Object[]) new Class<?>[0]); fail("Foo reader did throw IllegalAccessException"); } catch (IllegalAccessException e) { // Expected result for this test @@ -2043,9 +2042,8 @@ public class PropertyUtilsTestCase exten */ public void testGetSimpleIndexed() { - Object value = null; try { - value = PropertyUtils.getSimpleProperty(bean, + PropertyUtils.getSimpleProperty(bean, "intIndexed[0]"); fail("Should have thrown IllegalArgumentException"); } catch (IllegalAccessException e) { @@ -2120,9 +2118,8 @@ public class PropertyUtilsTestCase exten */ public void testGetSimpleNested() { - Object value = null; try { - value = PropertyUtils.getSimpleProperty(bean, + PropertyUtils.getSimpleProperty(bean, "nested.stringProperty"); fail("Should have thrown IllegaArgumentException"); } catch (IllegalAccessException e) { @@ -2616,45 +2613,45 @@ public class PropertyUtilsTestCase exten public void testSetIndexedList() { String[] firstArray = new String[] {"FIRST-1", "FIRST-2", "FIRST-3"}; String[] secondArray = new String[] {"SECOND-1", "SECOND-2", "SECOND-3", "SECOND-4"}; - List mainList = new ArrayList(); + List<Object> mainList = new ArrayList<Object>(); mainList.add(Arrays.asList(firstArray)); mainList.add(Arrays.asList(secondArray)); TestBean bean = new TestBean(mainList); - assertEquals("BEFORE", "SECOND-4", ((List)bean.getListIndexed().get(1)).get(3)); + assertEquals("BEFORE", "SECOND-4", ((List<?>)bean.getListIndexed().get(1)).get(3)); try { PropertyUtils.setProperty(bean, "listIndexed[1][3]", "SECOND-4-UPDATED"); } catch (Throwable t) { fail("Threw " + t + ""); } - assertEquals("AFTER", "SECOND-4-UPDATED", ((List)bean.getListIndexed().get(1)).get(3)); + assertEquals("AFTER", "SECOND-4-UPDATED", ((List<?>)bean.getListIndexed().get(1)).get(3)); } /** * Test setting a value out of a mapped Map */ public void testSetIndexedMap() { - Map firstMap = new HashMap(); + Map<String, Object> firstMap = new HashMap<String, Object>(); firstMap.put("FIRST-KEY-1", "FIRST-VALUE-1"); firstMap.put("FIRST-KEY-2", "FIRST-VALUE-2"); - Map secondMap = new HashMap(); + Map<String, Object> secondMap = new HashMap<String, Object>(); secondMap.put("SECOND-KEY-1", "SECOND-VALUE-1"); secondMap.put("SECOND-KEY-2", "SECOND-VALUE-2"); - List mainList = new ArrayList(); + List<Object> mainList = new ArrayList<Object>(); mainList.add(firstMap); mainList.add(secondMap); TestBean bean = new TestBean(mainList); - assertEquals("BEFORE", null, ((Map)bean.getListIndexed().get(0)).get("FIRST-NEW-KEY")); - assertEquals("BEFORE", "SECOND-VALUE-1", ((Map)bean.getListIndexed().get(1)).get("SECOND-KEY-1")); + assertEquals("BEFORE", null, ((Map<?, ?>)bean.getListIndexed().get(0)).get("FIRST-NEW-KEY")); + assertEquals("BEFORE", "SECOND-VALUE-1", ((Map<?, ?>)bean.getListIndexed().get(1)).get("SECOND-KEY-1")); try { PropertyUtils.setProperty(bean, "listIndexed[0](FIRST-NEW-KEY)", "FIRST-NEW-VALUE"); PropertyUtils.setProperty(bean, "listIndexed[1](SECOND-KEY-1)", "SECOND-VALUE-1-UPDATED"); } catch (Throwable t) { fail("Threw " + t + ""); } - assertEquals("BEFORE", "FIRST-NEW-VALUE", ((Map)bean.getListIndexed().get(0)).get("FIRST-NEW-KEY")); - assertEquals("AFTER", "SECOND-VALUE-1-UPDATED", ((Map)bean.getListIndexed().get(1)).get("SECOND-KEY-1")); + assertEquals("BEFORE", "FIRST-NEW-VALUE", ((Map<?, ?>)bean.getListIndexed().get(0)).get("FIRST-NEW-KEY")); + assertEquals("AFTER", "SECOND-VALUE-1-UPDATED", ((Map<?, ?>)bean.getListIndexed().get(1)).get("SECOND-KEY-1")); } @@ -3093,19 +3090,19 @@ public class PropertyUtilsTestCase exten */ public void testSetMappedList() { TestBean bean = new TestBean(); - List list = new ArrayList(); + List<Object> list = new ArrayList<Object>(); list.add("klm"); list.add("nop"); list.add("qrs"); bean.getMapProperty().put("mappedList", list); - assertEquals("BEFORE", "klm", ((List)bean.getMapProperty().get("mappedList")).get(0)); + assertEquals("BEFORE", "klm", ((List<?>)bean.getMapProperty().get("mappedList")).get(0)); try { PropertyUtils.setProperty(bean, "mapProperty(mappedList)[0]", "KLM-UPDATED"); } catch (Throwable t) { fail("Threw " + t + ""); } - assertEquals("AFTER", "KLM-UPDATED", ((List)bean.getMapProperty().get("mappedList")).get(0)); + assertEquals("AFTER", "KLM-UPDATED", ((List<?>)bean.getMapProperty().get("mappedList")).get(0)); } /** @@ -3113,19 +3110,19 @@ public class PropertyUtilsTestCase exten */ public void testSetMappedMap() { TestBean bean = new TestBean(); - Map map = new HashMap(); + Map<String, Object> map = new HashMap<String, Object>(); map.put("sub-key-1", "sub-value-1"); map.put("sub-key-2", "sub-value-2"); map.put("sub-key-3", "sub-value-3"); bean.getMapProperty().put("mappedMap", map); - assertEquals("BEFORE", "sub-value-3", ((Map)bean.getMapProperty().get("mappedMap")).get("sub-key-3")); + assertEquals("BEFORE", "sub-value-3", ((Map<?, ?>)bean.getMapProperty().get("mappedMap")).get("sub-key-3")); try { PropertyUtils.setProperty(bean, "mapProperty(mappedMap)(sub-key-3)", "SUB-KEY-3-UPDATED"); } catch (Throwable t) { fail("Threw " + t + ""); } - assertEquals("AFTER", "SUB-KEY-3-UPDATED", ((Map)bean.getMapProperty().get("mappedMap")).get("sub-key-3")); + assertEquals("AFTER", "SUB-KEY-3-UPDATED", ((Map<?, ?>)bean.getMapProperty().get("mappedMap")).get("sub-key-3")); } /** @@ -4011,7 +4008,7 @@ public class PropertyUtilsTestCase exten Method reader = PropertyUtils.getReadMethod(pd[n]); assertNotNull("Reader for " + properties[i], reader); - Class clazz = reader.getDeclaringClass(); + Class<?> clazz = reader.getDeclaringClass(); assertNotNull("Declaring class for " + properties[i], clazz); assertEquals("Correct declaring class for " + properties[i], @@ -4020,7 +4017,7 @@ public class PropertyUtilsTestCase exten // Actually call the reader method we received try { - reader.invoke(bean, new Class[0]); + reader.invoke(bean, (Object[]) new Class<?>[0]); } catch (Throwable t) { fail("Call for " + properties[i] + ": " + t); } @@ -4070,7 +4067,7 @@ public class PropertyUtilsTestCase exten Method writer = PropertyUtils.getWriteMethod(pd[n]); assertNotNull("Writer for " + properties[i], writer); - Class clazz = writer.getDeclaringClass(); + Class<?> clazz = writer.getDeclaringClass(); assertNotNull("Declaring class for " + properties[i], clazz); assertEquals("Correct declaring class for " + properties[i], @@ -4208,9 +4205,6 @@ public class PropertyUtilsTestCase exten assertEquals("Cannot set no-getter property", "Omega", bean.getSecret()); // test mapped no getter descriptor - MappedPropertyDescriptor descriptor - = new MappedPropertyDescriptor("noGetterMappedProperty", BetaBean.class); - assertNotNull("Map Descriptor is null", PropertyUtils.getPropertyDescriptor(bean, "noGetterMappedProperty")); PropertyUtils.setMappedProperty(bean, "noGetterMappedProperty", "Epsilon", "Epsilon"); @@ -4268,8 +4262,8 @@ public class PropertyUtilsTestCase exten * mistake. */ public void testNestedPropertyKeyOrIndexOnBeanImplementingMap() throws Exception { - HashMap map = new HashMap(); - HashMap submap = new HashMap(); + HashMap<String, Object> map = new HashMap<String, Object>(); + HashMap<String, Object> submap = new HashMap<String, Object>(); BetaBean betaBean1 = new BetaBean("test1"); BetaBean betaBean2 = new BetaBean("test2"); @@ -4312,7 +4306,7 @@ public class PropertyUtilsTestCase exten // However this isn't how javabeans property methods work. A map // only effectively has "simple" properties, even when the // returned object is a Map or Array. - Object o = PropertyUtils.getNestedProperty(map, "submap[3]"); + PropertyUtils.getNestedProperty(map, "submap[3]"); // What, no exception? In that case, getNestedProperties has // probably just tried to do @@ -4336,10 +4330,10 @@ public class PropertyUtilsTestCase exten * <p> * If there are no keys, an empty string is returned. */ - private String keysToString(Map map) { + private String keysToString(Map<?, ?> map) { Object[] mapKeys = map.keySet().toArray(); java.util.Arrays.sort(mapKeys); - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); for(int i=0; i<mapKeys.length; ++i) { if (i != 0) buf.append(", "); @@ -4416,7 +4410,7 @@ public class PropertyUtilsTestCase exten assertEquals("setNestedProperty on non-simple property failed", "value1", utilsBean.getNestedProperty(bean, "mapProperty")); - HashMap myMap = new HashMap(); + HashMap<String, Object> myMap = new HashMap<String, Object>(); myMap.put("thebean", bean); utilsBean.getNestedProperty(myMap, "thebean.mapitem"); utilsBean.getNestedProperty(myMap, "thebean(mapitem)");