/** * Validates a resource instance, throwing a {@link ValidationFailureException} if the validation fails * * @param theResource * The resource to validate * @throws ValidationFailureException * If the validation fails * @deprecated use {@link #validateWithResult(IBaseResource)} instead */ @Deprecated public void validate(IResource theResource) throws ValidationFailureException { applyDefaultValidators(); ValidationResult validationResult = validateWithResult(theResource); if (!validationResult.isSuccessful()) { throw new ValidationFailureException(myContext, validationResult.toOperationOutcome()); } }
for (SingleValidationMessage next : results.getMessages()) { count++; b.append(App.LINESEP); if (results.isSuccessful()) { ourLog.info("Validation successful!"); } else {
@Override public boolean outgoingResponse(RequestDetails theRequestDetails, IBaseResource theResponseObject) { if (myAddValidationResultsToResponseOperationOutcome) { if (theResponseObject instanceof IBaseOperationOutcome) { IBaseOperationOutcome oo = (IBaseOperationOutcome) theResponseObject; if (theRequestDetails != null) { ValidationResult validationResult = (ValidationResult) theRequestDetails.getUserData().get(RequestValidatingInterceptor.REQUEST_VALIDATION_RESULT); if (validationResult != null) { validationResult.populateOperationOutcome(oo); } } } } return true; }
System.out.println(result.isSuccessful()); // false for (SingleValidationMessage next : result.getMessages()) { System.out.println(" Next issue " + next.getSeverity() + " - " + next.getLocationString() + " - " + next.getMessage()); OperationOutcome oo = (OperationOutcome) result.toOperationOutcome();
if (result.isSuccessful() == false) { ourLog.info("FAILED to validate example {} - {}", nextEntry.getName(), result.toString()); continue;
/** * @deprecated Use {@link #toOperationOutcome()} instead since this method returns a view. * {@link #toOperationOutcome()} is identical to this method, but has a more suitable name so this method * will be removed at some point. */ @Deprecated public IBaseOperationOutcome getOperationOutcome() { return toOperationOutcome(); }
for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myAddResponseIssueHeaderOnSeverity) { addResponseIssueHeader(theRequestDetails, next); for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myFailOnSeverity) { postProcessResultOnFailure(theRequestDetails, validationResult); for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myAddResponseOutcomeHeaderOnSeverity) { outcome = validationResult.toOperationOutcome(); break;
@SuppressWarnings("unused") private static void validateFiles() throws Exception { // START SNIPPET: validateFiles FhirContext ctx = FhirContext.forDstu3(); // Create a validator and configure it FhirValidator validator = ctx.newValidator(); validator.setValidateAgainstStandardSchema(true); validator.setValidateAgainstStandardSchematron(true); // Get a list of files in a given directory String[] fileList = new File("/home/some/dir").list(new WildcardFileFilter("*.txt")); for (String nextFile : fileList) { // For each file, load the contents into a string String nextFileContents = IOUtils.toString(new FileReader(nextFile)); // Parse that string (this example assumes JSON encoding) IBaseResource resource = ctx.newJsonParser().parseResource(nextFileContents); // Apply the validation. This will throw an exception on the first // validation failure ValidationResult result = validator.validateWithResult(resource); if (result.isSuccessful() == false) { throw new Exception("We failed!"); } } // END SNIPPET: validateFiles }
public void validationIntro() { // START SNIPPET: validationIntro FhirContext ctx = FhirContext.forDstu3(); // Ask the context for a validator FhirValidator validator = ctx.newValidator(); // Create some modules and register them IValidatorModule module1 = new SchemaBaseValidator(ctx); validator.registerValidatorModule(module1); IValidatorModule module2 = new SchematronBaseValidator(ctx); validator.registerValidatorModule(module2); // Pass a resource in to be validated. The resource can // be an IBaseResource instance, or can be a raw String // containing a serialized resource as text. Patient resource = new Patient(); ValidationResult result = validator.validateWithResult(resource); String resourceText = "<Patient.....>"; ValidationResult result2 = validator.validateWithResult(resourceText); // The result object now contains the validation results for (SingleValidationMessage next : result.getMessages()) { System.out.println(next.getLocationString() + " " + next.getMessage()); } // END SNIPPET: validationIntro }
if (result.isSuccessful()) { List<SingleValidationMessage> messages = result.getMessages(); for (SingleValidationMessage next : messages) { System.out.println("Message:"); OperationOutcome oo = (OperationOutcome) result.toOperationOutcome(); String results = ctx.newXmlParser().setPrettyPrint(true).encodeResourceToString(oo); System.out.println(results);
/** * Fail the request by throwing an {@link UnprocessableEntityException} as a result of a validation failure. * Subclasses may change this behaviour by providing alternate behaviour. */ protected void fail(RequestDetails theRequestDetails, ValidationResult theValidationResult) { throw new UnprocessableEntityException(theRequestDetails.getServer().getFhirContext(), theValidationResult.toOperationOutcome()); }
for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myAddResponseIssueHeaderOnSeverity) { addResponseIssueHeader(theRequestDetails, next); for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myFailOnSeverity) { postProcessResultOnFailure(theRequestDetails, validationResult); for (SingleValidationMessage next : validationResult.getMessages()) { if (next.getSeverity().ordinal() >= myAddResponseOutcomeHeaderOnSeverity) { outcome = validationResult.toOperationOutcome(); break;
if (result.isSuccessful() == false) { ourLog.info("FAILED to validate example {} - {}", nextEntry.getName(), result.toString()); continue;
/** * Runs validation on a given resource, logs the results, and returns the response. * @param theResource the resource to be validated * @return ValidationResult */ public ValidationResult validate(IBaseResource theResource) { ValidationResult result = validator.validateWithResult(theResource); // Do we have any errors or fatal errors? // Show the issues for (SingleValidationMessage next : result.getMessages()) { switch (next.getSeverity()) { case ERROR: logger.error(next.getLocationString() + " - " + next.getMessage()); break; case INFORMATION: logger.info(next.getLocationString() + " - " + next.getMessage()); break; case WARNING: logger.warn(next.getLocationString() + " - " + next.getMessage()); break; case FATAL: logger.error(next.getLocationString() + " - " + next.getMessage()); break; default: logger.debug(next.getLocationString() + " - " + next.getMessage()); } } return result; } }
if (result.isSuccessful()) { MethodOutcome retVal = new MethodOutcome(); retVal.setOperationOutcome(result.toOperationOutcome()); return retVal; } else { throw new PreconditionFailedException("Validation failed", result.toOperationOutcome());
@Override public void audit(AuditContext auditContext, AuditMessage... auditMessages) { for (AuditMessage message : auditMessages) { AuditEvent auditEventResource = translator.translate(message); log.debug(fhirContext.newXmlParser().setPrettyPrint(true).encodeResourceToString(auditEventResource)); if (needValidation) { FhirValidator validator = fhirContext.newValidator(); // FhirInstanceValidator instanceValidator = new FhirInstanceValidator(); // validator.registerValidatorModule(instanceValidator); ValidationResult result = validator.validateWithResult(auditEventResource); if (!result.isSuccessful()) { StringBuilder sb = new StringBuilder("Validation of FHIR AuditEvent failed:"); for (SingleValidationMessage error : result.getMessages()) { sb.append('\n').append(error.toString()); } throw new ValidationException(sb.toString()); } } messages.add(auditEventResource); } }
IBaseOperationOutcome oo = result.toOperationOutcome(); ourLog.info("Result:\n{}", xmlParser.setPrettyPrint(true).encodeResourceToString(oo));
/** * Create an OperationOutcome resource which contains all of the messages found as a result of this validation */ public IBaseOperationOutcome toOperationOutcome() { IBaseOperationOutcome oo = (IBaseOperationOutcome) myCtx.getResourceDefinition("OperationOutcome").newInstance(); populateOperationOutcome(oo); return oo; }
if (result.isSuccessful()) { MethodOutcome retVal = new MethodOutcome(); retVal.setOperationOutcome(result.toOperationOutcome()); return retVal; } else { throw new PreconditionFailedException("Validation failed", result.toOperationOutcome());
IBaseResource resource = ctx.newJsonParser().parseResource(fhirJson.toString()); ValidationResult result = validator.validateWithResult(resource); if (result.isSuccessful() == false) { for (SingleValidationMessage message : result.getMessages()) { System.out.println(message.getSeverity().toString() + ": " + message.getMessage()); assertTrue(result.isSuccessful());