001    package org.springframework.richclient.widget.table;
002    import java.lang.reflect.InvocationTargetException;
003    import java.lang.reflect.Method;
004    
005    /**
006     * Basic implementation of a {@link Writer}.
007     * 
008     * @author Jan Hoskens
009     * @since 0.5.0
010     */
011    public class SimpleWriter extends SimpleAccessor implements Writer
012    {
013    
014        /** Setter method for the property. */
015        private Method writeMethod;
016    
017        /**
018         * Constructor. Uses the return type of the getter to find a matching setter.
019         * 
020         * @param beanClass
021         *            the type of the bean.
022         * @param propertyName
023         *            name of the property.
024         * @see SimpleAccessor#SimpleAccessor(Class, String)
025         */
026        public SimpleWriter(Class<?> beanClass, String propertyName)
027        {
028            super(beanClass, propertyName);
029            writeMethod = ClassUtils.getWriteMethod(beanClass, propertyName, getPropertyType());
030        }
031    
032        /**
033         * {@inheritDoc}
034         */
035        public void setValue(Object toEntity, Object newValue) throws IllegalAccessException,
036                InvocationTargetException
037        {
038            writeMethod.invoke(toEntity, new Object[]{newValue});
039        }
040    
041    }