Package org.picketlink.identity.federation.bindings.jboss.auth

Source Code of org.picketlink.identity.federation.bindings.jboss.auth.AS7AuthCacheInvalidationFactory$AS7ExpiringPrincipalCacheInvalidation

package org.picketlink.identity.federation.bindings.jboss.auth;

import java.security.Principal;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import javax.naming.InitialContext;

import org.jboss.security.CacheableManager;
import org.jboss.security.SecurityConstants;
import org.picketlink.identity.federation.PicketLinkLogger;
import org.picketlink.identity.federation.PicketLinkLoggerFactory;
import org.picketlink.identity.federation.core.factories.JBossAuthCacheInvalidationFactory.TimeCacheExpiry;

public class AS7AuthCacheInvalidationFactory {

    public static TimeCacheExpiry getCacheExpiry() {
        return AS7ExpiringPrincipalCacheInvalidation.get();
    }

    protected static class AS7ExpiringPrincipalCacheInvalidation implements TimeCacheExpiry {

        private static final PicketLinkLogger logger = PicketLinkLoggerFactory.getLogger();

        protected static Timer timer = new Timer();

        protected static AS7ExpiringPrincipalCacheInvalidation _instance = null;

        protected AS7ExpiringPrincipalCacheInvalidation() {
        }

        protected static AS7ExpiringPrincipalCacheInvalidation get() {
            if (_instance == null)
                _instance = new AS7ExpiringPrincipalCacheInvalidation();
            return _instance;
        }

        public void register(final String securityDomain, final Date expiry, final Principal principal) {
            try {
                timer.purge();
            } catch (Exception e) {
                logger.trace("Exception in purging timer tasks:", e);
            }
            try {
                timer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        try {
                            String lookupDomain = securityDomain;
                            if (lookupDomain.startsWith(SecurityConstants.JAAS_CONTEXT_ROOT) == false)
                                lookupDomain = SecurityConstants.JAAS_CONTEXT_ROOT + "/" + lookupDomain;

                            // lookup the JBossCachedAuthManager.
                            InitialContext context = new InitialContext();
                            CacheableManager manager = (CacheableManager) context.lookup(lookupDomain);

                            // Flush the Authentication Cache
                            manager.flushCache(principal);
                        } catch (Exception e) {
                            logger.trace("Exception in scheduling timer:", e);
                        }
                    }
                }, expiry);
            } catch (Exception e) {
                logger.trace("Exception in scheduling timer:", e);
            }
        }
    }
}
TOP

Related Classes of org.picketlink.identity.federation.bindings.jboss.auth.AS7AuthCacheInvalidationFactory$AS7ExpiringPrincipalCacheInvalidation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.