2929
3030import org .apache .commons .logging .Log ;
3131import org .apache .commons .logging .LogFactory ;
32-
3332import org .springframework .beans .BeanUtils ;
3433import org .springframework .core .log .LogMessage ;
3534import org .springframework .core .type .MethodMetadata ;
@@ -171,7 +170,7 @@ private Stream<PropertyDescriptor> collectDescriptors() {
171170 Stream <PropertyDescriptor > allButDefaultGetters = Arrays .stream (BeanUtils .getPropertyDescriptors (type )) //
172171 .filter (it -> !hasDefaultGetter (it ));
173172
174- Stream <PropertyDescriptor > ownDescriptors = metadata .map (it -> filterAndOrder (allButDefaultGetters , it ))
173+ Stream <PropertyDescriptor > ownDescriptors = metadata .map (it -> filterAndOrder (allButDefaultGetters , it )) //
175174 .orElse (allButDefaultGetters );
176175
177176 Stream <PropertyDescriptor > superTypeDescriptors = metadata .map (this ::fromMetadata ) //
@@ -189,18 +188,16 @@ private Stream<PropertyDescriptor> collectDescriptors() {
189188 * @param metadata must not be {@literal null}.
190189 * @return
191190 */
192- private static Stream <PropertyDescriptor > filterAndOrder (Stream <PropertyDescriptor > source ,
193- MethodsMetadata metadata ) {
191+ private Stream <PropertyDescriptor > filterAndOrder (Stream <PropertyDescriptor > source , MethodsMetadata metadata ) {
194192
195193 Map <String , Integer > orderedMethods = getMethodOrder (metadata );
196194
197- if (orderedMethods .isEmpty ()) {
198- return source ;
199- }
195+ Stream <PropertyDescriptor > filtered = source .filter (it -> it .getReadMethod () != null )
196+ .filter (it -> it .getReadMethod ().getDeclaringClass ().equals (type ));
200197
201- return source . filter ( descriptor -> descriptor . getReadMethod () != null )
202- . filter ( descriptor -> orderedMethods . containsKey ( descriptor . getReadMethod (). getName ()))
203- .sorted (Comparator .comparingInt (left -> orderedMethods .get (left .getReadMethod ().getName ())));
198+ return orderedMethods . isEmpty ( )
199+ ? filtered
200+ : filtered .sorted (Comparator .comparingInt (left -> orderedMethods .get (left .getReadMethod ().getName ())));
204201 }
205202
206203 /**
@@ -240,7 +237,8 @@ private static Optional<MethodsMetadata> getMetadata(Class<?> type) {
240237
241238 } catch (IOException e ) {
242239
243- logger .info (LogMessage .format ("Couldn't read class metadata for %s. Input property calculation might fail" , type ));
240+ logger .info (
241+ LogMessage .format ("Couldn't read class metadata for %s. Input property calculation might fail" , type ));
244242 return Optional .empty ();
245243 }
246244 }
0 commit comments