public List < LibertyFeature > getRequiredFeatures ( LibertyFeature feature , Map < String , LibertyFeature > allFeatures ) throws MavenRepoGeneratorException { List < LibertyFeature > dependencies = new ArrayList < LibertyFeature > ( ) ; Map < String , Collection < String > > requiredFeaturesWithTolerates = feature . getRequiredFeaturesWithTolerates ( ) ; if ( requiredFeaturesWithTolerates != null ) { for ( String requireFeature : requiredFeaturesWithTolerates . keySet ( ) ) { Collection < String > toleratesVersions = null ; if ( allFeatures . containsKey ( requireFeature ) ) { dependencies . add ( allFeatures . get ( requireFeature ) ) ; } else if ( ( toleratesVersions = requiredFeaturesWithTolerates . get ( requireFeature ) ) != null ) { log ( "For feature " + feature . getSymbolicName ( ) + ", cannot find direct dependency to required feature " + requireFeature + " so it must use tolerates list: " + toleratesVersions , LogLevel . WARN . getLevel ( ) ) ; boolean tolerateFeatureFound = false ; for ( String version : toleratesVersions ) { String tolerateFeatureAndVersion = requireFeature . substring ( 0 , requireFeature . lastIndexOf ( "-" ) ) + "-" + version ; if ( allFeatures . containsKey ( tolerateFeatureAndVersion ) ) { dependencies . add ( allFeatures . get ( tolerateFeatureAndVersion ) ) ; log ( "For feature " + feature . getSymbolicName ( ) + ", found tolerated dependency " + tolerateFeatureAndVersion , LogLevel . DEBUG . getLevel ( ) ) ; tolerateFeatureFound = true ; break ; } } if ( ! tolerateFeatureFound ) { throw new MavenRepoGeneratorException ( "For feature " + feature . getSymbolicName ( ) + ", cannot find required feature " + requireFeature + " or any of its tolerated versions: " + toleratesVersions ) ; } } else { throw new MavenRepoGeneratorException ( "For feature " + feature . getSymbolicName ( ) + ", cannot find required feature " + requireFeature ) ; } } } return dependencies ; }
Gets the list of features that this feature depends on .