public Map < String , List < PathDetail > > calcDetails ( List < String > requestedPathDetails , PathDetailsBuilderFactory pathBuilderFactory , int previousIndex ) { if ( ! isFound ( ) || requestedPathDetails . isEmpty ( ) ) return Collections . emptyMap ( ) ; List < PathDetailsBuilder > pathBuilders = pathBuilderFactory . createPathDetailsBuilders ( requestedPathDetails , encoder , weighting ) ; if ( pathBuilders . isEmpty ( ) ) return Collections . emptyMap ( ) ; forEveryEdge ( new PathDetailsFromEdges ( pathBuilders , previousIndex ) ) ; Map < String , List < PathDetail > > pathDetails = new HashMap <> ( pathBuilders . size ( ) ) ; for ( PathDetailsBuilder builder : pathBuilders ) { Map . Entry < String , List < PathDetail > > entry = builder . build ( ) ; List < PathDetail > existing = pathDetails . put ( entry . getKey ( ) , entry . getValue ( ) ) ; if ( existing != null ) throw new IllegalStateException ( "Some PathDetailsBuilders use duplicate key: " + entry . getKey ( ) ) ; } return pathDetails ; }
Calculates the PathDetails for this Path . This method will return fast if there are no calculators .