⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beanutilsbean.java

📁 apache beanutils开源项目源码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        if (i >= 0) {            int k = propName.indexOf(PropertyUtils.INDEXED_DELIM2);            try {                index =                    Integer.parseInt(propName.substring(i + 1, k));            } catch (NumberFormatException e) {                ;            }            propName = propName.substring(0, i);        }        int j = propName.indexOf(PropertyUtils.MAPPED_DELIM);        if (j >= 0) {            int k = propName.indexOf(PropertyUtils.MAPPED_DELIM2);            try {                key = propName.substring(j + 1, k);            } catch (IndexOutOfBoundsException e) {                ;            }            propName = propName.substring(0, j);        }        // Calculate the target property type        if (target instanceof DynaBean) {            DynaClass dynaClass = ((DynaBean) target).getDynaClass();            DynaProperty dynaProperty = dynaClass.getDynaProperty(propName);            if (dynaProperty == null) {                return; // Skip this property setter            }            type = dynaProperty.getType();        } else {            PropertyDescriptor descriptor = null;            try {                descriptor =                    getPropertyUtils().getPropertyDescriptor(target, name);                if (descriptor == null) {                    return; // Skip this property setter                }            } catch (NoSuchMethodException e) {                return; // Skip this property setter            }            type = descriptor.getPropertyType();            if (type == null) {                // Most likely an indexed setter on a POJB only                if (log.isTraceEnabled()) {                    log.trace("    target type for property '" +                              propName + "' is null, so skipping ths setter");                }                return;            }        }        if (log.isTraceEnabled()) {            log.trace("    target propName=" + propName + ", type=" +                      type + ", index=" + index + ", key=" + key);        }        // Convert the specified value to the required type and store it        if (index >= 0) {                    // Destination must be indexed            Converter converter = getConvertUtils().lookup(type.getComponentType());            if (converter != null) {                log.trace("        USING CONVERTER " + converter);                value = converter.convert(type, value);            }            try {                getPropertyUtils().setIndexedProperty(target, propName,                                                 index, value);            } catch (NoSuchMethodException e) {                throw new InvocationTargetException                    (e, "Cannot set " + propName);            }        } else if (key != null) {            // Destination must be mapped            // Maps do not know what the preferred data type is,            // so perform no conversions at all            // FIXME - should we create or support a TypedMap?            try {                getPropertyUtils().setMappedProperty(target, propName,                                                key, value);            } catch (NoSuchMethodException e) {                throw new InvocationTargetException                    (e, "Cannot set " + propName);            }        } else {                             // Destination must be simple            Converter converter = getConvertUtils().lookup(type);            if (converter != null) {                log.trace("        USING CONVERTER " + converter);                value = converter.convert(type, value);            }            try {                getPropertyUtils().setSimpleProperty(target, propName, value);            } catch (NoSuchMethodException e) {                throw new InvocationTargetException                    (e, "Cannot set " + propName);            }        }    }    /**     * <p>Return the entire set of properties for which the specified bean     * provides a read method. This map contains the to <code>String</code>     * converted property values for all properties for which a read method     * is provided (i.e. where the getReadMethod() returns non-null).</p>     *     * <p>This map can be fed back to a call to     * <code>BeanUtils.populate()</code> to reconsitute the same set of     * properties, modulo differences for read-only and write-only     * properties, but only if there are no indexed properties.</p>     *     * @param bean Bean whose properties are to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public Map describe(Object bean)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        if (bean == null) {        //            return (Collections.EMPTY_MAP);            return (new java.util.HashMap());        }                if (log.isDebugEnabled()) {            log.debug("Describing bean: " + bean.getClass().getName());        }                    Map description = new HashMap();        if (bean instanceof DynaBean) {            DynaProperty descriptors[] =                ((DynaBean) bean).getDynaClass().getDynaProperties();            for (int i = 0; i < descriptors.length; i++) {                String name = descriptors[i].getName();                description.put(name, getProperty(bean, name));            }        } else {            PropertyDescriptor descriptors[] =                getPropertyUtils().getPropertyDescriptors(bean);            for (int i = 0; i < descriptors.length; i++) {                String name = descriptors[i].getName();                if (descriptors[i].getReadMethod() != null)                    description.put(name, getProperty(bean, name));            }        }        return (description);    }    /**     * Return the value of the specified array property of the specified     * bean, as a String array.     *     * @param bean Bean whose property is to be extracted     * @param name Name of the property to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String[] getArrayProperty(Object bean, String name)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getProperty(bean, name);        if (value == null) {            return (null);        } else if (value instanceof Collection) {            ArrayList values = new ArrayList();            Iterator items = ((Collection) value).iterator();            while (items.hasNext()) {                Object item = items.next();                if (item == null) {                    values.add((String) null);                } else {                    // convert to string using convert utils                    values.add(getConvertUtils().convert(item));                }            }            return ((String[]) values.toArray(new String[values.size()]));        } else if (value.getClass().isArray()) {            int n = Array.getLength(value);            String results[] = new String[n];            for (int i = 0; i < n; i++) {                Object item = Array.get(value, i);                if (item == null) {                    results[i] = null;                } else {                    // convert to string using convert utils                    results[i] = getConvertUtils().convert(item);                }            }            return (results);        } else {            String results[] = new String[1];            results[0] = value.toString();            return (results);        }    }    /**     * Return the value of the specified indexed property of the specified     * bean, as a String.  The zero-relative index of the     * required value must be included (in square brackets) as a suffix to     * the property name, or <code>IllegalArgumentException</code> will be     * thrown.     *     * @param bean Bean whose property is to be extracted     * @param name <code>propertyname[index]</code> of the property value     *  to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String getIndexedProperty(Object bean, String name)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getIndexedProperty(bean, name);        return (getConvertUtils().convert(value));    }    /**     * Return the value of the specified indexed property of the specified     * bean, as a String.  The index is specified as a method parameter and     * must *not* be included in the property name expression     *     * @param bean Bean whose property is to be extracted     * @param name Simple property name of the property value to be extracted     * @param index Index of the property value to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String getIndexedProperty(Object bean,                                            String name, int index)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getIndexedProperty(bean, name, index);        return (getConvertUtils().convert(value));    }    /**     * Return the value of the specified indexed property of the specified     * bean, as a String.  The String-valued key of the required value     * must be included (in parentheses) as a suffix to     * the property name, or <code>IllegalArgumentException</code> will be     * thrown.     *     * @param bean Bean whose property is to be extracted     * @param name <code>propertyname(index)</code> of the property value     *  to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String getMappedProperty(Object bean, String name)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getMappedProperty(bean, name);        return (getConvertUtils().convert(value));    }    /**     * Return the value of the specified mapped property of the specified     * bean, as a String.  The key is specified as a method parameter and     * must *not* be included in the property name expression     *     * @param bean Bean whose property is to be extracted     * @param name Simple property name of the property value to be extracted     * @param key Lookup key of the property value to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String getMappedProperty(Object bean,                                           String name, String key)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getMappedProperty(bean, name, key);        return (getConvertUtils().convert(value));    }    /**     * Return the value of the (possibly nested) property of the specified     * name, for the specified bean, as a String.     *     * @param bean Bean whose property is to be extracted     * @param name Possibly nested name of the property to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception IllegalArgumentException if a nested reference to a     *  property returns null     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */    public String getNestedProperty(Object bean, String name)            throws IllegalAccessException, InvocationTargetException,            NoSuchMethodException {        Object value = getPropertyUtils().getNestedProperty(bean, name);        return (getConvertUtils().convert(value));    }    /**     * Return the value of the specified property of the specified bean,     * no matter which property reference format is used, as a String.     *     * @param bean Bean whose property is to be extracted     * @param name Possibly indexed and/or nested name of the property     *  to be extracted     *     * @exception IllegalAccessException if the caller does not have     *  access to the property accessor method     * @exception InvocationTargetException if the property accessor method     *  throws an exception     * @exception NoSuchMethodException if an accessor method for this     *  property cannot be found     */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -