Author: markt Date: Mon Nov 20 13:38:30 2017 New Revision: 1815806 URL: http://svn.apache.org/viewvc?rev=1815806&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61780 Only include the default JASPIC registration ID in the return value for a call to AuthConfigFactory.getRegistrationIDs() if a RegistrationContext has been registered using the default registration ID. Patch provided by Lazar. This closes #88
Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java?rev=1815806&r1=1815805&r2=1815806&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java Mon Nov 20 13:38:30 2017 @@ -60,7 +60,7 @@ public class AuthConfigFactoryImpl exten new ConcurrentHashMap<>(); // Note: Although there will only ever be a maximum of one entry in this // Map, use a ConcurrentHashMap for consistency - private volatile Map<String,RegistrationContextImpl> defaultRegistration = + private final Map<String,RegistrationContextImpl> defaultRegistration = new ConcurrentHashMap<>(1); @@ -259,7 +259,7 @@ public class AuthConfigFactoryImpl exten result.addAll(layerAppContextRegistrations.keySet()); result.addAll(appContextRegistrations.keySet()); result.addAll(layerRegistrations.keySet()); - if (defaultRegistration != null) { + if (!defaultRegistration.isEmpty()) { result.add(DEFAULT_REGISTRATION_ID); } } else { Modified: tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java?rev=1815806&r1=1815805&r2=1815806&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java (original) +++ tomcat/trunk/test/org/apache/catalina/authenticator/jaspic/TestAuthConfigFactoryImpl.java Mon Nov 20 13:38:30 2017 @@ -17,7 +17,10 @@ package org.apache.catalina.authenticator.jaspic; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.security.auth.message.config.AuthConfigFactory; import javax.security.auth.message.config.AuthConfigProvider; @@ -287,6 +290,22 @@ public class TestAuthConfigFactoryImpl { } + @Test + public void testAllRegistrationIds() { + AuthConfigFactory factory = new AuthConfigFactoryImpl(); + AuthConfigProvider acp1 = new SimpleAuthConfigProvider(null, null); + String registrationId1 = factory.registerConfigProvider(acp1, "L_1", "AC_1", null); + AuthConfigProvider acp2 = new SimpleAuthConfigProvider(null, null); + String registrationId2 = factory.registerConfigProvider(acp2, "L_2", "AC_2", null); + + String[] registrationIds = factory.getRegistrationIDs(null); + Assert.assertTrue(registrationIds.length == 2); + Set<String> ids = new HashSet<>(Arrays.asList(registrationIds)); + Assert.assertTrue(ids.contains(registrationId1)); + Assert.assertTrue(ids.contains(registrationId2)); + } + + private static class SimpleRegistrationListener implements RegistrationListener { private final String layer; Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1815806&r1=1815805&r2=1815806&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Nov 20 13:38:30 2017 @@ -97,6 +97,13 @@ <code>AuthConfigFactory.getConfigProvider()</code>. Patch provided by Lazar. (markt) </fix> + <fix> + <bug>61780</bug>: Only include the default JASPIC registration ID in the + return value for a call to + <code>AuthConfigFactory.getRegistrationIDs()</code> if a + <code>RegistrationContext</code> has been registered using the default + registration ID. Patch provided by Lazar. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org