Home | History | Annotate | Download | only in android
      1 # HG changeset patch
      2 # Parent 698e9f1d6348fc1066ceaac7d264cbbf63bdcd21
      3 diff --git a/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java b/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
      4 --- a/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
      5 +++ b/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
      6 @@ -15,11 +15,7 @@
      7   */
      8  package org.yaml.snakeyaml.introspector;
      9  
     10 -import java.beans.IntrospectionException;
     11 -import java.beans.Introspector;
     12 -import java.beans.PropertyDescriptor;
     13  import java.lang.reflect.Field;
     14 -import java.lang.reflect.Method;
     15  import java.lang.reflect.Modifier;
     16  import java.util.Collection;
     17  import java.util.HashMap;
     18 @@ -37,64 +33,31 @@
     19      private BeanAccess beanAccess = BeanAccess.DEFAULT;
     20      private boolean allowReadOnlyProperties = false;
     21  
     22 -    protected Map<String, Property> getPropertiesMap(Class<?> type, BeanAccess bAccess)
     23 -            throws IntrospectionException {
     24 +    protected Map<String, Property> getPropertiesMap(Class<?> type, BeanAccess bAccess) {
     25          if (propertiesCache.containsKey(type)) {
     26              return propertiesCache.get(type);
     27          }
     28  
     29          Map<String, Property> properties = new LinkedHashMap<String, Property>();
     30 -        boolean inaccessableFieldsExist = false;
     31 -        switch (bAccess) {
     32 -        case FIELD:
     33 -            for (Class<?> c = type; c != null; c = c.getSuperclass()) {
     34 -                for (Field field : c.getDeclaredFields()) {
     35 -                    int modifiers = field.getModifiers();
     36 -                    if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)
     37 -                            && !properties.containsKey(field.getName())) {
     38 -                        properties.put(field.getName(), new FieldProperty(field));
     39 -                    }
     40 +        for (Class<?> c = type; c != null; c = c.getSuperclass()) {
     41 +            for (Field field : c.getDeclaredFields()) {
     42 +                int modifiers = field.getModifiers();
     43 +                if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)
     44 +                        && !properties.containsKey(field.getName())) {
     45 +                    properties.put(field.getName(), new FieldProperty(field));
     46                  }
     47              }
     48 -            break;
     49 -        default:
     50 -            // add JavaBean properties
     51 -            for (PropertyDescriptor property : Introspector.getBeanInfo(type)
     52 -                    .getPropertyDescriptors()) {
     53 -                Method readMethod = property.getReadMethod();
     54 -                if (readMethod == null || !readMethod.getName().equals("getClass")) {
     55 -                    properties.put(property.getName(), new MethodProperty(property));
     56 -                }
     57 -            }
     58 +        }
     59  
     60 -            // add public fields
     61 -            for (Class<?> c = type; c != null; c = c.getSuperclass()) {
     62 -                for (Field field : c.getDeclaredFields()) {
     63 -                    int modifiers = field.getModifiers();
     64 -                    if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)) {
     65 -                        if (Modifier.isPublic(modifiers)) {
     66 -                            properties.put(field.getName(), new FieldProperty(field));
     67 -                        } else {
     68 -                            inaccessableFieldsExist = true;
     69 -                        }
     70 -                    }
     71 -                }
     72 -            }
     73 -            break;
     74 -        }
     75 -        if (properties.isEmpty() && inaccessableFieldsExist) {
     76 -            throw new YAMLException("No JavaBean properties found in " + type.getName());
     77 -        }
     78          propertiesCache.put(type, properties);
     79          return properties;
     80      }
     81  
     82 -    public Set<Property> getProperties(Class<? extends Object> type) throws IntrospectionException {
     83 +    public Set<Property> getProperties(Class<? extends Object> type) {
     84          return getProperties(type, beanAccess);
     85      }
     86  
     87 -    public Set<Property> getProperties(Class<? extends Object> type, BeanAccess bAccess)
     88 -            throws IntrospectionException {
     89 +    public Set<Property> getProperties(Class<? extends Object> type, BeanAccess bAccess) {
     90          if (readableProperties.containsKey(type)) {
     91              return readableProperties.get(type);
     92          }
     93 @@ -103,8 +66,7 @@
     94          return properties;
     95      }
     96  
     97 -    protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess)
     98 -            throws IntrospectionException {
     99 +    protected Set<Property> createPropertySet(Class<? extends Object> type, BeanAccess bAccess) {
    100          Set<Property> properties = new TreeSet<Property>();
    101          Collection<Property> props = getPropertiesMap(type, bAccess).values();
    102          for (Property property : props) {
    103 @@ -115,13 +77,11 @@
    104          return properties;
    105      }
    106  
    107 -    public Property getProperty(Class<? extends Object> type, String name)
    108 -            throws IntrospectionException {
    109 +    public Property getProperty(Class<? extends Object> type, String name) {
    110          return getProperty(type, name, beanAccess);
    111      }
    112  
    113 -    public Property getProperty(Class<? extends Object> type, String name, BeanAccess bAccess)
    114 -            throws IntrospectionException {
    115 +    public Property getProperty(Class<? extends Object> type, String name, BeanAccess bAccess) {
    116          Map<String, Property> properties = getPropertiesMap(type, bAccess);
    117          Property property = properties.get(name);
    118          if (property == null || !property.isWritable()) {
    119