Task results refactoring
This commit is contained in:
		
							parent
							
								
									9e878923e1
								
							
						
					
					
						commit
						950d1d85c4
					
				@ -21,8 +21,8 @@ import org.thingsboard.server.common.data.job.DummyJobConfiguration;
 | 
			
		||||
import org.thingsboard.server.common.data.job.Job;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobType;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTask;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTaskResult;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTaskResult.DummyTaskFailure;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.Task;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.TaskResult;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -30,8 +30,8 @@ import org.thingsboard.server.common.data.job.Job;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobResult;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobStatus;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobType;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTaskResult;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTaskResult.DummyTaskFailure;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.controller.AbstractControllerTest;
 | 
			
		||||
import org.thingsboard.server.dao.job.JobService;
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,6 @@ import lombok.experimental.SuperBuilder;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobType;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@ -43,17 +42,13 @@ public class DummyTask extends Task<DummyTaskResult> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public DummyTaskResult toResult(boolean discarded, Optional<Throwable> error) {
 | 
			
		||||
        var result = DummyTaskResult.builder();
 | 
			
		||||
        result.discarded(discarded);
 | 
			
		||||
        if (error.isPresent()) {
 | 
			
		||||
            result.failure(DummyTaskFailure.builder()
 | 
			
		||||
                    .error(error.map(Throwable::getMessage).orElse(null))
 | 
			
		||||
                    .number(number)
 | 
			
		||||
                    .failAlways(failAlways)
 | 
			
		||||
                    .build());
 | 
			
		||||
        }
 | 
			
		||||
        return result.build();
 | 
			
		||||
    public DummyTaskResult toFailed(Throwable error) {
 | 
			
		||||
        return DummyTaskResult.failed(this, error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public DummyTaskResult toDiscarded() {
 | 
			
		||||
        return DummyTaskResult.discarded();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@ -61,15 +56,4 @@ public class DummyTask extends Task<DummyTaskResult> {
 | 
			
		||||
        return JobType.DUMMY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Data
 | 
			
		||||
    @NoArgsConstructor
 | 
			
		||||
    @EqualsAndHashCode(callSuper = true)
 | 
			
		||||
    @SuperBuilder
 | 
			
		||||
    public static class DummyTaskFailure extends TaskFailure { // todo: do we need separate structure?
 | 
			
		||||
 | 
			
		||||
        private int number;
 | 
			
		||||
        private boolean failAlways;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,6 @@ import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
import lombok.experimental.SuperBuilder;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobType;
 | 
			
		||||
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ -28,21 +27,43 @@ import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
 | 
			
		||||
@SuperBuilder
 | 
			
		||||
public class DummyTaskResult extends TaskResult {
 | 
			
		||||
 | 
			
		||||
    private static final DummyTaskResult SUCCESS = new DummyTaskResult(true);
 | 
			
		||||
    private static final DummyTaskResult SUCCESS = DummyTaskResult.builder().success(true).build();
 | 
			
		||||
    private static final DummyTaskResult DISCARDED = DummyTaskResult.builder().discarded(true).build();
 | 
			
		||||
 | 
			
		||||
    private DummyTaskFailure failure;
 | 
			
		||||
 | 
			
		||||
    public DummyTaskResult(boolean success) {
 | 
			
		||||
        super(success);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static DummyTaskResult success() {
 | 
			
		||||
        return SUCCESS;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static DummyTaskResult failed(DummyTask task, Throwable error) {
 | 
			
		||||
        DummyTaskResult result = new DummyTaskResult();
 | 
			
		||||
        result.setFailure(DummyTaskFailure.builder()
 | 
			
		||||
                .error(error.getMessage())
 | 
			
		||||
                .number(task.getNumber())
 | 
			
		||||
                .failAlways(task.isFailAlways())
 | 
			
		||||
                .build());
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static DummyTaskResult discarded() {
 | 
			
		||||
        return DISCARDED;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public JobType getJobType() {
 | 
			
		||||
        return JobType.DUMMY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Data
 | 
			
		||||
    @NoArgsConstructor
 | 
			
		||||
    @EqualsAndHashCode(callSuper = true)
 | 
			
		||||
    @SuperBuilder
 | 
			
		||||
    public static class DummyTaskFailure extends TaskFailure {
 | 
			
		||||
 | 
			
		||||
        private int number;
 | 
			
		||||
        private boolean failAlways;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -27,8 +27,6 @@ import org.thingsboard.server.common.data.id.JobId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.job.JobType;
 | 
			
		||||
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@JsonIgnoreProperties(ignoreUnknown = true)
 | 
			
		||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "jobType")
 | 
			
		||||
@ -51,7 +49,9 @@ public abstract class Task<R extends TaskResult> {
 | 
			
		||||
    @JsonIgnore
 | 
			
		||||
    public abstract Object getKey();
 | 
			
		||||
 | 
			
		||||
    public abstract R toResult(boolean discarded, Optional<Throwable> error);
 | 
			
		||||
    public abstract R toFailed(Throwable error);
 | 
			
		||||
 | 
			
		||||
    public abstract R toDiscarded();
 | 
			
		||||
 | 
			
		||||
    public abstract JobType getJobType();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -39,10 +39,6 @@ public abstract class TaskResult {
 | 
			
		||||
    private boolean success;
 | 
			
		||||
    private boolean discarded;
 | 
			
		||||
 | 
			
		||||
    public TaskResult(boolean success) {
 | 
			
		||||
        this.success = success;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public abstract JobType getJobType();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,6 @@ import org.thingsboard.server.queue.provider.TaskProcessorQueueFactory;
 | 
			
		||||
import org.thingsboard.server.queue.util.AfterStartUp;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
import java.util.concurrent.ConcurrentHashMap;
 | 
			
		||||
@ -140,11 +139,13 @@ public abstract class TaskProcessor<T extends Task<R>, R extends TaskResult> {
 | 
			
		||||
    public abstract R process(T task) throws Exception;
 | 
			
		||||
 | 
			
		||||
    private void reportTaskFailure(T task, Throwable error) {
 | 
			
		||||
        reportTaskResult(task, task.toResult(false, Optional.of(error)));
 | 
			
		||||
        R taskResult = task.toFailed(error);
 | 
			
		||||
        reportTaskResult(task, taskResult);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void reportTaskDiscarded(T task) {
 | 
			
		||||
        reportTaskResult(task, task.toResult(true, Optional.empty()));
 | 
			
		||||
        R taskResult = task.toDiscarded();
 | 
			
		||||
        reportTaskResult(task, taskResult);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void reportTaskResult(T task, R result) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user