# HG changeset patch # User malenkov # Date 1347353829 -14400 # Node ID e99355081c6dae2e3dee689ca5857a9062fa8dc7 # Parent c6f2434dd88d8d53d2ff6e0109928635ee71dfd5 7195549: Better bean object persistence Reviewed-by: art, ahgross diff -r c6f2434dd88d -r e99355081c6d jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java --- a/jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java Mon Sep 10 16:05:53 2012 -0700 +++ b/jdk/src/share/classes/com/sun/beans/decoder/PropertyElementHandler.java Tue Sep 11 12:57:09 2012 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import sun.reflect.misc.MethodUtil; + /** * This class is intended to handle <property> element. * This element simplifies access to the properties. @@ -168,11 +170,11 @@ private static Object getPropertyValue(Object bean, String name, Integer index) throws IllegalAccessException, IntrospectionException, InvocationTargetException, NoSuchMethodException { Class type = bean.getClass(); if (index == null) { - return findGetter(type, name).invoke(bean); + return MethodUtil.invoke(findGetter(type, name), bean, new Object[] {}); } else if (type.isArray() && (name == null)) { return Array.get(bean, index); } else { - return findGetter(type, name, int.class).invoke(bean, index); + return MethodUtil.invoke(findGetter(type, name, int.class), bean, new Object[] {index}); } } @@ -197,11 +199,11 @@ : null; if (index == null) { - findSetter(type, name, param).invoke(bean, value); + MethodUtil.invoke(findSetter(type, name, param), bean, new Object[] {value}); } else if (type.isArray() && (name == null)) { Array.set(bean, index, value); } else { - findSetter(type, name, int.class, param).invoke(bean, index, value); + MethodUtil.invoke(findSetter(type, name, int.class, param), bean, new Object[] {index, value}); } }