2017-02-13 16:53 GMT+02:00 <ma...@apache.org>: > > Author: markt > Date: Mon Feb 13 14:53:37 2017 > New Revision: 1782789 > > URL: http://svn.apache.org/viewvc?rev=1782789&view=rev > Log: > Optional isn't available in Java 7
:( Yep it was introduced with Java 8 > Modified: > tomcat/tc8.5.x/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java > > Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java > URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java?rev=1782789&r1=1782788&r2=1782789&view=diff > ============================================================================== > --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java (original) > +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/authenticator/AuthenticatorBase.java Mon Feb 13 14:53:37 2017 > @@ -23,15 +23,16 @@ import java.text.SimpleDateFormat; > import java.util.Date; > import java.util.Locale; > import java.util.Map; > -import java.util.Optional; > import java.util.Set; > > import javax.security.auth.Subject; > +import javax.security.auth.callback.CallbackHandler; > import javax.security.auth.message.AuthException; > import javax.security.auth.message.AuthStatus; > import javax.security.auth.message.MessageInfo; > import javax.security.auth.message.config.AuthConfigFactory; > import javax.security.auth.message.config.AuthConfigProvider; > +import javax.security.auth.message.config.ClientAuthConfig; > import javax.security.auth.message.config.RegistrationListener; > import javax.security.auth.message.config.ServerAuthConfig; > import javax.security.auth.message.config.ServerAuthContext; > @@ -88,7 +89,7 @@ import org.apache.tomcat.util.res.String > * @author Craig R. McClanahan > */ > public abstract class AuthenticatorBase extends ValveBase > - implements Authenticator, RegistrationListener { > +implements Authenticator, RegistrationListener { > > private static final Log log = LogFactory.getLog(AuthenticatorBase.class); > > @@ -98,6 +99,8 @@ public abstract class AuthenticatorBase > private static final String DATE_ONE = > (new SimpleDateFormat(FastHttpDateFormat.RFC1123_DATE, Locale.US)).format(new Date(1)); > > + private static final AuthConfigProvider NO_PROVIDER_AVAILABLE = new NoOpAuthConfigProvider(); > + > /** > * The string manager for this package. > */ > @@ -220,7 +223,7 @@ public abstract class AuthenticatorBase > protected SingleSignOn sso = null; > > private volatile String jaspicAppContextID = null; > - private volatile Optional<AuthConfigProvider> jaspicProvider = null; > + private volatile AuthConfigProvider jaspicProvider = null; > > > // ------------------------------------------------------------- Properties > @@ -556,7 +559,7 @@ public abstract class AuthenticatorBase > > if (jaspicProvider == null && !doAuthenticate(request, response) || > jaspicProvider != null && > - !authenticateJaspic(request, response, jaspicState, false)) { > + !authenticateJaspic(request, response, jaspicState, false)) { > if (log.isDebugEnabled()) { > log.debug(" Failed authenticate() test"); > } > @@ -1187,17 +1190,22 @@ public abstract class AuthenticatorBase > > > private AuthConfigProvider getJaspicProvider() { > - Optional<AuthConfigProvider> provider = jaspicProvider; > - if (provider == null) { > + AuthConfigProvider provider = jaspicProvider; > + if (NO_PROVIDER_AVAILABLE == provider) { > + return null; > + } else if (provider == null) { > provider = findJaspicProvider(); > } > - return provider.orElse(null); > + return provider; > } > > - private Optional<AuthConfigProvider> findJaspicProvider() { > + private AuthConfigProvider findJaspicProvider() { > AuthConfigFactory factory = AuthConfigFactory.getFactory(); > - Optional<AuthConfigProvider> provider = > - Optional.ofNullable(factory.getConfigProvider("HttpServlet", jaspicAppContextID, this)); > + AuthConfigProvider provider = > + factory.getConfigProvider("HttpServlet", jaspicAppContextID, this); > + if (provider == null) { > + provider = NO_PROVIDER_AVAILABLE; > + } > jaspicProvider = provider; I think that here the block should be if (provider == null) { jaspicProvider = NO_PROVIDER_AVAILABLE; } else { jaspicProvider = provider; } Otherwise we will return NO_PROVIDER_AVAILABLE and not null Wdyt? Regards, Violeta > return provider; > } > @@ -1212,4 +1220,24 @@ public abstract class AuthenticatorBase > public MessageInfo messageInfo = null; > public ServerAuthContext serverAuthContext = null; > } > + > + > + private static class NoOpAuthConfigProvider implements AuthConfigProvider { > + > + @Override > + public ClientAuthConfig getClientAuthConfig(String layer, String appContext, CallbackHandler handler) > + throws AuthException { > + return null; > + } > + > + @Override > + public ServerAuthConfig getServerAuthConfig(String layer, String appContext, CallbackHandler handler) > + throws AuthException { > + return null; > + } > + > + @Override > + public void refresh() { > + } > + } > } > \ No newline at end of file > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org >