package org.surfnet.oaaas.support; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.surfnet.oaaas.model.AccessToken; import org.surfnet.oaaas.repository.AccessTokenRepository; import javax.inject.Inject; import java.util.Date; /** * Helper class that contains scheduled tasks for database cleanup */ public class Cleaner { private static final Logger LOG = LoggerFactory.getLogger(Cleaner.class); @Inject private AccessTokenRepository accessTokenRepository; /** * Interval in ms between cleanup jobs */ private static final long CLEANUP_INTERVAL = 1000 * 3600; /** * Throw away expired tokens after 30 days */ private static final long EXPIRED_TOKEN_CLEANUP_AGE = 1000L * 3600 * 24 * 30; @Scheduled(fixedDelay = CLEANUP_INTERVAL) public void cleanupExpiredAccessTokens() { LOG.debug("Cleaning up expired access tokens"); for (AccessToken at : accessTokenRepository.findByMaxExpires(System.currentTimeMillis() - EXPIRED_TOKEN_CLEANUP_AGE)) { LOG.debug("Deleting expired access token {} (created: {}, expired: {})", at.getToken(), at.getCreationDate(), new Date(at.getExpires())); accessTokenRepository.delete(at); } } }