@ SuppressWarnings ( "unchecked" ) public Multimap < String , Processor > getAllRequiredAttributes ( ) { Multimap < String , Processor > requiredInputs = HashMultimap . create ( ) ; for ( ProcessorGraphNode root : this . roots ) { final BiMap < String , String > inputMapper = root . getInputMapper ( ) ; for ( String attr : inputMapper . keySet ( ) ) { requiredInputs . put ( attr , root . getProcessor ( ) ) ; } final Object inputParameter = root . getProcessor ( ) . createInputParameter ( ) ; if ( inputParameter instanceof Values ) { continue ; } else if ( inputParameter != null ) { final Class < ? > inputParameterClass = inputParameter . getClass ( ) ; final Set < String > requiredAttributesDefinedInInputParameter = getAttributeNames ( inputParameterClass , FILTER_ONLY_REQUIRED_ATTRIBUTES ) ; for ( String attName : requiredAttributesDefinedInInputParameter ) { try { if ( inputParameterClass . getField ( attName ) . getType ( ) == Values . class ) { continue ; } } catch ( NoSuchFieldException e ) { throw new RuntimeException ( e ) ; } String mappedName = ProcessorUtils . getInputValueName ( root . getProcessor ( ) . getInputPrefix ( ) , inputMapper , attName ) ; requiredInputs . put ( mappedName , root . getProcessor ( ) ) ; } } } return requiredInputs ; }
Get all the names of inputs that are required to be in the Values object when this graph is executed .