Search in sources :

Example 51 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class AbstractSchedulableTaskExecutor method execute.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    if (this.isDisabled()) {
        LOG.warn("Task [{}] is disabled and cannot be executed, remove schedule for this task to hide this warning.", AutowireHelper.getTargetClass(this).getSimpleName());
        // 
        return;
    }
    String executionDateProperty = context.getMergedJobDataMap().getString(EntityEvent.EVENT_PROPERTY_EXECUTE_DATE);
    if (StringUtils.isNotBlank(executionDateProperty)) {
        ZonedDateTime executionDate = ZonedDateTime.parse(executionDateProperty);
        // Is it safe to ask about now and count with delay after task execution?
        if (ZonedDateTime.now().isBefore(executionDate)) {
            LOG.debug("Task [{}] first fire time will be executed after [{}].", AutowireHelper.getTargetClass(this).getSimpleName(), executionDateProperty);
            // 
            return;
        }
    }
    // run as system - called from scheduler internall
    if (securityService.isAuthenticated() && !securityService.isSystemAuthenticated()) {
        throw new CoreException("System want to reuse thread logged with identity [" + securityService.getCurrentUsername() + "] for system processing!");
    }
    securityService.setSystemAuthentication();
    // 
    // scheduled task is quartz reference to IdM entity
    IdmScheduledTaskDto taskDto = getScheduledTask(context);
    // 
    // add task to queue only - quartz will start take care of the rest
    createIdmLongRunningTask(context, taskDto);
}
Also used : CoreException(eu.bcvsolutions.idm.core.api.exception.CoreException) ZonedDateTime(java.time.ZonedDateTime) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)

Example 52 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class IdmLongRunningTaskItemControllerRestTest method deleteItem.

@Test
public void deleteItem() throws Exception {
    IdmScheduledTaskDto scheduledTaskDto = getHelper().createSchedulableTask();
    IdmProcessedTaskItemDto taskItem = service.saveInternal(getHelper().prepareProcessedItem(scheduledTaskDto));
    getMockMvc().perform(get(BaseController.BASE_PATH + PATH + "/" + taskItem.getId()).with(authentication(getAuthentication())).contentType(TestHelper.HAL_CONTENT_TYPE)).andExpect(status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(TestHelper.HAL_CONTENT_TYPE)).andExpect(jsonPath("$.id", equalTo(taskItem.getId().toString())));
    int status = getMockMvc().perform(delete(BaseController.BASE_PATH + PATH + "/" + taskItem.getId()).contentType(MediaType.APPLICATION_JSON)).andReturn().getResponse().getStatus();
    assertEquals(403, status);
    getMockMvc().perform(get(BaseController.BASE_PATH + PATH + "/" + taskItem.getId()).with(authentication(getAuthentication())).contentType(TestHelper.HAL_CONTENT_TYPE)).andExpect(status().isOk());
}
Also used : IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) AbstractRestTest(eu.bcvsolutions.idm.test.api.AbstractRestTest) Test(org.junit.Test)

Example 53 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class DefaultIdmScheduledTaskService method findByQuartzTaskName.

@Override
@Transactional(readOnly = true)
public IdmScheduledTaskDto findByQuartzTaskName(String taskName) {
    IdmScheduledTaskFilter filter = new IdmScheduledTaskFilter();
    filter.setQuartzTaskName(taskName);
    Page<IdmScheduledTaskDto> results = find(filter, PageRequest.of(0, 1));
    if (results.getTotalElements() == 0) {
        return null;
    } else if (results.getTotalElements() == 1) {
        return results.iterator().next();
    }
    throw new SchedulerException(CoreResultCode.SEARCH_ERROR, ImmutableMap.of("reason", "Multiple tasks found for " + getClass().getSimpleName() + " task."));
}
Also used : SchedulerException(eu.bcvsolutions.idm.core.scheduler.exception.SchedulerException) IdmScheduledTaskFilter(eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmScheduledTaskFilter) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) Transactional(org.springframework.transaction.annotation.Transactional)

Example 54 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class DefaultIdmProcessedTaskItemServiceTest method testDeleteLogItemIntegrity.

@Test
public void testDeleteLogItemIntegrity() {
    IdmScheduledTaskDto d = getHelper().createSchedulableTask();
    IdmLongRunningTaskDto lrt = this.createLongRunningTask(d);
    IdmProcessedTaskItemDto item = service.saveInternal(getHelper().prepareProcessedItem(lrt));
    // 
    longrunningService.deleteInternal(lrt);
    // 
    assertNull(longrunningService.get(lrt.getId()));
    assertNull(service.get(item.getId()));
    assertNotNull(scheduledTaskService.get(d.getId()));
}
Also used : IdmLongRunningTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 55 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class DefaultIdmProcessedTaskItemServiceTest method testImmutable.

@Test
public void testImmutable() {
    IdmScheduledTaskDto d = getHelper().createSchedulableTask();
    IdmLongRunningTaskDto lrt = this.createLongRunningTask(d);
    IdmProcessedTaskItemDto item = getHelper().prepareProcessedItem(lrt);
    IdmProcessedTaskItemDto saved = service.get(service.saveInternal(item).getId());
    // set fields to new value
    saved.setReferencedDtoType(IdmIdentityContractDto.class.getCanonicalName());
    saved.setReferencedEntityId(UUID.randomUUID());
    saved.setLongRunningTask(this.createLongRunningTask(d).getId());
    // 
    IdmProcessedTaskItemDto retrieved = service.get(service.saveInternal(saved).getId());
    // fields must not update
    assertEquals(item.getLongRunningTask(), retrieved.getLongRunningTask());
    assertEquals(item.getReferencedDtoType(), retrieved.getReferencedDtoType());
    assertEquals(item.getReferencedEntityId(), retrieved.getReferencedEntityId());
    // 
    assertNotEquals(item.getLongRunningTask(), saved.getLongRunningTask());
    assertNotEquals(item.getReferencedDtoType(), saved.getReferencedDtoType());
    assertNotEquals(item.getReferencedEntityId(), saved.getReferencedEntityId());
}
Also used : IdmLongRunningTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) IdmIdentityContractDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Aggregations

IdmScheduledTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)63 Test (org.junit.Test)50 IdmProcessedTaskItemDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto)46 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)40 IdmLongRunningTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto)32 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)24 IdmProcessedTaskItemFilter (eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmProcessedTaskItemFilter)18 IdmPasswordDto (eu.bcvsolutions.idm.core.api.dto.IdmPasswordDto)9 UUID (java.util.UUID)9 AbstractVerifiableUnitTest (eu.bcvsolutions.idm.test.api.AbstractVerifiableUnitTest)8 OperationResult (eu.bcvsolutions.idm.core.api.entity.OperationResult)7 Task (eu.bcvsolutions.idm.core.scheduler.api.dto.Task)7 Pageable (org.springframework.data.domain.Pageable)5 LocalDate (org.joda.time.LocalDate)4 PageImpl (org.springframework.data.domain.PageImpl)4 AbstractDto (eu.bcvsolutions.idm.core.api.dto.AbstractDto)3 IdmIdentityContractDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto)3 CoreException (eu.bcvsolutions.idm.core.api.exception.CoreException)3 IdmLongRunningTaskFilter (eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmLongRunningTaskFilter)2 SchedulableTaskExecutor (eu.bcvsolutions.idm.core.scheduler.api.service.SchedulableTaskExecutor)2