Search in sources :

Example 1 with OneTimeCalendar

use of com.enonic.xp.scheduler.OneTimeCalendar in project xp by enonic.

the class ScheduleAuditLogSupportImpl method addCalendar.

private void addCalendar(final PropertySet targetSet, final ScheduleCalendar calendar) {
    final PropertySet calendarSet = new PropertySet();
    switch(calendar.getType()) {
        case CRON:
            final CronCalendar cronCalendar = ((CronCalendar) calendar);
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, cronCalendar.getCronValue());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TIMEZONE, cronCalendar.getTimeZone().getID());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.CRON.name());
            break;
        case ONE_TIME:
            final OneTimeCalendar oneTimeCalendar = ((OneTimeCalendar) calendar);
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, oneTimeCalendar.getValue().toString());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.ONE_TIME.name());
            break;
        default:
            throw new IllegalStateException(String.format("invalid calendar type: '%s'", calendar.getType()));
    }
    targetSet.setSet(ScheduledJobPropertyNames.CALENDAR, calendarSet);
}
Also used : CronCalendar(com.enonic.xp.scheduler.CronCalendar) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) PropertySet(com.enonic.xp.data.PropertySet)

Example 2 with OneTimeCalendar

use of com.enonic.xp.scheduler.OneTimeCalendar in project xp by enonic.

the class SchedulerSerializer method addCalendar.

private static void addCalendar(final CreateScheduledJobParams params, final PropertySet data) {
    final PropertySet calendarSet = new PropertySet();
    switch(params.getCalendar().getType()) {
        case CRON:
            final CronCalendar cronCalendar = ((CronCalendar) params.getCalendar());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, cronCalendar.getCronValue());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TIMEZONE, cronCalendar.getTimeZone().getID());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.CRON.name());
            break;
        case ONE_TIME:
            final OneTimeCalendar oneTimeCalendar = ((OneTimeCalendar) params.getCalendar());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, oneTimeCalendar.getValue().toString());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.ONE_TIME.name());
            break;
        default:
            throw new IllegalStateException(String.format("invalid calendar type: '%s'", params.getCalendar().getType()));
    }
    data.setSet(ScheduledJobPropertyNames.CALENDAR, calendarSet);
}
Also used : CronCalendar(com.enonic.xp.scheduler.CronCalendar) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) PropertySet(com.enonic.xp.data.PropertySet)

Example 3 with OneTimeCalendar

use of com.enonic.xp.scheduler.OneTimeCalendar in project xp by enonic.

the class SchedulerSerializer method addCalendar.

private static void addCalendar(final ScheduledJob modifiedJob, final PropertySet data) {
    final PropertySet calendarSet = new PropertySet();
    switch(modifiedJob.getCalendar().getType()) {
        case CRON:
            final CronCalendar cronCalendar = ((CronCalendar) modifiedJob.getCalendar());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, cronCalendar.getCronValue());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TIMEZONE, cronCalendar.getTimeZone().getID());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.CRON.name());
            break;
        case ONE_TIME:
            final OneTimeCalendar oneTimeCalendar = ((OneTimeCalendar) modifiedJob.getCalendar());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_VALUE, oneTimeCalendar.getValue().toString());
            calendarSet.setString(ScheduledJobPropertyNames.CALENDAR_TYPE, ScheduleCalendarType.ONE_TIME.name());
            break;
        default:
            throw new IllegalStateException(String.format("invalid calendar type: '%s'", modifiedJob.getCalendar().getType()));
    }
    data.setSet(ScheduledJobPropertyNames.CALENDAR, calendarSet);
}
Also used : CronCalendar(com.enonic.xp.scheduler.CronCalendar) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) PropertySet(com.enonic.xp.data.PropertySet)

Example 4 with OneTimeCalendar

use of com.enonic.xp.scheduler.OneTimeCalendar in project xp by enonic.

the class SchedulerServiceImplTest method createOneTimeJob.

@Test
void createOneTimeJob() throws Exception {
    final ScheduledJobName name = ScheduledJobName.from("test");
    final DescriptorKey descriptor = DescriptorKey.from(ApplicationKey.from("com.enonic.app.features"), "landing");
    final ScheduleCalendar calendar = calendarService.oneTime(Instant.parse("2021-02-25T10:44:33.170079900Z"));
    final PropertyTree config = new PropertyTree();
    config.addString("string", "value");
    final PrincipalKey user = PrincipalKey.from("user:system:user");
    final CreateScheduledJobParams params = CreateScheduledJobParams.create().name(name).descriptor(descriptor).calendar(calendar).config(config).description("description").enabled(true).user(user).build();
    final Instant now = Instant.now();
    Thread.sleep(100);
    final ScheduledJob scheduledJob = adminContext().callWith(() -> schedulerService.create(params));
    assertEquals("2021-02-25T10:44:33.170079900Z", ((OneTimeCalendar) scheduledJob.getCalendar()).getValue().toString());
    assertEquals(ScheduleCalendarType.ONE_TIME, scheduledJob.getCalendar().getType());
    assertEquals("user:system:repo-test-user", scheduledJob.getCreator().toString());
    assertEquals("user:system:repo-test-user", scheduledJob.getModifier().toString());
    assertTrue(now.isBefore(scheduledJob.getModifiedTime()));
    assertTrue(now.isBefore(scheduledJob.getCreatedTime()));
}
Also used : CreateScheduledJobParams(com.enonic.xp.scheduler.CreateScheduledJobParams) ScheduledJobName(com.enonic.xp.scheduler.ScheduledJobName) PropertyTree(com.enonic.xp.data.PropertyTree) Instant(java.time.Instant) ScheduledJob(com.enonic.xp.scheduler.ScheduledJob) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) DescriptorKey(com.enonic.xp.page.DescriptorKey) ScheduleCalendar(com.enonic.xp.scheduler.ScheduleCalendar) PrincipalKey(com.enonic.xp.security.PrincipalKey) Test(org.junit.jupiter.api.Test) AbstractNodeTest(com.enonic.xp.repo.impl.node.AbstractNodeTest)

Example 5 with OneTimeCalendar

use of com.enonic.xp.scheduler.OneTimeCalendar in project xp by enonic.

the class SchedulerServiceImplTest method modify.

@Test
void modify() throws Exception {
    final ScheduledJobName name = ScheduledJobName.from("test");
    adminContext().callWith(() -> schedulerService.create(CreateScheduledJobParams.create().name(name).descriptor(DescriptorKey.from(ApplicationKey.from("com.enonic.app.test"), "task1")).calendar(calendarService.cron("* * * * *", TimeZone.getTimeZone("GMT+5:30"))).config(new PropertyTree()).build()));
    final Instant now = Instant.now();
    Thread.sleep(100);
    final User user = User.create().key(PrincipalKey.ofUser(IdProviderKey.system(), "user1")).displayName("User 1").email("user1@enonic.com").login("user1").build();
    final Context adminContext = adminContext();
    final Context userAdminContext = ContextBuilder.from(adminContext).authInfo(AuthenticationInfo.copyOf(adminContext.getAuthInfo()).user(user).build()).build();
    final ScheduledJob modifiedJob = userAdminContext.callWith(() -> schedulerService.modify(ModifyScheduledJobParams.create().name(name).editor(edit -> {
        edit.enabled = true;
        edit.description = "new description";
        edit.descriptor = DescriptorKey.from(ApplicationKey.from("com.enonic.app.test"), "task2");
        edit.config.addString("string", "value");
        edit.user = PrincipalKey.from("user:provider:user");
        edit.calendar = calendarService.oneTime(Instant.parse("2021-02-25T10:44:33.170079900Z"));
    }).build()));
    assertEquals(name, modifiedJob.getName());
    assertEquals(DescriptorKey.from(ApplicationKey.from("com.enonic.app.test"), "task2"), modifiedJob.getDescriptor());
    assertEquals("new description", modifiedJob.getDescription());
    assertEquals("2021-02-25T10:44:33.170079900Z", ((OneTimeCalendar) modifiedJob.getCalendar()).getValue().toString());
    assertEquals(ScheduleCalendarType.ONE_TIME, modifiedJob.getCalendar().getType());
    assertEquals("value", modifiedJob.getConfig().getString("string"));
    assertEquals(PrincipalKey.from("user:provider:user"), modifiedJob.getUser());
    assertEquals(PrincipalKey.from("user:system:repo-test-user"), modifiedJob.getCreator());
    assertEquals(PrincipalKey.from("user:system:user1"), modifiedJob.getModifier());
    assertEquals(user.getKey(), modifiedJob.getModifier());
    assertTrue(now.isBefore(modifiedJob.getModifiedTime()));
    assertTrue(Instant.now().isAfter(modifiedJob.getModifiedTime()));
    assertTrue(Instant.now().isAfter(modifiedJob.getCreatedTime()));
}
Also used : Context(com.enonic.xp.context.Context) SchedulerExecutorService(com.enonic.xp.impl.scheduler.SchedulerExecutorService) BeforeEach(org.junit.jupiter.api.BeforeEach) IdProviderKey(com.enonic.xp.security.IdProviderKey) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) SchedulerConstants(com.enonic.xp.scheduler.SchedulerConstants) UpdateLastRunCommand(com.enonic.xp.impl.scheduler.UpdateLastRunCommand) ScheduledJob(com.enonic.xp.scheduler.ScheduledJob) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) ContextAccessor(com.enonic.xp.context.ContextAccessor) SchedulerServiceImpl(com.enonic.xp.impl.scheduler.SchedulerServiceImpl) ScheduledTaskHandler(com.hazelcast.scheduledexecutor.ScheduledTaskHandler) ContextBuilder(com.enonic.xp.context.ContextBuilder) User(com.enonic.xp.security.User) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) TimeZone(java.util.TimeZone) Set(java.util.Set) SchedulerConfig(com.enonic.xp.impl.scheduler.SchedulerConfig) Instant(java.time.Instant) ScheduleAuditLogSupportImpl(com.enonic.xp.impl.scheduler.ScheduleAuditLogSupportImpl) TaskId(com.enonic.xp.task.TaskId) Test(org.junit.jupiter.api.Test) AbstractNodeTest(com.enonic.xp.repo.impl.node.AbstractNodeTest) CronCalendar(com.enonic.xp.scheduler.CronCalendar) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) RoleKeys(com.enonic.xp.security.RoleKeys) Context(com.enonic.xp.context.Context) CreateScheduledJobParams(com.enonic.xp.scheduler.CreateScheduledJobParams) IScheduledFuture(com.hazelcast.scheduledexecutor.IScheduledFuture) ScheduleCalendar(com.enonic.xp.scheduler.ScheduleCalendar) Mockito.mock(org.mockito.Mockito.mock) Strictness(org.mockito.quality.Strictness) ScheduleAuditLogExecutorImpl(com.enonic.xp.impl.scheduler.ScheduleAuditLogExecutorImpl) Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) MockitoSettings(org.mockito.junit.jupiter.MockitoSettings) ModifyScheduledJobParams(com.enonic.xp.scheduler.ModifyScheduledJobParams) Mock(org.mockito.Mock) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) NodeNotFoundException(com.enonic.xp.node.NodeNotFoundException) ScheduleCalendarType(com.enonic.xp.scheduler.ScheduleCalendarType) AuditLogService(com.enonic.xp.audit.AuditLogService) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) PropertyTree(com.enonic.xp.data.PropertyTree) NodeAlreadyExistAtPathException(com.enonic.xp.node.NodeAlreadyExistAtPathException) CalendarServiceImpl(com.enonic.xp.impl.scheduler.CalendarServiceImpl) AuthenticationInfo(com.enonic.xp.security.auth.AuthenticationInfo) Mockito.times(org.mockito.Mockito.times) Mockito.when(org.mockito.Mockito.when) ApplicationKey(com.enonic.xp.app.ApplicationKey) Mockito.verify(org.mockito.Mockito.verify) Mockito(org.mockito.Mockito) PrincipalKey(com.enonic.xp.security.PrincipalKey) DescriptorKey(com.enonic.xp.page.DescriptorKey) NodeAccessException(com.enonic.xp.node.NodeAccessException) ScheduledJobName(com.enonic.xp.scheduler.ScheduledJobName) User(com.enonic.xp.security.User) ScheduledJobName(com.enonic.xp.scheduler.ScheduledJobName) PropertyTree(com.enonic.xp.data.PropertyTree) Instant(java.time.Instant) ScheduledJob(com.enonic.xp.scheduler.ScheduledJob) OneTimeCalendar(com.enonic.xp.scheduler.OneTimeCalendar) Test(org.junit.jupiter.api.Test) AbstractNodeTest(com.enonic.xp.repo.impl.node.AbstractNodeTest)

Aggregations

OneTimeCalendar (com.enonic.xp.scheduler.OneTimeCalendar)8 CronCalendar (com.enonic.xp.scheduler.CronCalendar)5 Test (org.junit.jupiter.api.Test)4 PropertySet (com.enonic.xp.data.PropertySet)3 PropertyTree (com.enonic.xp.data.PropertyTree)3 DescriptorKey (com.enonic.xp.page.DescriptorKey)3 ScheduledJob (com.enonic.xp.scheduler.ScheduledJob)3 Instant (java.time.Instant)3 AbstractNodeTest (com.enonic.xp.repo.impl.node.AbstractNodeTest)2 CreateScheduledJobParams (com.enonic.xp.scheduler.CreateScheduledJobParams)2 ScheduleCalendar (com.enonic.xp.scheduler.ScheduleCalendar)2 ScheduledJobName (com.enonic.xp.scheduler.ScheduledJobName)2 PrincipalKey (com.enonic.xp.security.PrincipalKey)2 ApplicationKey (com.enonic.xp.app.ApplicationKey)1 AuditLogService (com.enonic.xp.audit.AuditLogService)1 Context (com.enonic.xp.context.Context)1 ContextAccessor (com.enonic.xp.context.ContextAccessor)1 ContextBuilder (com.enonic.xp.context.ContextBuilder)1 CalendarServiceImpl (com.enonic.xp.impl.scheduler.CalendarServiceImpl)1 ScheduleAuditLogExecutorImpl (com.enonic.xp.impl.scheduler.ScheduleAuditLogExecutorImpl)1