public <ReturnType, CreateArgType, ConsumedType> AuthenticationPerformer<ReturnType, CreateArgType> getAuthenticationPerformer( Class<ReturnType> returnType, Class<CreateArgType> createArgType, String providerId ) { List<AuthenticationPerformer<ReturnType, CreateArgType>> performers = getSupportedAuthenticationPerformers( returnType, createArgType ); for ( AuthenticationPerformer<ReturnType, CreateArgType> candidatePerformer : performers ) { if ( candidatePerformer.getAuthenticationProvider().getId().equals( providerId ) ) { return candidatePerformer; } } return null; }
manager.registerConsumerClass( DelegatingUsernamePasswordConsumer.class ); List<AuthenticationPerformer<Object, AuthenticationConsumer>> performers = manager.getSupportedAuthenticationPerformers( Object.class, AuthenticationConsumer.class ); assertEquals( 1, performers.size() ); Set<String> ids = new HashSet<String>( Arrays.asList( NoAuthenticationAuthenticationProvider.NO_AUTH_ID ) ); new UsernamePasswordAuthenticationProvider( "upass", "u", "pass" ); manager.registerAuthenticationProvider( usernamePasswordAuthenticationProvider ); performers = manager.getSupportedAuthenticationPerformers( Object.class, AuthenticationConsumer.class ); assertEquals( 2, performers.size() ); ids = performers = manager.getSupportedAuthenticationPerformers( Object.class, AuthenticationConsumer.class ); assertEquals( 1, performers.size() ); ids = new HashSet<String>( Arrays.asList( NoAuthenticationAuthenticationProvider.NO_AUTH_ID ) );
@SuppressWarnings( "rawtypes" ) @Test public void testGetSupportedPerformers() throws AuthenticationConsumptionException, AuthenticationFactoryException { manager.registerConsumerClass( DelegatingNoAuthConsumer.class ); manager.registerConsumerClass( DelegatingUsernamePasswordConsumer.class ); manager.registerConsumerClass( DelegatingKerberosConsumer.class ); UsernamePasswordAuthenticationProvider usernamePasswordAuthenticationProvider = new UsernamePasswordAuthenticationProvider( "upass", "u", "pass" ); manager.registerAuthenticationProvider( usernamePasswordAuthenticationProvider ); KerberosAuthenticationProvider kerberosAuthenticationProvider = new KerberosAuthenticationProvider( "kerb", "kerb", true, "pass", true, "none" ); manager.registerAuthenticationProvider( kerberosAuthenticationProvider ); List<AuthenticationPerformer<Object, AuthenticationConsumer>> performers = manager.getSupportedAuthenticationPerformers( Object.class, AuthenticationConsumer.class ); assertEquals( 3, performers.size() ); Set<String> ids = new HashSet<String>( Arrays.asList( NoAuthenticationAuthenticationProvider.NO_AUTH_ID, usernamePasswordAuthenticationProvider.getId(), kerberosAuthenticationProvider.getId() ) ); for ( AuthenticationPerformer<Object, AuthenticationConsumer> performer : performers ) { ids.remove( performer.getAuthenticationProvider().getId() ); } assertEquals( 0, ids.size() ); }