List of usage examples for org.apache.commons.beanutils PropertyUtils NESTED_DELIM
char NESTED_DELIM
To view the source code for org.apache.commons.beanutils PropertyUtils NESTED_DELIM.
Click Source Link
From source file:org.kuali.rice.kns.web.struts.form.pojo.PojoPropertyUtilsBean.java
private int findNextNestedIndex(String expression) { // walk back from the end to the start // and find the first index that int bracketCount = 0; for (int i = 0, size = expression.length(); i < size; i++) { char at = expression.charAt(i); switch (at) { case PropertyUtils.NESTED_DELIM: if (bracketCount < 1) { return i; }/*from w w w . ja v a 2 s . c o m*/ break; case PropertyUtils.MAPPED_DELIM: case PropertyUtils.INDEXED_DELIM: // not bothered which ++bracketCount; break; case PropertyUtils.MAPPED_DELIM2: case PropertyUtils.INDEXED_DELIM2: // not bothered which --bracketCount; break; } } // can't find any return -1; }
From source file:org.kuali.rice.kns.web.struts.form.pojo.PojoPropertyUtilsBean.java
/** * Set the value of the specified simple property of the specified bean, * with no type conversions./*w w w .ja v a 2 s .com*/ * * @param bean Bean whose property is to be modified * @param name Name of the property to be modified * @param value Value to which the property should be set * * @exception IllegalAccessException if the caller does not have * access to the property accessor method * @exception IllegalArgumentException if <code>bean</code> or * <code>name</code> is null * @exception IllegalArgumentException if the property name is * nested or indexed * @exception InvocationTargetException if the property accessor method * throws an exception * @exception NoSuchMethodException if an accessor method for this * propety cannot be found */ public void setSimpleProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (bean == null) { if (LOG.isDebugEnabled()) LOG.debug("No bean specified, name = " + name + ", value = " + value); return; } if (name == null) { throw new IllegalArgumentException("No name specified"); } // Validate the syntax of the property name if (name.indexOf(PropertyUtils.NESTED_DELIM) >= 0) { throw new IllegalArgumentException("Nested property names are not allowed"); } else if (name.indexOf(PropertyUtils.INDEXED_DELIM) >= 0) { throw new IllegalArgumentException("Indexed property names are not allowed"); } else if (name.indexOf(PropertyUtils.MAPPED_DELIM) >= 0) { throw new IllegalArgumentException("Mapped property names are not allowed"); } // Retrieve the property setter method for the specified property PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); if (descriptor == null) { throw new NoSuchMethodException("Unknown property '" + name + "'"); } Method writeMethod = getWriteMethod(descriptor); if (writeMethod == null) { //throw new NoSuchMethodException("Property '" + name + "' has no setter method"); LOG.warn("Bean: " + bean.getClass().getName() + ", Property '" + name + "' has no setter method"); return; } // Call the property setter method Object values[] = new Object[1]; values[0] = value; if (LOG.isDebugEnabled()) { String valueClassName = value == null ? "<null>" : value.getClass().getName(); LOG.debug("setSimpleProperty: Invoking method " + writeMethod + " with value " + value + " (class " + valueClassName + ")"); } invokeMethod(writeMethod, bean, values); }
From source file:utils.beanUtils.JIMBeanUtilsBean.java
/** * /*from ww w .j a v a 2 s .c o m*/ * ------ * MODIFIED METHOD, THIS JAVADOC IS NOT COMPLETE * ------ * * <p>Copy the specified property value to the specified destination bean, * performing any type conversion that is required. If the specified * bean does not have a property of the specified name, or the property * is read only on the destination bean, return without * doing anything. If you have custom destination property types, register * {@link Converter}s for them by calling the <code>register()</code> * method of {@link ConvertUtils}.</p> * * <p><strong>IMPLEMENTATION RESTRICTIONS</strong>:</p> * <ul> * <li>Does not support destination properties that are indexed, * but only an indexed setter (as opposed to an array setter) * is available.</li> * <li>Does not support destination properties that are mapped, * but only a keyed setter (as opposed to a Map setter) * is available.</li> * <li>The desired property type of a mapped setter cannot be * determined (since Maps support any data type), so no conversion * will be performed.</li> * </ul> * * @param bean Bean on which setting is to be performed * @param name Property name (can be nested/indexed/mapped/combo) * @param value Value to be set * * @exception IllegalAccessException if the caller does not have * access to the property accessor method * @exception InvocationTargetException if the property accessor method * throws an exception */ protected void copyProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException { // Trace logging (if enabled) if (log.isTraceEnabled()) { StringBuffer sb = new StringBuffer(" copyProperty("); sb.append(bean); sb.append(", "); sb.append(name); sb.append(", "); if (value == null) { sb.append("<NULL>"); } else if (value instanceof String) { sb.append((String) value); } else if (value instanceof String[]) { String values[] = (String[]) value; sb.append('['); for (int i = 0; i < values.length; i++) { if (i > 0) { sb.append(','); } sb.append(values[i]); } sb.append(']'); } else { sb.append(value.toString()); } sb.append(')'); log.trace(sb.toString()); } //TODO: form here to next 'TODO' the code has not been revised // Resolve any nested expression to get the actual target bean Object target = bean; int delim = name.lastIndexOf(PropertyUtils.NESTED_DELIM); if (delim >= 0) { try { target = getPropertyUtils().getProperty(bean, name.substring(0, delim)); } catch (NoSuchMethodException e) { return; // Skip this property setter } name = name.substring(delim + 1); if (log.isTraceEnabled()) { log.trace(" Target bean = " + target); log.trace(" Target name = " + name); } } // Declare local variables we will require String propName = null; // Simple name of target property Class type = null; // Java type of target property int index = -1; // Indexed subscript value (if any) String key = null; // Mapped key value (if any) // Calculate the target property name, index, and key values propName = name; int i = propName.indexOf(PropertyUtils.INDEXED_DELIM); 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); } //TODO: until here (from last 'TODO') the code has not been revised // Calculate the target property type if (target instanceof DynaBean) { throw new IllegalArgumentException("this method can not work with DynaBean"); } 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); } //TODO: form here to next 'TODO' the code has not been revised // 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); } // TODO: until here (from last 'TODO') the code has not been revised } else { if (isFromPojoCopy() && !Persistent.class.isInstance(value) && !NonPersistent.class.isInstance(value)) { try { Object oldValue = getPropertyUtils().getProperty(target, propName); if (!(oldValue == null || (String.class.isInstance(oldValue) && ((String) oldValue).equalsIgnoreCase("")))) { // log.error("****** (1) comprobar si hay que quitar estas lneas de cdigo, ver diagnet *****"); return; } } catch (NoSuchMethodException e2) { } } // Destination must be simple Converter converter = getConvertUtils().lookup(type); if (converter != null) { log.trace(" USING CONVERTER " + converter); if (propName.equals("year")) { //chapuza para que los aos no salgan formateados value = value.toString(); } else { value = converter.convert(type, value); } } try { getPropertyUtils().setSimpleProperty(target, propName, value); } catch (Exception e) { try { //it is not a simple property, so it should be recursivelly copied Object originalValue = getPropertyUtils().getProperty(target, propName); if (originalValue == null) { //if it is null it should be created Class clazz = getPropertyUtils().getPropertyType(target, propName); originalValue = clazz.newInstance(); getPropertyUtils().setProperty(target, propName, originalValue); } if (target instanceof bussineslogic.objects.Personal) { if (name.equals("country") && (originalValue instanceof bussineslogic.objects.Country) && (value instanceof presentation.formbeans.objects.Country_IDForm)) { bussineslogic.objects.Country newCountry = new bussineslogic.objects.Country(); newCountry.setCode( ((presentation.formbeans.objects.Country_IDForm) value).getCountrycode()); ((bussineslogic.objects.Personal) target).setCountry(newCountry); } else if (name.equals("birth_country") && (originalValue instanceof bussineslogic.objects.Country) && (value instanceof presentation.formbeans.objects.Country_IDForm)) { bussineslogic.objects.Country newCountry = new bussineslogic.objects.Country(); newCountry.setCode( ((presentation.formbeans.objects.Country_IDForm) value).getCountrycode()); ((bussineslogic.objects.Personal) target).setBirth_country(newCountry); } else if (name.equals("end_of_contract_country") && (originalValue instanceof bussineslogic.objects.Country) && (value instanceof presentation.formbeans.objects.Country_IDForm)) { bussineslogic.objects.Country newCountry = new bussineslogic.objects.Country(); newCountry.setCode( ((presentation.formbeans.objects.Country_IDForm) value).getCountrycode()); ((bussineslogic.objects.Personal) target).setEnd_of_contract_country(newCountry); } else if (name.equals("nationality") && (originalValue instanceof bussineslogic.objects.Nationality) && (value instanceof presentation.formbeans.objects.Nationality_IDForm)) { bussineslogic.objects.Nationality newNationality = new bussineslogic.objects.Nationality(); newNationality.setCode(((presentation.formbeans.objects.Nationality_IDForm) value) .getNationalitycode()); ((bussineslogic.objects.Personal) target).setNationality(newNationality); } else if (name.equals("nationality_2") && (originalValue instanceof bussineslogic.objects.Nationality) && (value instanceof presentation.formbeans.objects.Nationality_IDForm)) { bussineslogic.objects.Nationality newNationality = new bussineslogic.objects.Nationality(); newNationality.setCode(((presentation.formbeans.objects.Nationality_IDForm) value) .getNationalitycode()); ((bussineslogic.objects.Personal) target).setNationality_2(newNationality); } else { copyProperties(originalValue, value); } } else if (target instanceof bussineslogic.objects.Alumni_personal) { if (name.equals("nationality") && (originalValue instanceof bussineslogic.objects.Nationality) && (value instanceof presentation.formbeans.objects.Nationality_IDForm)) { bussineslogic.objects.Nationality newNationality = new bussineslogic.objects.Nationality(); newNationality.setCode(((presentation.formbeans.objects.Nationality_IDForm) value) .getNationalitycode()); ((bussineslogic.objects.Alumni_personal) target).setNationality(newNationality); } else if (name.equals("nationality_2") && (originalValue instanceof bussineslogic.objects.Nationality) && (value instanceof presentation.formbeans.objects.Nationality_IDForm)) { bussineslogic.objects.Nationality newNationality = new bussineslogic.objects.Nationality(); newNationality.setCode(((presentation.formbeans.objects.Nationality_IDForm) value) .getNationalitycode()); ((bussineslogic.objects.Alumni_personal) target).setNationality_2(newNationality); } else { copyProperties(originalValue, value); } } else if (target instanceof bussineslogic.objects.Professional) { if (name.equals("payroll_institution") && (originalValue instanceof bussineslogic.objects.Payroll_institution) && (value instanceof presentation.formbeans.objects.Payroll_institution_IDForm)) { bussineslogic.objects.Payroll_institution newInstitution = new bussineslogic.objects.Payroll_institution(); newInstitution .setCode(((presentation.formbeans.objects.Payroll_institution_IDForm) value) .getPayroll_institutioncode()); ((bussineslogic.objects.Professional) target).setPayroll_institution(newInstitution); } else if (name.equals("payroll_institution_2") && (originalValue instanceof bussineslogic.objects.Payroll_institution) && (value instanceof presentation.formbeans.objects.Payroll_institution_IDForm)) { bussineslogic.objects.Payroll_institution newInstitution = new bussineslogic.objects.Payroll_institution(); newInstitution .setCode(((presentation.formbeans.objects.Payroll_institution_IDForm) value) .getPayroll_institutioncode()); ((bussineslogic.objects.Professional) target).setPayroll_institution_2(newInstitution); } else if (name.equals("professional_unit") && (originalValue instanceof bussineslogic.objects.Unit) && (value instanceof presentation.formbeans.objects.Unit_IDForm)) { bussineslogic.objects.Unit newUnit = new bussineslogic.objects.Unit(); newUnit.setCode(((presentation.formbeans.objects.Unit_IDForm) value).getUnitcode()); ((bussineslogic.objects.Professional) target).setProfessional_unit(newUnit); } else if (name.equals("professional_unit_3") && (originalValue instanceof bussineslogic.objects.Unit) && (value instanceof presentation.formbeans.objects.Unit_IDForm)) { bussineslogic.objects.Unit newUnit = new bussineslogic.objects.Unit(); newUnit.setCode(((presentation.formbeans.objects.Unit_IDForm) value).getUnitcode()); ((bussineslogic.objects.Professional) target).setProfessional_unit_3(newUnit); } else if (name.equals("professional_unit_4") && (originalValue instanceof bussineslogic.objects.Unit) && (value instanceof presentation.formbeans.objects.Unit_IDForm)) { bussineslogic.objects.Unit newUnit = new bussineslogic.objects.Unit(); newUnit.setCode(((presentation.formbeans.objects.Unit_IDForm) value).getUnitcode()); ((bussineslogic.objects.Professional) target).setProfessional_unit_4(newUnit); } else if (name.equals("research_group") && (originalValue instanceof bussineslogic.objects.Research_group) && (value instanceof presentation.formbeans.objects.Research_group_IDForm)) { bussineslogic.objects.Research_group newResearchGroup = new bussineslogic.objects.Research_group(); newResearchGroup.setCode(((presentation.formbeans.objects.Research_group_IDForm) value) .getResearch_groupcode()); ((bussineslogic.objects.Professional) target).setResearch_group(newResearchGroup); } else if (name.equals("research_group_2") && (originalValue instanceof bussineslogic.objects.Research_group) && (value instanceof presentation.formbeans.objects.Research_group_IDForm)) { bussineslogic.objects.Research_group newResearchGroup = new bussineslogic.objects.Research_group(); newResearchGroup.setCode(((presentation.formbeans.objects.Research_group_IDForm) value) .getResearch_groupcode()); ((bussineslogic.objects.Professional) target).setResearch_group_2(newResearchGroup); } else if (name.equals("research_group_3") && (originalValue instanceof bussineslogic.objects.Research_group) && (value instanceof presentation.formbeans.objects.Research_group_IDForm)) { bussineslogic.objects.Research_group newResearchGroup = new bussineslogic.objects.Research_group(); newResearchGroup.setCode(((presentation.formbeans.objects.Research_group_IDForm) value) .getResearch_groupcode()); ((bussineslogic.objects.Professional) target).setResearch_group_3(newResearchGroup); } else if (name.equals("research_group_4") && (originalValue instanceof bussineslogic.objects.Research_group) && (value instanceof presentation.formbeans.objects.Research_group_IDForm)) { bussineslogic.objects.Research_group newResearchGroup = new bussineslogic.objects.Research_group(); newResearchGroup.setCode(((presentation.formbeans.objects.Research_group_IDForm) value) .getResearch_groupcode()); ((bussineslogic.objects.Professional) target).setResearch_group_4(newResearchGroup); } else { copyProperties(originalValue, value); } } else { copyProperties(originalValue, value); } } catch (Exception e1) { throw new InvocationTargetException(e, "Cannot get " + propName + " of " + target); } } } }