Skip to content

Commit 1c3ffbd

Browse files
Add validation context to case and process validator validate method
1 parent edd1b10 commit 1c3ffbd

File tree

10 files changed

+79
-8
lines changed

10 files changed

+79
-8
lines changed

modules/flowable-case-validation/src/main/java/org/flowable/cmmn/validation/CaseValidationContext.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,20 @@
1212
*/
1313
package org.flowable.cmmn.validation;
1414

15+
import java.util.List;
16+
1517
import org.flowable.cmmn.model.BaseElement;
1618
import org.flowable.cmmn.model.Case;
1719
import org.flowable.cmmn.model.CaseElement;
1820
import org.flowable.cmmn.validation.validator.ValidationEntry;
21+
import org.flowable.cmmn.validation.validator.ValidatorSet;
1922

2023
/**
2124
* @author Filip Hrisafov
2225
*/
2326
public interface CaseValidationContext {
27+
28+
List<ValidationEntry> getEntries();
2429

2530
default ValidationEntry addError(String problem, String description) {
2631
return addError(problem, null, null, null, description);
@@ -68,5 +73,7 @@ default ValidationEntry addEntry(String problem, Case caze, CaseElement caseElem
6873
}
6974

7075
ValidationEntry addEntry(ValidationEntry entry);
76+
77+
void setCurrentValidatorSet(ValidatorSet validatorSet);
7178

7279
}

modules/flowable-case-validation/src/main/java/org/flowable/cmmn/validation/CaseValidationContextImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*/
2424
public class CaseValidationContextImpl implements CaseValidationContext {
2525

26-
protected final ValidatorSet validatorSet;
26+
protected ValidatorSet validatorSet;
2727
protected final List<ValidationEntry> entries = new ArrayList<>();
2828

2929
public CaseValidationContextImpl(ValidatorSet validatorSet) {
@@ -36,7 +36,13 @@ public ValidationEntry addEntry(ValidationEntry entry) {
3636
entries.add(entry);
3737
return entry;
3838
}
39+
40+
@Override
41+
public void setCurrentValidatorSet(ValidatorSet validatorSet) {
42+
this.validatorSet = validatorSet;
43+
}
3944

45+
@Override
4046
public List<ValidationEntry> getEntries() {
4147
return entries;
4248
}

modules/flowable-case-validation/src/main/java/org/flowable/cmmn/validation/CaseValidator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
public interface CaseValidator {
2727

2828
List<ValidationEntry> validate(CmmnModel model);
29+
30+
List<ValidationEntry> validate(CmmnModel model, CaseValidationContext validationContext);
2931

3032
List<ValidatorSet> getValidatorSets();
3133
}

modules/flowable-case-validation/src/main/java/org/flowable/cmmn/validation/CaseValidatorImpl.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,34 @@ public class CaseValidatorImpl implements CaseValidator {
3232

3333
@Override
3434
public List<ValidationEntry> validate(CmmnModel model) {
35+
return validate(model, null);
36+
}
37+
38+
@Override
39+
public List<ValidationEntry> validate(CmmnModel model, CaseValidationContext validationContext) {
3540
List<ValidationEntry> allEntries = new ArrayList<>();
3641

42+
CaseValidationContext currentValidationContext = validationContext;
3743
for (ValidatorSet validatorSet : validatorSets) {
38-
CaseValidationContextImpl validationContext = new CaseValidationContextImpl(validatorSet);
44+
if (currentValidationContext == null) {
45+
currentValidationContext = new CaseValidationContextImpl(validatorSet);
46+
47+
} else {
48+
currentValidationContext.setCurrentValidatorSet(validatorSet);
49+
}
3950

4051
for (Validator validator : validatorSet.getValidators()) {
41-
validator.validate(model, validationContext);
52+
validator.validate(model, currentValidationContext);
4253
}
4354

44-
allEntries.addAll(validationContext.getEntries());
55+
allEntries.addAll(currentValidationContext.getEntries());
4556
}
4657

4758
return allEntries;
4859
}
4960

61+
62+
5063
@Override
5164
public List<ValidatorSet> getValidatorSets() {
5265
return validatorSets;

modules/flowable-engine/src/test/java/org/flowable/engine/test/regression/FlowableTestCaseProcessValidator.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.flowable.bpmn.model.FlowElement;
2020
import org.flowable.bpmn.model.Process;
2121
import org.flowable.bpmn.model.ServiceTask;
22+
import org.flowable.validation.ProcessValidationContext;
2223
import org.flowable.validation.ProcessValidator;
2324
import org.flowable.validation.ValidationError;
2425
import org.flowable.validation.validator.ValidatorSet;
@@ -30,6 +31,11 @@ public class FlowableTestCaseProcessValidator implements ProcessValidator {
3031

3132
@Override
3233
public List<ValidationError> validate(BpmnModel bpmnModel) {
34+
return validate(bpmnModel, null);
35+
}
36+
37+
@Override
38+
public List<ValidationError> validate(BpmnModel bpmnModel, ProcessValidationContext validationContext) {
3339
List<ValidationError> errorList = new ArrayList<>();
3440
CustomParseValidator customParseValidator = new CustomParseValidator();
3541

modules/flowable-process-validation/src/main/java/org/flowable/validation/ProcessValidationContext.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,19 @@
1212
*/
1313
package org.flowable.validation;
1414

15+
import java.util.List;
16+
1517
import org.flowable.bpmn.model.BaseElement;
1618
import org.flowable.bpmn.model.FlowElement;
1719
import org.flowable.bpmn.model.Process;
20+
import org.flowable.validation.validator.ValidatorSet;
1821

1922
/**
2023
* @author Tijs Rademakers
2124
*/
2225
public interface ProcessValidationContext {
26+
27+
List<ValidationError> getEntries();
2328

2429
default ValidationError addError(String problem, String description) {
2530
return addError(problem, null, null, null, description, false);
@@ -98,5 +103,7 @@ default ValidationError addError(String problem, Process process, String id, Str
98103
}
99104

100105
ValidationError addEntry(ValidationError entry);
106+
107+
void setCurrentValidatorSet(ValidatorSet validatorSet);
101108

102109
}

modules/flowable-process-validation/src/main/java/org/flowable/validation/ProcessValidationContextImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*/
2323
public class ProcessValidationContextImpl implements ProcessValidationContext {
2424

25-
protected final ValidatorSet validatorSet;
25+
protected ValidatorSet validatorSet;
2626
protected final List<ValidationError> entries = new ArrayList<>();
2727

2828
public ProcessValidationContextImpl(ValidatorSet validatorSet) {
@@ -36,6 +36,12 @@ public ValidationError addEntry(ValidationError entry) {
3636
return entry;
3737
}
3838

39+
@Override
40+
public void setCurrentValidatorSet(ValidatorSet validatorSet) {
41+
this.validatorSet = validatorSet;
42+
}
43+
44+
@Override
3945
public List<ValidationError> getEntries() {
4046
return entries;
4147
}

modules/flowable-process-validation/src/main/java/org/flowable/validation/ProcessValidator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public interface ProcessValidator {
2828
* Validates the provided {@link BpmnModel} and returns a list of all {@link ValidationError} occurrences found.
2929
*/
3030
List<ValidationError> validate(BpmnModel bpmnModel);
31+
32+
/**
33+
* Validates the provided {@link BpmnModel} and returns a list of all {@link ValidationError} occurrences found.
34+
*/
35+
List<ValidationError> validate(BpmnModel bpmnModel, ProcessValidationContext validationContext);
3136

3237
/**
3338
* Returns the {@link ValidatorSet} instances for this process validator. Useful if some validation rules need to be disabled.

modules/flowable-process-validation/src/main/java/org/flowable/validation/ProcessValidatorImpl.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,27 @@ public class ProcessValidatorImpl implements ProcessValidator {
2828

2929
@Override
3030
public List<ValidationError> validate(BpmnModel bpmnModel) {
31+
return validate(bpmnModel, null);
32+
}
33+
34+
@Override
35+
public List<ValidationError> validate(BpmnModel bpmnModel, ProcessValidationContext validationContext) {
3136
List<ValidationError> allErrors = new ArrayList<>();
3237

38+
ProcessValidationContext currentValidationContext = validationContext;;
3339
for (ValidatorSet validatorSet : validatorSets) {
34-
ProcessValidationContextImpl validationContext = new ProcessValidationContextImpl(validatorSet);
40+
if (currentValidationContext == null) {
41+
currentValidationContext = new ProcessValidationContextImpl(validatorSet);
42+
43+
} else {
44+
currentValidationContext.setCurrentValidatorSet(validatorSet);
45+
}
3546

3647
for (Validator validator : validatorSet.getValidators()) {
37-
validator.validate(bpmnModel, validationContext);
48+
validator.validate(bpmnModel, currentValidationContext);
3849
}
3950

40-
allErrors.addAll(validationContext.getEntries());
51+
allErrors.addAll(currentValidationContext.getEntries());
4152
}
4253

4354
return allErrors;

modules/flowable5-test/src/test/java/org/activiti/engine/test/regression/ActivitiTestCaseProcessValidator.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.flowable.bpmn.model.FlowElement;
2020
import org.flowable.bpmn.model.Process;
2121
import org.flowable.bpmn.model.ServiceTask;
22+
import org.flowable.validation.ProcessValidationContext;
2223
import org.flowable.validation.ProcessValidator;
2324
import org.flowable.validation.ValidationError;
2425
import org.flowable.validation.validator.ValidatorSet;
@@ -30,6 +31,12 @@ public class ActivitiTestCaseProcessValidator implements ProcessValidator {
3031

3132
@Override
3233
public List<ValidationError> validate(BpmnModel bpmnModel) {
34+
return validate(bpmnModel, null);
35+
}
36+
37+
38+
@Override
39+
public List<ValidationError> validate(BpmnModel bpmnModel, ProcessValidationContext validationContext) {
3340
List<ValidationError> errorList = new ArrayList<ValidationError>();
3441
CustomParseValidator customParseValidator = new CustomParseValidator();
3542

@@ -47,6 +54,7 @@ public List<ValidationError> validate(BpmnModel bpmnModel) {
4754
return errorList;
4855
}
4956

57+
5058
@Override
5159
public List<ValidatorSet> getValidatorSets() {
5260
return null;

0 commit comments

Comments
 (0)