Mercurial > hg > Members > sugi > MessagePack-java
diff src/main/java/org/msgpack/template/builder/BeansFieldEntry.java @ 0:cb825acd883a
first commit
author | sugi |
---|---|
date | Sat, 18 Oct 2014 15:06:15 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/msgpack/template/builder/BeansFieldEntry.java Sat Oct 18 15:06:15 2014 +0900 @@ -0,0 +1,84 @@ +package org.msgpack.template.builder; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Type; + +import org.msgpack.MessageTypeException; +import org.msgpack.template.FieldOption; +import org.msgpack.template.builder.beans.PropertyDescriptor; + +public class BeansFieldEntry extends FieldEntry { + + protected PropertyDescriptor desc; + + public BeansFieldEntry() { + super(); + } + + public BeansFieldEntry(final BeansFieldEntry e) { + super(e.option); + this.desc = e.getPropertyDescriptor(); + } + + public BeansFieldEntry(final PropertyDescriptor desc) { + this(desc, FieldOption.DEFAULT); + } + + public BeansFieldEntry(final PropertyDescriptor desc, final FieldOption option) { + super(option); + this.desc = desc; + } + + public String getGetterName() { + return getPropertyDescriptor().getReadMethod().getName(); + } + + public String getSetterName() { + return getPropertyDescriptor().getWriteMethod().getName(); + } + + public PropertyDescriptor getPropertyDescriptor() { + return desc; + } + + @Override + public String getName() { + return getPropertyDescriptor().getDisplayName(); + } + + @Override + public Class<?> getType() { + return getPropertyDescriptor().getPropertyType(); + } + + @Override + public Type getGenericType() { + return getPropertyDescriptor().getReadMethod().getGenericReturnType(); + } + + @Override + public Object get(Object target) { + try { + return getPropertyDescriptor().getReadMethod().invoke(target); + } catch (IllegalArgumentException e) { + throw new MessageTypeException(e); + } catch (IllegalAccessException e) { + throw new MessageTypeException(e); + } catch (InvocationTargetException e) { + throw new MessageTypeException(e); + } + } + + @Override + public void set(Object target, Object value) { + try { + getPropertyDescriptor().getWriteMethod().invoke(target, value); + } catch (IllegalArgumentException e) { + throw new MessageTypeException(e); + } catch (IllegalAccessException e) { + throw new MessageTypeException(e); + } catch (InvocationTargetException e) { + throw new MessageTypeException(e); + } + } +} \ No newline at end of file