final DynaClass dynaClass = ((DynaBean) target).getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); if (dynaProperty == null) { return; // Skip this property setter type = dynaPropertyType(dynaProperty, value); if (index >= 0 && List.class.isAssignableFrom(type)) { type = Object.class; try { descriptor = getPropertyUtils().getPropertyDescriptor(target, name); if (descriptor == null) { return; // Skip this property setter getMappedPropertyType(); } else if (index >= 0 && descriptor instanceof IndexedPropertyDescriptor) { if (((IndexedPropertyDescriptor) descriptor).getIndexedWriteMethod() == null) { if (log.isDebugEnabled()) { log.debug("Skipping read-only property"); if (descriptor.getWriteMethod() == null) { if (log.isDebugEnabled()) { log.debug("Skipping read-only property");
if (bean instanceof DynaBean) { final DynaProperty[] descriptors = ((DynaBean) bean).getDynaClass().getDynaProperties(); for (DynaProperty descriptor : descriptors) { final String name = descriptor.getName(); description.put(name, getProperty(bean, name)); getPropertyDescriptors(bean); for (PropertyDescriptor descriptor : descriptors) { final String name = descriptor.getName(); if (descriptor.getReadMethod() != null) { description.put(name, getProperty(bean, name));
newBean = ((DynaBean) bean).getDynaClass().newInstance(); } else { newBean = bean.getClass().newInstance(); getPropertyUtils().copyProperties(newBean, bean); return (newBean);
/** * Construct a new <code>LazyDynaMap</code> based on an exisiting DynaClass * * @param dynaClass DynaClass to copy the name and properties from */ public LazyDynaMap(final DynaClass dynaClass) { this(dynaClass.getName(), dynaClass.getDynaProperties()); }
if (bean instanceof DynaBean) { final DynaProperty[] descriptors = ((DynaBean) bean).getDynaClass().getDynaProperties(); for (DynaProperty descriptor : descriptors) { final String name = descriptor.getName(); description.put(name, getProperty(bean, name)); getPropertyUtils().getPropertyDescriptors(bean); final Class<?> clazz = bean.getClass(); for (PropertyDescriptor descriptor : descriptors) { final String name = descriptor.getName(); if (getPropertyUtils().getReadMethod(clazz, descriptor) != null) { description.put(name, getProperty(bean, name));
final DynaClass dynaClass = ((DynaBean) target).getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); if (dynaProperty == null) { return null; // Skip this property setter type = dynaProperty.getType(); try { descriptor = getPropertyUtils().getPropertyDescriptor(target, name); if (descriptor == null) { return null; // Skip this property setter getIndexedPropertyType(); type = descriptor.getPropertyType();
((DynaBean) orig).getDynaClass().getDynaProperties(); for (DynaProperty origDescriptor : origDescriptors) { final String name = origDescriptor.getName(); if (getPropertyUtils().isReadable(orig, name) && getPropertyUtils().isWriteable(dest, name)) { final Object value = ((DynaBean) orig).get(name); copyProperty(dest, name, value); for (final Map.Entry<String, Object> entry : propMap.entrySet()) { final String name = entry.getKey(); if (getPropertyUtils().isWriteable(dest, name)) { copyProperty(dest, name, entry.getValue()); getPropertyUtils().getPropertyDescriptors(orig); for (PropertyDescriptor origDescriptor : origDescriptors) { final String name = origDescriptor.getName(); if ("class".equals(name)) { continue; // No point in trying to set an object's class
((DynaBean) orig).getDynaClass().getDynaProperties(); for (DynaProperty origDescriptor : origDescriptors) { final String name = origDescriptor.getName(); if (isReadable(orig, name) && isWriteable(dest, name)) { try { final Object value = ((DynaBean) orig).get(name); if (dest instanceof DynaBean) { ((DynaBean) dest).set(name, value); } else { setSimpleProperty(dest, name, value); getPropertyDescriptors(orig); for (PropertyDescriptor origDescriptor : origDescriptors) { final String name = origDescriptor.getName(); if (isReadable(orig, name) && isWriteable(dest, name)) { try {
public static Map<String, Object> toMap(Object bean) { if (bean == null) { return Collections.emptyMap(); } try { Map<String, Object> description = new HashMap<String, Object>(); if (bean instanceof DynaBean) { DynaProperty[] descriptors = ((DynaBean) bean).getDynaClass().getDynaProperties(); for (DynaProperty descriptor : descriptors) { String name = descriptor.getName(); description.put(name, BeanUtils.getProperty(bean, name)); } } else { PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(bean); for (PropertyDescriptor descriptor : descriptors) { String name = descriptor.getName(); if (PropertyUtils.getReadMethod(descriptor) != null) { description.put(name, PropertyUtils.getNestedProperty(bean, name)); } } } return description; } catch (Exception e) { return Collections.emptyMap(); } }
final Resolver resolver = getPropertyUtils().getResolver(); while (resolver.hasNested(name)) { try { target = getPropertyUtils().getProperty(target, resolver.next(name)); name = resolver.remove(name); } catch (final NoSuchMethodException e) { final DynaClass dynaClass = ((DynaBean) target).getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(propName); if (dynaProperty == null) { return; // Skip this property setter type = dynaPropertyType(dynaProperty, value); } else { PropertyDescriptor descriptor = null; try { descriptor = getPropertyUtils().getPropertyDescriptor(target, name); if (descriptor == null) { return; // Skip this property setter return; // Skip this property setter type = descriptor.getPropertyType(); if (type == null) {
public static Class type(Object obj, final String name) { try { if (DynaBean.class.isInstance(obj)) { DynaBean dynaBean = (DynaBean) obj; DynaProperty property = dynaBean.getDynaClass() .getDynaProperty(name); return property.getType(); } else { PropertyDescriptor desc = PropertyUtils.getPropertyDescriptor( obj, name); if (desc != null) { return desc.getPropertyType(); } } } catch (Exception e) { // do nothing } return null; }
((DynaBean) bean).getDynaClass().getDynaProperty(name); if (descriptor == null) { throw new NoSuchMethodException("Unknown property '" + name + "' on bean class '" + bean.getClass() + "'"); return (((DynaBean) bean).get(name, index)); getPropertyDescriptor(bean, name); if (descriptor == null) { throw new NoSuchMethodException("Unknown property '" + getIndexedReadMethod(); readMethod = MethodUtils.getAccessibleMethod(bean.getClass(), readMethod); if (readMethod != null) { subscript[0] = new Integer(index); try { return (invokeMethod(readMethod,bean, subscript)); } catch (final InvocationTargetException e) { if (e.getTargetException() instanceof final Method readMethod = getReadMethod(bean.getClass(), descriptor); if (readMethod == null) { throw new NoSuchMethodException("Property '" + name + "' has no " +
Object nestedBean = null; try { nestedBean = getProperty(bean, next); } catch (final IllegalAccessException e) { return false; return (((DynaBean) bean).getDynaClass().getDynaProperty(name) != null); } else { try { final PropertyDescriptor desc = getPropertyDescriptor(bean, name); if (desc != null) { Method readMethod = getReadMethod(bean.getClass(), desc); if (readMethod == null) { if (desc instanceof IndexedPropertyDescriptor) { readMethod = ((IndexedPropertyDescriptor) desc).getIndexedReadMethod(); } else if (desc instanceof MappedPropertyDescriptor) { readMethod = ((MappedPropertyDescriptor) desc).getMappedReadMethod();
return; } else if (bean instanceof List) { final List<Object> list = toObjectList(bean); list.set(index, value); return; ((DynaBean) bean).getDynaClass().getDynaProperty(name); if (descriptor == null) { throw new NoSuchMethodException("Unknown property '" + name + "' on bean class '" + bean.getClass() + "'"); ((DynaBean) bean).set(name, index, value); return; getPropertyDescriptor(bean, name); if (descriptor == null) { throw new NoSuchMethodException("Unknown property '" + getIndexedWriteMethod(); writeMethod = MethodUtils.getAccessibleMethod(bean.getClass(), writeMethod); if (writeMethod != null) { + " (class " + valueClassName+ ")"); invokeMethod(writeMethod, bean, subscript); } catch (final InvocationTargetException e) { if (e.getTargetException() instanceof
Object nestedBean = null; try { nestedBean = getProperty(bean, next); } catch (final IllegalAccessException e) { return false; return (((DynaBean) bean).getDynaClass().getDynaProperty(name) != null); } else { try { final PropertyDescriptor desc = getPropertyDescriptor(bean, name); if (desc != null) { Method writeMethod = getWriteMethod(bean.getClass(), desc); if (writeMethod == null) { if (desc instanceof IndexedPropertyDescriptor) { writeMethod = ((IndexedPropertyDescriptor) desc).getIndexedWriteMethod(); } else if (desc instanceof MappedPropertyDescriptor) { writeMethod = ((MappedPropertyDescriptor) desc).getMappedWriteMethod();
/** * @return the type of the given attribute. By default just return * Object.class if this is not known. */ public Class getAttributeType(String name) throws JellyTagException { DynaProperty property = getDynaBean().getDynaClass().getDynaProperty(name); if (property != null) { return property.getType(); } return Object.class; }
/** * Creates a new instance of {@code MultiWrapDynaBean} and initializes it * with the given collections of beans to be wrapped. * * @param beans the wrapped beans */ public MultiWrapDynaBean(final Collection<?> beans) { propsToBeans = new HashMap<>(); final Collection<DynaClass> beanClasses = new ArrayList<>(beans.size()); for (final Object bean : beans) { final DynaBean dynaBean = createDynaBean(bean); final DynaClass beanClass = dynaBean.getDynaClass(); for (final DynaProperty prop : beanClass.getDynaProperties()) { // ensure an order of properties if (!propsToBeans.containsKey(prop.getName())) { propsToBeans.put(prop.getName(), dynaBean); } } beanClasses.add(beanClass); } dynaClass = new MultiWrapDynaClass(beanClasses); }
/** * Indicate whether the {@link DynaBean} contains a specified * value for one (or more) of its properties. * * @param key The {@link DynaBean}'s property name * @return <code>true</code> if one of the {@link DynaBean}'s * properties contains a specified value. */ public boolean containsKey(final Object key) { final DynaClass dynaClass = getDynaBean().getDynaClass(); final DynaProperty dynaProperty = dynaClass.getDynaProperty(toString(key)); return (dynaProperty == null ? false : true); }
/** * Convenience method to retrieve the {@link DynaProperty}s * for this {@link DynaClass}. * * @return The an array of the {@link DynaProperty}s. */ private DynaProperty[] getDynaProperties() { return getDynaBean().getDynaClass().getDynaProperties(); }
/** * Writes the beans contained in the given iterator. * * @param beans The beans iterator */ public void write(Iterator beans) throws DataWriterException { while (beans.hasNext()) { DynaBean bean = (DynaBean)beans.next(); if (bean instanceof SqlDynaBean) { write((SqlDynaBean)bean); } else { _log.warn("Cannot write normal dyna beans (type: "+bean.getDynaClass().getName()+")"); } } }