class ContinuouslyRepeatScheduleStrategy implements ISchedulingStrategy {

    @Override
    public void init(final ISchedulerEntry entry, final IObject args) throws SchedulingStrategyExecutionException {
        try {
            String start = (String) args.getValue(startFieldName);
            LocalDateTime startTime;
            TemporalAmount interval = parseInterval((String) args.getValue(intervalFieldName));
            LocalDateTime now = LocalDateTime.now(ZoneOffset.UTC);

            if (start == null) {
                startTime = now;
            } else {
                startTime = LocalDateTime.parse(start);
            }

            entry.getState().setValue(startFieldName, startTime.toString());
            entry.getState().setValue(intervalFieldName, interval.toString());

            if (args.getValue(saveFieldName) == null || (Boolean) args.getValue(saveFieldName)) {
                entry.save();
            }

            entry.scheduleNext(nextTime(startTime, interval, datetimeToMillis(now)));
        } catch (ReadValueException | InvalidArgumentException | EntryScheduleException | EntryStorageAccessException
                | ChangeValueException e) {
            throw new SchedulingStrategyExecutionException("Error occurred initializing scheduler entry.", e);
        }
    }

    public  ContinuouslyRepeatScheduleStrategy();

}