This is an automated email from the ASF dual-hosted git repository.

jlmonteiro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 9c7bc47a37144313bb5b455a1dd92a6d03c2cf58
Author: Jean-Louis Monteiro <[email protected]>
AuthorDate: Thu Apr 22 21:46:52 2021 +0200

    Add a workaround in case there is only one mechanism available
---
 .../cdi/TomEESecurityServletAuthenticationMechanismMapper.java    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/cdi/TomEESecurityServletAuthenticationMechanismMapper.java
 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/cdi/TomEESecurityServletAuthenticationMechanismMapper.java
index c74e76f..7ac4772 100644
--- 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/cdi/TomEESecurityServletAuthenticationMechanismMapper.java
+++ 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/cdi/TomEESecurityServletAuthenticationMechanismMapper.java
@@ -74,10 +74,11 @@ public class 
TomEESecurityServletAuthenticationMechanismMapper {
 
         final Set<HttpAuthenticationMechanism> availableBeans = 
authenticationMechanisms.stream().collect(Collectors.toSet());
         availableBeans.removeAll(servletAuthenticationMapper.values());
-        availableBeans.remove(defaultAuthenticationMechanism);
+        availableBeans.remove(defaultAuthenticationMechanism); // this our 
wrapper
 
         if (availableBeans.size() == 1) {
             
defaultAuthenticationMechanism.setDelegate(availableBeans.iterator().next());
+
         } else if (availableBeans.size() > 1) {
             throw new IllegalStateException(
                     "Multiple HttpAuthenticationMechanism found " +
@@ -86,6 +87,11 @@ public class 
TomEESecurityServletAuthenticationMechanismMapper {
                                   .collect(toList()) + " " +
                     "without a @WebServlet association. " +
                     "Deploy a single one for the application, or associate it 
with a @WebServlet.");
+
+        } else if (servletAuthenticationMapper.size() == 1) {
+            // don't think it's covered by the spec but sotera seems to 
support such a case
+            
defaultAuthenticationMechanism.setDelegate(servletAuthenticationMapper.values().iterator().next());
+
         }
     }
 

Reply via email to