/** * Converts some form of multiple objects into some form of multiple Strings. * * @param torenders Either some form of Object array or a Collection. * @param toreceive The object into which the rendered objects are to be placed as * Strings - either a String[] array (of the correct size!) or a * Collection. * @param resolver the BeanResolver */ // This code will go into ValueFixer. public void render(Object torenders, Object toreceive, BeanResolver resolver) { Denumeration denum = EnumerationConverter.getDenumeration(toreceive, reflectiveCache); for (Enumeration rendenum = EnumerationConverter.getEnumeration(torenders); rendenum .hasMoreElements();) { Object torender = rendenum.nextElement(); String rendered = resolver == null ? scalarparser.render(torender) : resolver.resolveBean(torender); denum.add(rendered); } }
public Object getFlattenedValue(String fullpath, Object root, Class targetclass, BeanResolver resolver) { Object toconvert = getBeanValue(fullpath, root, null); if (toconvert == null) return null; if (targetclass == null) { targetclass = EnumerationConverter.isEnumerable(toconvert.getClass()) ? ArrayUtil.stringArrayClass : String.class; } if (targetclass == String.class || targetclass == Boolean.class) { // TODO: We need proper vector support if (toconvert instanceof String[]) { toconvert = ((String[]) toconvert)[0]; } String rendered = resolver == null ? mappingcontext.generalLeafParser .render(toconvert) : resolver.resolveBean(toconvert); return targetclass == String.class ? rendered : mappingcontext.generalLeafParser.parse(Boolean.class, rendered); } else { // this is inverse to the "vector" setBeanValue branch below Object target = ReflectUtils.instantiateContainer(ArrayUtil.stringArrayClass, EnumerationConverter.getEnumerableSize(toconvert), reflectivecache); vcp.render(toconvert, target, resolver); return target; } }