xref: /aosp_15_r20/external/snakeyaml/src/patches/android/PropertyUtils.patch (revision ac2a7c1bf4e14d82f3bd566dcc2d76d5b42faf34)
1*ac2a7c1bSSadaf Ebrahimidiff --git a/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java b/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
2*ac2a7c1bSSadaf Ebrahimiindex 8afc5761..208c9351 100644
3*ac2a7c1bSSadaf Ebrahimi--- a/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
4*ac2a7c1bSSadaf Ebrahimi+++ b/src/main/java/org/yaml/snakeyaml/introspector/PropertyUtils.java
5*ac2a7c1bSSadaf Ebrahimi@@ -13,12 +13,7 @@
6*ac2a7c1bSSadaf Ebrahimi  */
7*ac2a7c1bSSadaf Ebrahimi package org.yaml.snakeyaml.introspector;
8*ac2a7c1bSSadaf Ebrahimi
9*ac2a7c1bSSadaf Ebrahimi-import java.beans.FeatureDescriptor;
10*ac2a7c1bSSadaf Ebrahimi-import java.beans.IntrospectionException;
11*ac2a7c1bSSadaf Ebrahimi-import java.beans.Introspector;
12*ac2a7c1bSSadaf Ebrahimi-import java.beans.PropertyDescriptor;
13*ac2a7c1bSSadaf Ebrahimi import java.lang.reflect.Field;
14*ac2a7c1bSSadaf Ebrahimi-import java.lang.reflect.Method;
15*ac2a7c1bSSadaf Ebrahimi import java.lang.reflect.Modifier;
16*ac2a7c1bSSadaf Ebrahimi import java.util.Collection;
17*ac2a7c1bSSadaf Ebrahimi import java.util.HashMap;
18*ac2a7c1bSSadaf Ebrahimi@@ -65,47 +60,14 @@ public class PropertyUtils {
19*ac2a7c1bSSadaf Ebrahimi     }
20*ac2a7c1bSSadaf Ebrahimi
21*ac2a7c1bSSadaf Ebrahimi     Map<String, Property> properties = new LinkedHashMap<String, Property>();
22*ac2a7c1bSSadaf Ebrahimi-    boolean inaccessableFieldsExist = false;
23*ac2a7c1bSSadaf Ebrahimi-    if (bAccess == BeanAccess.FIELD) {
24*ac2a7c1bSSadaf Ebrahimi-      for (Class<?> c = type; c != null; c = c.getSuperclass()) {
25*ac2a7c1bSSadaf Ebrahimi+    for (Class<?> c = type; c != null; c = c.getSuperclass()) {
26*ac2a7c1bSSadaf Ebrahimi         for (Field field : c.getDeclaredFields()) {
27*ac2a7c1bSSadaf Ebrahimi-          int modifiers = field.getModifiers();
28*ac2a7c1bSSadaf Ebrahimi-          if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)
29*ac2a7c1bSSadaf Ebrahimi-              && !properties.containsKey(field.getName())) {
30*ac2a7c1bSSadaf Ebrahimi-            properties.put(field.getName(), new FieldProperty(field));
31*ac2a7c1bSSadaf Ebrahimi-          }
32*ac2a7c1bSSadaf Ebrahimi-        }
33*ac2a7c1bSSadaf Ebrahimi-      }
34*ac2a7c1bSSadaf Ebrahimi-    } else {// add JavaBean properties
35*ac2a7c1bSSadaf Ebrahimi-      try {
36*ac2a7c1bSSadaf Ebrahimi-        for (PropertyDescriptor property : Introspector.getBeanInfo(type)
37*ac2a7c1bSSadaf Ebrahimi-            .getPropertyDescriptors()) {
38*ac2a7c1bSSadaf Ebrahimi-          Method readMethod = property.getReadMethod();
39*ac2a7c1bSSadaf Ebrahimi-          if ((readMethod == null || !readMethod.getName().equals("getClass"))
40*ac2a7c1bSSadaf Ebrahimi-              && !isTransient(property)) {
41*ac2a7c1bSSadaf Ebrahimi-            properties.put(property.getName(), new MethodProperty(property));
42*ac2a7c1bSSadaf Ebrahimi-          }
43*ac2a7c1bSSadaf Ebrahimi-        }
44*ac2a7c1bSSadaf Ebrahimi-      } catch (IntrospectionException e) {
45*ac2a7c1bSSadaf Ebrahimi-        throw new YAMLException(e);
46*ac2a7c1bSSadaf Ebrahimi-      }
47*ac2a7c1bSSadaf Ebrahimi-
48*ac2a7c1bSSadaf Ebrahimi-      // add public fields
49*ac2a7c1bSSadaf Ebrahimi-      for (Class<?> c = type; c != null; c = c.getSuperclass()) {
50*ac2a7c1bSSadaf Ebrahimi-        for (Field field : c.getDeclaredFields()) {
51*ac2a7c1bSSadaf Ebrahimi-          int modifiers = field.getModifiers();
52*ac2a7c1bSSadaf Ebrahimi-          if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)) {
53*ac2a7c1bSSadaf Ebrahimi-            if (Modifier.isPublic(modifiers)) {
54*ac2a7c1bSSadaf Ebrahimi-              properties.put(field.getName(), new FieldProperty(field));
55*ac2a7c1bSSadaf Ebrahimi-            } else {
56*ac2a7c1bSSadaf Ebrahimi-              inaccessableFieldsExist = true;
57*ac2a7c1bSSadaf Ebrahimi-            }
58*ac2a7c1bSSadaf Ebrahimi-          }
59*ac2a7c1bSSadaf Ebrahimi-        }
60*ac2a7c1bSSadaf Ebrahimi-      }
61*ac2a7c1bSSadaf Ebrahimi-    }
62*ac2a7c1bSSadaf Ebrahimi-    if (properties.isEmpty() && inaccessableFieldsExist) {
63*ac2a7c1bSSadaf Ebrahimi-      throw new YAMLException("No JavaBean properties found in " + type.getName());
64*ac2a7c1bSSadaf Ebrahimi+            int modifiers = field.getModifiers();
65*ac2a7c1bSSadaf Ebrahimi+            if (!Modifier.isStatic(modifiers) && !Modifier.isTransient(modifiers)
66*ac2a7c1bSSadaf Ebrahimi+                    && !properties.containsKey(field.getName())) {
67*ac2a7c1bSSadaf Ebrahimi+                properties.put(field.getName(), new FieldProperty(field));
68*ac2a7c1bSSadaf Ebrahimi+             }
69*ac2a7c1bSSadaf Ebrahimi+         }
70*ac2a7c1bSSadaf Ebrahimi     }
71*ac2a7c1bSSadaf Ebrahimi     propertiesCache.put(type, properties);
72*ac2a7c1bSSadaf Ebrahimi     return properties;
73*ac2a7c1bSSadaf Ebrahimi@@ -113,10 +75,6 @@ public class PropertyUtils {
74*ac2a7c1bSSadaf Ebrahimi
75*ac2a7c1bSSadaf Ebrahimi   private static final String TRANSIENT = "transient";
76*ac2a7c1bSSadaf Ebrahimi
77*ac2a7c1bSSadaf Ebrahimi-  private boolean isTransient(FeatureDescriptor fd) {
78*ac2a7c1bSSadaf Ebrahimi-    return Boolean.TRUE.equals(fd.getValue(TRANSIENT));
79*ac2a7c1bSSadaf Ebrahimi-  }
80*ac2a7c1bSSadaf Ebrahimi-
81*ac2a7c1bSSadaf Ebrahimi   public Set<Property> getProperties(Class<? extends Object> type) {
82*ac2a7c1bSSadaf Ebrahimi     return getProperties(type, beanAccess);
83*ac2a7c1bSSadaf Ebrahimi   }
84