class CTSBlacklist implements Blacklist<T> {

    @Override
    public void blacklist(T entry) throws BlacklistException {
        DEBUG.message("CTSBlacklist: Blacklisting entry: {}", entry);

        try {
            final Token token = new Token(entry.getStableStorageID(), tokenType);
            token.setExpiryTimestamp(timeOf(entry.getBlacklistExpiryTime() + purgeDelayMs));
            token.setAttribute(BLACKLIST_TIME_FIELD, now());
            token.setAttribute(SERVER_ID_FIELD, localServerId);
            cts.create(token);
        } catch (CoreTokenException ex) {
            DEBUG.error("CTSBlacklist: Error blacklisting entry", ex);
            throw new BlacklistException(ex);
        }

        notifyListeners(entry);
    }

    @Inject public  CTSBlacklist(CTSPersistentStore cts, TokenType tokenType,
            @Named(CoreTokenConstants.CTS_SCHEDULED_SERVICE) ScheduledExecutorService scheduler,
            ThreadMonitor threadMonitor, WebtopNamingQuery serverConfig, long purgeDelayMs, long pollIntervalMs);

}