rework validation policy management in standalone validator

This commit is contained in:
Grahame Grieve 2024-06-06 08:28:34 +10:00
parent 95ec2b00a4
commit 537f758d82
6 changed files with 15 additions and 6 deletions

View File

@ -887,6 +887,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
} }
validator.setJurisdiction(jurisdiction); validator.setJurisdiction(jurisdiction);
validator.setLogProgress(true); validator.setLogProgress(true);
validator.setPolicyAdvisor(policyAdvisor);
return validator; return validator;
} }
@ -1259,7 +1260,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
public List<StructureDefinition> getImpliedProfilesForResource(IResourceValidator validator, Object appContext, public List<StructureDefinition> getImpliedProfilesForResource(IResourceValidator validator, Object appContext,
String stackPath, ElementDefinition definition, StructureDefinition structure, Element resource, boolean valid, String stackPath, ElementDefinition definition, StructureDefinition structure, Element resource, boolean valid,
IMessagingServices msgServices, List<ValidationMessage> messages) { IMessagingServices msgServices, List<ValidationMessage> messages) {
return new BasePolicyAdvisorForFullValidation().getImpliedProfilesForResource(validator, appContext, stackPath, return new BasePolicyAdvisorForFullValidation(ReferenceValidationPolicy.CHECK_VALID).getImpliedProfilesForResource(validator, appContext, stackPath,
definition, structure, resource, valid, msgServices, messages); definition, structure, resource, valid, msgServices, messages);
} }

View File

@ -58,7 +58,7 @@ public class StandAloneValidatorFetcher extends BasePolicyAdvisorForFullValidati
private Map<String, NpmPackage> pidMap = new HashMap<>(); private Map<String, NpmPackage> pidMap = new HashMap<>();
public StandAloneValidatorFetcher(FilesystemPackageCacheManager pcm, IWorkerContext context, IPackageInstaller installer) { public StandAloneValidatorFetcher(FilesystemPackageCacheManager pcm, IWorkerContext context, IPackageInstaller installer) {
super(); super(ReferenceValidationPolicy.IGNORE);
this.pcm = pcm; this.pcm = pcm;
this.context = context; this.context = context;
this.installer = installer; this.installer = installer;
@ -74,7 +74,7 @@ public class StandAloneValidatorFetcher extends BasePolicyAdvisorForFullValidati
Object appContext, Object appContext,
String path, String path,
String url) { String url) {
return ReferenceValidationPolicy.CHECK_TYPE_IF_EXISTS; return ReferenceValidationPolicy.IGNORE;
} }
@Override @Override

View File

@ -534,6 +534,7 @@ public class ValidationService {
StandAloneValidatorFetcher fetcher = new StandAloneValidatorFetcher(validationEngine.getPcm(), validationEngine.getContext(), validationEngine); StandAloneValidatorFetcher fetcher = new StandAloneValidatorFetcher(validationEngine.getPcm(), validationEngine.getContext(), validationEngine);
validationEngine.setFetcher(fetcher); validationEngine.setFetcher(fetcher);
validationEngine.getContext().setLocator(fetcher); validationEngine.getContext().setLocator(fetcher);
validationEngine.setPolicyAdvisor(fetcher);
} }
validationEngine.getBundleValidationRules().addAll(cliContext.getBundleValidationRules()); validationEngine.getBundleValidationRules().addAll(cliContext.getBundleValidationRules());
validationEngine.setJurisdiction(CodeSystemUtilities.readCoding(cliContext.getJurisdiction())); validationEngine.setJurisdiction(CodeSystemUtilities.readCoding(cliContext.getJurisdiction()));

View File

@ -28,9 +28,16 @@ import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
public class BasePolicyAdvisorForFullValidation implements IValidationPolicyAdvisor { public class BasePolicyAdvisorForFullValidation implements IValidationPolicyAdvisor {
private ReferenceValidationPolicy refpol = ReferenceValidationPolicy.CHECK_VALID;
public BasePolicyAdvisorForFullValidation(ReferenceValidationPolicy refpol) {
super();
this.refpol = refpol;
}
@Override @Override
public ReferenceValidationPolicy policyForReference(IResourceValidator validator, Object appContext, String path, String url) { public ReferenceValidationPolicy policyForReference(IResourceValidator validator, Object appContext, String path, String url) {
return ReferenceValidationPolicy.CHECK_TYPE_IF_EXISTS; return refpol;
} }
@Override @Override

View File

@ -596,7 +596,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
private boolean noBindingMsgSuppressed; private boolean noBindingMsgSuppressed;
private Map<String, Element> fetchCache = new HashMap<>(); private Map<String, Element> fetchCache = new HashMap<>();
private HashMap<Element, ResourceValidationTracker> resourceTracker = new HashMap<>(); private HashMap<Element, ResourceValidationTracker> resourceTracker = new HashMap<>();
private IValidationPolicyAdvisor policyAdvisor = new BasePolicyAdvisorForFullValidation(); private IValidationPolicyAdvisor policyAdvisor = new BasePolicyAdvisorForFullValidation(ReferenceValidationPolicy.CHECK_VALID);
long time = 0; long time = 0;
long start = 0; long start = 0;
long lastlog = 0; long lastlog = 0;

View File

@ -894,7 +894,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
public List<StructureDefinition> getImpliedProfilesForResource(IResourceValidator validator, Object appContext, public List<StructureDefinition> getImpliedProfilesForResource(IResourceValidator validator, Object appContext,
String stackPath, ElementDefinition definition, StructureDefinition structure, Element resource, boolean valid, String stackPath, ElementDefinition definition, StructureDefinition structure, Element resource, boolean valid,
IMessagingServices msgServices, List<ValidationMessage> messages) { IMessagingServices msgServices, List<ValidationMessage> messages) {
return new BasePolicyAdvisorForFullValidation().getImpliedProfilesForResource(validator, appContext, stackPath, return new BasePolicyAdvisorForFullValidation(ReferenceValidationPolicy.CHECK_VALID).getImpliedProfilesForResource(validator, appContext, stackPath,
definition, structure, resource, valid, msgServices, messages); definition, structure, resource, valid, msgServices, messages);
} }
} }