private List<PropertyDescriptor> getAdapterPropertyDescriptors0(Class<?> type) { if (type == null) { throw new IllegalArgumentException("Type must be non-null"); } loadProvidersIfNecessary(); ArrayList<PropertyDescriptor> des = new ArrayList<PropertyDescriptor>(); for (BeanAdapterProvider provider : providers) { Class<?> pdType = provider.getAdapterClass(type); if (pdType != null) { BeanInfo info = getBeanInfo(pdType); if (info != null) { PropertyDescriptor[] pds = info.getPropertyDescriptors(); if (pds != null) { for (PropertyDescriptor pd : pds) { if (provider.providesAdapter(type, pd.getName())) { des.add(pd); } } } } } } return des; }
private BeanAdapterProvider getProvider(Object source, String property) { Class<?> type = source.getClass(); for (BeanAdapterProvider provider : providers) { if (provider.providesAdapter(type, property)) { return provider; } } return null; }