test_class.declarator: knownAuthorizationContext
test_class.modifier: private static
test_class.original_string: private static AuthorizationContext knownAuthorizationContext;
test_class.type: AuthorizationContext
test_class.var_name: knownAuthorizationContext
test_class.declarator: messageDispatcher
test_class.modifier: private static
test_class.original_string: private static Executor messageDispatcher;
test_class.type: Executor
test_class.var_name: messageDispatcher
test_class.declarator: testName = new TestName()
test_class.modifier: @Rule public final
test_class.original_string: @Rule public final TestName testName = new TestName();
test_class.type: TestName
test_class.var_name: testName
test_class.declarator: softly = new JUnitSoftAssertions()
test_class.modifier: @Rule public final
test_class.original_string: @Rule public final JUnitSoftAssertions softly = new JUnitSoftAssertions();
test_class.type: JUnitSoftAssertions
test_class.var_name: softly
test_class.declarator: authenticationProviderA
test_class.modifier: @Mock private
test_class.original_string: @Mock private AuthenticationProvider authenticationProviderA;
test_class.type: AuthenticationProvider
test_class.var_name: authenticationProviderA
test_class.declarator: authenticationProviderB
test_class.modifier: @Mock private
test_class.original_string: @Mock private AuthenticationProvider authenticationProviderB;
test_class.type: AuthenticationProvider
test_class.var_name: authenticationProviderB
test_class.declarator: authenticationFailureAggregator
test_class.modifier: @Mock private
test_class.original_string: @Mock private AuthenticationFailureAggregator authenticationFailureAggregator;
test_class.type: AuthenticationFailureAggregator
test_class.var_name: authenticationFailureAggregator
test_class.declarator: dittoHeaders
test_class.modifier: private
test_class.original_string: private DittoHeaders dittoHeaders;
test_class.type: DittoHeaders
test_class.var_name: dittoHeaders
test_class.file: services/gateway/security/src/test/java/org/eclipse/ditto/services/gateway/security/authentication/AuthenticationChainTest.java
test_class.identifier: AuthenticationChainTest
test_case.body: @Test
      public void getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty() {
          assertThatExceptionOfType(IllegalArgumentException.class)
                  .isThrownBy(
                          () -> AuthenticationChain.getInstance(Collections.emptyList(), authenticationFailureAggregator,
                                  messageDispatcher))
                  .withMessage("The argument 'authenticationProviders' must not be empty!")
                  .withNoCause();
      }
test_case.class_method_signature: AuthenticationChainTest.getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty()
test_case.full_signature: @Test public void getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty()
test_case.identifier: getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty
test_case.invocations: withNoCause withMessage isThrownBy assertThatExceptionOfType getInstance emptyList
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void getInstanceThrowsIllegalArgumentExceptionWhenProviderListIsEmpty()
focal_class.declarator: LOGGER = LoggerFactory.getLogger(AuthenticationChain.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = LoggerFactory.getLogger(AuthenticationChain.class);
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: authenticationProviderChain
focal_class.modifier: private final
focal_class.original_string: private final Collection<AuthenticationProvider<?>> authenticationProviderChain;
focal_class.type: Collection<AuthenticationProvider<?>>
focal_class.var_name: authenticationProviderChain
focal_class.declarator: authenticationDispatcher
focal_class.modifier: private final
focal_class.original_string: private final Executor authenticationDispatcher;
focal_class.type: Executor
focal_class.var_name: authenticationDispatcher
focal_class.declarator: authenticationFailureAggregator
focal_class.modifier: private final
focal_class.original_string: private final AuthenticationFailureAggregator authenticationFailureAggregator;
focal_class.type: AuthenticationFailureAggregator
focal_class.var_name: authenticationFailureAggregator
focal_class.file: services/gateway/security/src/main/java/org/eclipse/ditto/services/gateway/security/authentication/AuthenticationChain.java
focal_class.identifier: AuthenticationChain
focal_class.class_method_signature: AuthenticationChain.AuthenticationChain(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.full_signature: private  AuthenticationChain(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.identifier: AuthenticationChain
focal_class.modifiers: private
focal_class.parameters: (final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.signature:  AuthenticationChain(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.class_method_signature: AuthenticationChain.getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.full_signature: public static AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.identifier: getInstance
focal_class.modifiers: public static
focal_class.parameters: (final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.return: AuthenticationChain
focal_class.signature: AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_class.class_method_signature: AuthenticationChain.authenticate(final RequestContext requestContext,
              final DittoHeaders dittoHeaders)
focal_class.full_signature: public CompletableFuture<AuthenticationResult> authenticate(final RequestContext requestContext,
              final DittoHeaders dittoHeaders)
focal_class.identifier: authenticate
focal_class.modifiers: public
focal_class.parameters: (final RequestContext requestContext,
              final DittoHeaders dittoHeaders)
focal_class.return: CompletableFuture<AuthenticationResult>
focal_class.signature: CompletableFuture<AuthenticationResult> authenticate(final RequestContext requestContext,
              final DittoHeaders dittoHeaders)
focal_class.class_method_signature: AuthenticationChain.doAuthenticate(final RequestContext requestContext, final DittoHeaders dittoHeaders)
focal_class.full_signature: private AuthenticationResult doAuthenticate(final RequestContext requestContext, final DittoHeaders dittoHeaders)
focal_class.identifier: doAuthenticate
focal_class.modifiers: private
focal_class.parameters: (final RequestContext requestContext, final DittoHeaders dittoHeaders)
focal_class.return: AuthenticationResult
focal_class.signature: AuthenticationResult doAuthenticate(final RequestContext requestContext, final DittoHeaders dittoHeaders)
focal_method.body: public static AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher) {
  
          return new AuthenticationChain(authenticationProviders, authenticationFailureAggregator,
                  authenticationDispatcher);
      }
focal_method.class_method_signature: AuthenticationChain.getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_method.full_signature: public static AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_method.identifier: getInstance
focal_method.modifiers: public static
focal_method.parameters: (final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)
focal_method.return: AuthenticationChain
focal_method.signature: AuthenticationChain getInstance(final Collection<AuthenticationProvider<?>> authenticationProviders,
              final AuthenticationFailureAggregator authenticationFailureAggregator,
              final Executor authenticationDispatcher)