提交 227c30cd 编写于 作者: M malenkov

7195549: Better bean object persistence

Reviewed-by: art, ahgross
上级 00098cb8
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -35,6 +35,8 @@ import java.lang.reflect.Array; ...@@ -35,6 +35,8 @@ import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import sun.reflect.misc.MethodUtil;
/** /**
* This class is intended to handle <property> element. * This class is intended to handle <property> element.
* This element simplifies access to the properties. * This element simplifies access to the properties.
...@@ -168,11 +170,11 @@ final class PropertyElementHandler extends AccessorElementHandler { ...@@ -168,11 +170,11 @@ final class PropertyElementHandler extends AccessorElementHandler {
private static Object getPropertyValue(Object bean, String name, Integer index) throws IllegalAccessException, IntrospectionException, InvocationTargetException, NoSuchMethodException { private static Object getPropertyValue(Object bean, String name, Integer index) throws IllegalAccessException, IntrospectionException, InvocationTargetException, NoSuchMethodException {
Class<?> type = bean.getClass(); Class<?> type = bean.getClass();
if (index == null) { if (index == null) {
return findGetter(type, name).invoke(bean); return MethodUtil.invoke(findGetter(type, name), bean, new Object[] {});
} else if (type.isArray() && (name == null)) { } else if (type.isArray() && (name == null)) {
return Array.get(bean, index); return Array.get(bean, index);
} else { } 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 @@ final class PropertyElementHandler extends AccessorElementHandler { ...@@ -197,11 +199,11 @@ final class PropertyElementHandler extends AccessorElementHandler {
: null; : null;
if (index == 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)) { } else if (type.isArray() && (name == null)) {
Array.set(bean, index, value); Array.set(bean, index, value);
} else { } else {
findSetter(type, name, int.class, param).invoke(bean, index, value); MethodUtil.invoke(findSetter(type, name, int.class, param), bean, new Object[] {index, value});
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册