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.Job;
|
||||||
import org.thingsboard.server.common.data.job.JobType;
|
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;
|
||||||
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;
|
||||||
|
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.Task;
|
||||||
import org.thingsboard.server.common.data.job.task.TaskResult;
|
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.JobResult;
|
||||||
import org.thingsboard.server.common.data.job.JobStatus;
|
import org.thingsboard.server.common.data.job.JobStatus;
|
||||||
import org.thingsboard.server.common.data.job.JobType;
|
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;
|
||||||
|
import org.thingsboard.server.common.data.job.task.DummyTaskResult.DummyTaskFailure;
|
||||||
import org.thingsboard.server.common.data.page.PageLink;
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
import org.thingsboard.server.controller.AbstractControllerTest;
|
import org.thingsboard.server.controller.AbstractControllerTest;
|
||||||
import org.thingsboard.server.dao.job.JobService;
|
import org.thingsboard.server.dao.job.JobService;
|
||||||
|
|||||||
@ -23,7 +23,6 @@ import lombok.experimental.SuperBuilder;
|
|||||||
import org.thingsboard.server.common.data.job.JobType;
|
import org.thingsboard.server.common.data.job.JobType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@ -43,17 +42,13 @@ public class DummyTask extends Task<DummyTaskResult> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DummyTaskResult toResult(boolean discarded, Optional<Throwable> error) {
|
public DummyTaskResult toFailed(Throwable error) {
|
||||||
var result = DummyTaskResult.builder();
|
return DummyTaskResult.failed(this, error);
|
||||||
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();
|
|
||||||
|
@Override
|
||||||
|
public DummyTaskResult toDiscarded() {
|
||||||
|
return DummyTaskResult.discarded();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -61,15 +56,4 @@ public class DummyTask extends Task<DummyTaskResult> {
|
|||||||
return JobType.DUMMY;
|
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.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
import org.thingsboard.server.common.data.job.JobType;
|
import org.thingsboard.server.common.data.job.JobType;
|
||||||
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ -28,21 +27,43 @@ import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
|
|||||||
@SuperBuilder
|
@SuperBuilder
|
||||||
public class DummyTaskResult extends TaskResult {
|
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;
|
private DummyTaskFailure failure;
|
||||||
|
|
||||||
public DummyTaskResult(boolean success) {
|
|
||||||
super(success);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DummyTaskResult success() {
|
public static DummyTaskResult success() {
|
||||||
return 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
|
@Override
|
||||||
public JobType getJobType() {
|
public JobType getJobType() {
|
||||||
return JobType.DUMMY;
|
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.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.job.JobType;
|
import org.thingsboard.server.common.data.job.JobType;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "jobType")
|
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "jobType")
|
||||||
@ -51,7 +49,9 @@ public abstract class Task<R extends TaskResult> {
|
|||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public abstract Object getKey();
|
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();
|
public abstract JobType getJobType();
|
||||||
|
|
||||||
|
|||||||
@ -39,10 +39,6 @@ public abstract class TaskResult {
|
|||||||
private boolean success;
|
private boolean success;
|
||||||
private boolean discarded;
|
private boolean discarded;
|
||||||
|
|
||||||
public TaskResult(boolean success) {
|
|
||||||
this.success = success;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract JobType getJobType();
|
public abstract JobType getJobType();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,6 @@ import org.thingsboard.server.queue.provider.TaskProcessorQueueFactory;
|
|||||||
import org.thingsboard.server.queue.util.AfterStartUp;
|
import org.thingsboard.server.queue.util.AfterStartUp;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
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;
|
public abstract R process(T task) throws Exception;
|
||||||
|
|
||||||
private void reportTaskFailure(T task, Throwable error) {
|
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) {
|
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) {
|
private void reportTaskResult(T task, R result) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user