@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2012 - 20 19 the original author or authors .
* Copyright 2012 - 20 2 1 the original author or authors .
*
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Collections ;
import java.util.Collections ;
import java.util.List ;
import java.util.List ;
import java.util.Map ;
import java.util.Map ;
import java.util.stream.Collectors ;
import org.assertj.core.api.Condition ;
import org.assertj.core.api.Condition ;
import org.hamcrest.collection.IsMapContaining ;
import org.hamcrest.collection.IsMapContaining ;
@ -131,7 +132,7 @@ public final class Metadata {
@Override
@Override
public boolean matches ( ConfigurationMetadata value ) {
public boolean matches ( ConfigurationMetadata value ) {
ItemMetadata itemMetadata = getFirstItemWithName ( value , this . name ) ;
ItemMetadata itemMetadata = findItem ( value , this . name ) ;
if ( itemMetadata = = null ) {
if ( itemMetadata = = null ) {
return false ;
return false ;
}
}
@ -207,13 +208,14 @@ public final class Metadata {
this . description , this . defaultValue , null ) ;
this . description , this . defaultValue , null ) ;
}
}
private ItemMetadata getFirstItemWithName ( ConfigurationMetadata metadata , String name ) {
private ItemMetadata findItem ( ConfigurationMetadata metadata , String name ) {
for ( ItemMetadata item : metadata . getItems ( ) ) {
List < ItemMetadata > candidates = metadata . getItems ( ) . stream ( )
if ( item . isOfItemType ( this . itemType ) & & name . equals ( item . getName ( ) ) ) {
. filter ( ( item ) - > item . isOfItemType ( this . itemType ) & & name . equals ( item . getName ( ) ) )
return item ;
. collect ( Collectors . toList ( ) ) ;
}
if ( candidates . size ( ) > 1 ) {
throw new IllegalStateException ( "More that one metadata item with name '" + name + "': " + candidates ) ;
}
}
return null ;
return ( candidates . size ( ) = = 1 ) ? candidates . get ( 0 ) : null ;
}
}
}
}