1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.introspector;
18
19 import java.beans.PropertyDescriptor;
20
21 import org.yaml.snakeyaml.error.YAMLException;
22
23 public class MethodProperty extends GenericProperty {
24
25 private final PropertyDescriptor property;
26 private final boolean readable;
27 private final boolean writable;
28
29 public MethodProperty(PropertyDescriptor property) {
30 super(property.getName(), property.getPropertyType(),
31 property.getReadMethod() == null ? null : property.getReadMethod()
32 .getGenericReturnType());
33 this.property = property;
34 this.readable = property.getReadMethod() != null;
35 this.writable = property.getWriteMethod() != null;
36 }
37
38 @Override
39 public void set(Object object, Object value) throws Exception {
40 property.getWriteMethod().invoke(object, value);
41 }
42
43 @Override
44 public Object get(Object object) {
45 try {
46 property.getReadMethod().setAccessible(true);
47 return property.getReadMethod().invoke(object);
48 } catch (Exception e) {
49 throw new YAMLException("Unable to find getter for property '" + property.getName()
50 + "' on object " + object + ":" + e);
51 }
52 }
53
54 @Override
55 public boolean isWritable() {
56 return writable;
57 }
58
59 @Override
60 public boolean isReadable() {
61 return readable;
62 }
63 }