Example usage for org.springframework.scheduling.support PeriodicTrigger PeriodicTrigger

List of usage examples for org.springframework.scheduling.support PeriodicTrigger PeriodicTrigger

Introduction

In this page you can find the example usage for org.springframework.scheduling.support PeriodicTrigger PeriodicTrigger.

Prototype

public PeriodicTrigger(long period, @Nullable TimeUnit timeUnit) 

Source Link

Document

Create a trigger with the given period and time unit.

Usage

From source file:org.apache.shiro.session.mgt.scheduler.SpringSessionValidationScheduler.java

/**
 * Starts session validation by creating a spring PeriodicTrigger.
 *///w ww. jav  a2 s .  c o  m
public void enableSessionValidation() {

    enabled = true;

    if (log.isDebugEnabled()) {
        log.debug("Scheduling session validation job using Spring Scheduler with "
                + "session validation interval of [" + sessionValidationInterval + "]ms...");
    }

    try {

        PeriodicTrigger trigger = new PeriodicTrigger(sessionValidationInterval, TimeUnit.MILLISECONDS);
        trigger.setInitialDelay(sessionValidationInterval);

        scheduler.schedule(new Runnable() {
            @Override
            public void run() {
                if (enabled) {
                    sessionManager.validateSessions();
                }
            }
        }, trigger);

        this.enabled = true;

        if (log.isDebugEnabled()) {
            log.debug("Session validation job successfully scheduled with Spring Scheduler.");
        }

    } catch (Exception e) {
        if (log.isErrorEnabled()) {
            log.error(
                    "Error starting the Spring Scheduler session validation job.  Session validation may not occur.",
                    e);
        }
    }
}

From source file:eu.openanalytics.rsb.component.DirectoryDepositHandler.java

@PostConstruct
public void setupChannelAdapters() {
    final List<DepositDirectoryConfiguration> depositDirectoryConfigurations = getConfiguration()
            .getDepositRootDirectories();

    if ((depositDirectoryConfigurations == null) || (depositDirectoryConfigurations.isEmpty())) {
        return;//  w  ww . j ava 2  s. c o  m
    }

    final NioFileLocker nioFileLocker = new NioFileLocker();

    for (final DepositDirectoryConfiguration depositDirectoryConfiguration : depositDirectoryConfigurations) {
        final PeriodicTrigger fileTrigger = new PeriodicTrigger(
                depositDirectoryConfiguration.getPollingPeriod(), TimeUnit.MILLISECONDS);
        fileTrigger.setInitialDelay(5000L);

        final File depositRootDirectory = depositDirectoryConfiguration.getRootDirectory();

        final FileReadingMessageSource fileMessageSource = new FileReadingMessageSource();
        fileMessageSource.setAutoCreateDirectory(true);
        fileMessageSource.setBeanFactory(beanFactory);
        fileMessageSource.setBeanName("rsb-deposit-dir-ms-" + depositRootDirectory.getPath());
        fileMessageSource.setDirectory(new File(depositRootDirectory, Configuration.DEPOSIT_JOBS_SUBDIR));
        fileMessageSource.setFilter(zipJobFilter);
        fileMessageSource.setLocker(nioFileLocker);
        fileMessageSource.afterPropertiesSet();

        final HeaderSettingMessageSourceWrapper<File> messageSource = new HeaderSettingMessageSourceWrapper<File>(
                fileMessageSource, DIRECTORY_CONFIG_HEADER_NAME, depositDirectoryConfiguration);

        final SourcePollingChannelAdapter channelAdapter = new SourcePollingChannelAdapter();
        channelAdapter.setBeanFactory(beanFactory);
        channelAdapter.setBeanName("rsb-deposit-dir-ca-" + depositRootDirectory.getPath());
        channelAdapter.setOutputChannel(directoryDepositChannel);
        channelAdapter.setSource(messageSource);
        channelAdapter.setTrigger(fileTrigger);
        channelAdapter.afterPropertiesSet();
        channelAdapter.start();

        getLogger().info("Started channel adapter: " + channelAdapter);

        channelAdapters.add(channelAdapter);
    }
}

From source file:eu.openanalytics.rsb.component.EmailDepositHandler.java

@PostConstruct
public void setupChannelAdapters() throws URISyntaxException {
    final List<DepositEmailConfiguration> depositEmailConfigurations = getConfiguration()
            .getDepositEmailAccounts();/*  www .ja va 2  s. c o  m*/

    if ((depositEmailConfigurations == null) || (depositEmailConfigurations.isEmpty())) {
        return;
    }

    for (final DepositEmailConfiguration depositEmailConfiguration : depositEmailConfigurations) {
        final PeriodicTrigger trigger = new PeriodicTrigger(depositEmailConfiguration.getPollingPeriod(),
                TimeUnit.MILLISECONDS);
        trigger.setInitialDelay(5000L);

        AbstractMailReceiver mailReceiver = null;

        final URI emailAccountURI = depositEmailConfiguration.getAccountURI();
        if (StringUtils.equals(emailAccountURI.getScheme(), "pop3")) {
            mailReceiver = new Pop3MailReceiver(emailAccountURI.toString());
        } else if (StringUtils.equals(emailAccountURI.getScheme(), "imap")) {
            mailReceiver = new ImapMailReceiver(emailAccountURI.toString());
            ((ImapMailReceiver) mailReceiver).setShouldMarkMessagesAsRead(true);
        } else {
            throw new IllegalArgumentException("Invalid email account URI: " + emailAccountURI);
        }

        mailReceiver.setBeanFactory(beanFactory);
        mailReceiver.setBeanName("rsb-email-ms-" + emailAccountURI.getHost() + emailAccountURI.hashCode());
        mailReceiver.setShouldDeleteMessages(true);
        mailReceiver.setMaxFetchSize(1);
        mailReceiver.afterPropertiesSet();
        final MailReceivingMessageSource fileMessageSource = new MailReceivingMessageSource(mailReceiver);
        final HeaderSettingMessageSourceWrapper<javax.mail.Message> messageSource = new HeaderSettingMessageSourceWrapper<javax.mail.Message>(
                fileMessageSource, EMAIL_CONFIG_HEADER_NAME, depositEmailConfiguration);

        final SourcePollingChannelAdapter channelAdapter = new SourcePollingChannelAdapter();
        channelAdapter.setBeanFactory(beanFactory);
        channelAdapter.setBeanName("rsb-email-ca-" + emailAccountURI.getHost() + emailAccountURI.hashCode());
        channelAdapter.setOutputChannel(emailDepositChannel);
        channelAdapter.setSource(messageSource);
        channelAdapter.setTrigger(trigger);
        channelAdapter.afterPropertiesSet();
        channelAdapter.start();

        getLogger().info("Started channel adapter: " + channelAdapter);

        channelAdapters.add(channelAdapter);
    }
}

From source file:com.devnexus.ting.config.MailNotificationConfig.java

@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata defaultPoller() {
    PollerMetadata pollerMetadata = new PollerMetadata();
    pollerMetadata.setTrigger(new PeriodicTrigger(1, TimeUnit.SECONDS));
    return pollerMetadata;
}

From source file:org.jasig.ssp.service.impl.ScheduledTaskWrapperServiceImpl.java

protected Trigger tryExpressionAsPeriodicTrigger(String configValue) throws BadTriggerConfigException {
    BadTriggerConfigException longParseException = null;
    try {/*  w  w  w .j  a  v a2 s  . c om*/
        final long period = Long.parseLong(configValue);
        if (period < 0) {
            return new DisabledTrigger();
        }
        // millis since that's what @Scheduled methods were historically
        // configured in
        return new PeriodicTrigger(period, TimeUnit.MILLISECONDS);
    } catch (NumberFormatException e) {
        longParseException = new BadTriggerConfigException(
                "Config [" + configValue + "] did not parse to a long.", configValue, e);
    } catch (IllegalArgumentException e) {
        longParseException = new BadTriggerConfigException(
                "Config [" + configValue + "] could not be used to initialize a PeriodicTrigger", configValue,
                e);
    }

    final Matcher matcher = PERIODIC_TRIGGER_WITH_INITIAL_DELAY_PATTERN.matcher(configValue);
    if (!(matcher.matches())) {
        throw new BadTriggerConfigException("Trigger expression could not be parsed as either a"
                + " simple period or as a period with an initial " + "offset. Original parse failure: ["
                + longParseException.getMessage() + "]. To be considered a period with an offset, "
                + "the expression must match this regexp" + "(without brackets): ["
                + PERIODIC_TRIGGER_WITH_INITIAL_DELAY_PATTERN + "]", configValue);
    }

    try {
        final String periodStr = matcher.group(1);
        final long periodLong = Long.parseLong(periodStr);

        if (periodLong < 0) {
            return new DisabledTrigger();
        }

        final String offsetStr = matcher.group(2);
        final long offsetLong = Long.parseLong(offsetStr);

        final PeriodicTrigger trigger = new PeriodicTrigger(periodLong, TimeUnit.MILLISECONDS);
        trigger.setInitialDelay(offsetLong);
        return trigger;
    } catch (NumberFormatException e) {
        throw new BadTriggerConfigException("Trigger expression could not be parsed as either a"
                + " simple period or as a period with an initial " + "offset. Original parse failure: ["
                + longParseException.getMessage() + "]. To be considered a period with an initial "
                + "delay, the expression must match this regexp" + "(without brackets): ["
                + PERIODIC_TRIGGER_WITH_INITIAL_DELAY_PATTERN + "]", configValue, e);
    } catch (IllegalArgumentException e) {
        throw new BadTriggerConfigException(
                "Trigger expression parsed as a period [{}] with an "
                        + "initial delay [{}] but could not be used to " + "initialize a PeriodicTrigger",
                configValue, e);
    }

}

From source file:org.springframework.cloud.stream.app.trigger.TriggerConfiguration.java

@Bean(name = TriggerConstants.TRIGGER_BEAN_NAME)
@Conditional(PeriodicTriggerCondition.class)
public Trigger periodicTrigger() {
    PeriodicTrigger trigger = new PeriodicTrigger(triggerProperties.getFixedDelay(),
            triggerProperties.getTimeUnit());
    trigger.setInitialDelay(triggerProperties.getInitialDelay());
    return trigger;
}