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
>

Reply via email to