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