validator.setErrorHandler(handler); String encodedResource; if (theContext.getResourceAsStringEncoding() == EncodingEnum.XML) { encodedResource = theContext.getResourceAsString(); } else { encodedResource = theContext.getFhirContext().newXmlParser().encodeResourceToString((IBaseResource) theContext.getResource()); message.setMessage(e.getLocalizedMessage()); message.setSeverity(ResultSeverityEnum.FATAL); theContext.addValidationMessage(message); } catch (SAXException e) {
public static IValidationContext<IBaseResource> subContext(final IValidationContext<IBaseResource> theCtx, final IBaseResource theResource) { return new ValidationContext<IBaseResource>(theCtx.getFhirContext(), theResource, new IEncoder() { @Override public String encode() { return theCtx.getFhirContext().newXmlParser().encodeResourceToString(theResource); } @Override public EncodingEnum getEncoding() { return EncodingEnum.XML; } }, theCtx.getMessages()); } }
/** * Validates a resource instance returning a {@link ca.uhn.fhir.validation.ValidationResult} which contains the results. * * @param theResource * the resource to validate * @return the results of validation * @since 1.1 */ public ValidationResult validateWithResult(String theResource) { Validate.notNull(theResource, "theResource must not be null"); applyDefaultValidators(); IValidationContext<IBaseResource> ctx = ValidationContext.forText(myContext, theResource); for (IValidatorModule next : myValidators) { next.validateResource(ctx); } return ctx.toResult(); }
@Override protected List<ValidationMessage> validate(IValidationContext<?> theCtx) { return validate(theCtx.getFhirContext(), theCtx.getResourceAsString(), theCtx.getResourceAsStringEncoding()); }
private ISchematronResource getSchematron(IValidationContext<IBaseResource> theCtx) { Class<? extends IBaseResource> resource = theCtx.getResource().getClass(); Class<? extends IBaseResource> baseResourceClass = theCtx.getFhirContext().getResourceDefinition(resource).getBaseDefinition().getImplementingClass(); return getSchematronAndCache(theCtx, baseResourceClass); }
private void addIssue(SAXParseException theException, ResultSeverityEnum theSeverity) { SingleValidationMessage message = new SingleValidationMessage(); message.setLocationLine(theException.getLineNumber()); message.setLocationCol(theException.getColumnNumber()); message.setMessage(theException.getLocalizedMessage()); message.setSeverity(theSeverity); myContext.addValidationMessage(message); }
@Override public String encode() { return theCtx.getFhirContext().newXmlParser().encodeResourceToString(theResource); }
@Override protected List<ValidationMessage> validate(IValidationContext<?> theCtx) { return validate(theCtx.getFhirContext(), theCtx.getResourceAsString(), theCtx.getResourceAsStringEncoding()); }
@Override protected List<ValidationMessage> validate(IValidationContext<?> theCtx) { Object resource = theCtx.getResource(); if (!(theCtx.getResource() instanceof IBaseResource)) { ourLog.debug("Not validating object of type {}", theCtx.getResource().getClass()); return Collections.emptyList(); } if (resource instanceof QuestionnaireResponse) { return doValidate(theCtx, (QuestionnaireResponse) resource); } RuntimeResourceDefinition def = theCtx.getFhirContext().getResourceDefinition((IBaseResource) resource); if ("QuestionnaireResponse".equals(def.getName()) == false) { return Collections.emptyList(); } /* * If we have a non-RI structure, convert it */ IParser p = theCtx.getFhirContext().newJsonParser(); String string = p.encodeResourceToString((IBaseResource) resource); QuestionnaireResponse qa = p.parseResource(QuestionnaireResponse.class, string); return doValidate(theCtx, qa); }
private void doValidate(IValidationContext<?> theCtx) { List<ValidationMessage> messages = validate(theCtx); for (ValidationMessage riMessage : messages) { SingleValidationMessage hapiMessage = new SingleValidationMessage(); if (riMessage.getCol() != -1) { hapiMessage.setLocationCol(riMessage.getCol()); } if (riMessage.getLine() != -1) { hapiMessage.setLocationLine(riMessage.getLine()); } hapiMessage.setLocationString(riMessage.getLocation()); hapiMessage.setMessage(riMessage.getMessage()); if (riMessage.getLevel() != null) { hapiMessage.setSeverity(ResultSeverityEnum.fromCode(riMessage.getLevel().toCode())); } theCtx.addValidationMessage(hapiMessage); } }
private boolean loadReferences(IBaseResource theResource, WorkerContext theWorkerCtx, IValidationContext<?> theValCtx, ArrayList<ValidationMessage> theMessages) { List<ResourceReferenceInfo> refs = theValCtx.getFhirContext().newTerser().getAllResourceReferences(theResource);
@Override public void validateResource(IValidationContext<IBaseResource> theCtx) { if (theCtx.getResource() instanceof IBaseBundle) { IBaseBundle bundle = (IBaseBundle) theCtx.getResource(); List<IBaseResource> subResources = BundleUtil.toListOfResources(myCtx, bundle); for (IBaseResource nextSubResource : subResources) { if (theCtx.getResourceAsStringEncoding() == EncodingEnum.XML) { resourceAsString = theCtx.getResourceAsString(); } else { resourceAsString = theCtx.getFhirContext().newXmlParser().encodeResourceToString(theCtx.getResource()); IErrorList errors = SchematronHelper.convertToErrorList(results, theCtx.getFhirContext().getResourceDefinition(theCtx.getResource()).getBaseDefinition().getName()); message.setLocationString(next.getErrorLocation().getAsString()); message.setSeverity(severity); theCtx.addValidationMessage(message);
@Override protected List<ValidationMessage> validate(IValidationContext<?> theCtx) { return validate(theCtx.getFhirContext(), theCtx.getResourceAsString(), theCtx.getResourceAsStringEncoding()); }
private ISchematronResource getSchematronAndCache(IValidationContext<IBaseResource> theCtx, Class<? extends IBaseResource> theClass) { synchronized (myClassToSchematron) { ISchematronResource retVal = myClassToSchematron.get(theClass); if (retVal != null) { return retVal; } String pathToBase = myCtx.getVersion().getPathToSchemaDefinitions() + '/' + theCtx.getFhirContext().getResourceDefinition(theCtx.getResource()).getBaseDefinition().getName().toLowerCase() + ".sch"; try (InputStream baseIs = FhirValidator.class.getResourceAsStream(pathToBase)) { if (baseIs == null) { throw new InternalErrorException("Failed to load schematron for resource '" + theCtx.getFhirContext().getResourceDefinition(theCtx.getResource()).getBaseDefinition().getName() + "'. " + SchemaBaseValidator.RESOURCES_JAR_NOTE); } } catch (IOException e) { ourLog.error("Failed to close stream", e); } retVal = SchematronResourceSCH.fromClassPath(pathToBase); myClassToSchematron.put(theClass, retVal); return retVal; } } }
private void doValidate(IValidationContext<?> theCtx) { List<ValidationMessage> messages = validate(theCtx); for (ValidationMessage riMessage : messages) { SingleValidationMessage hapiMessage = new SingleValidationMessage(); if (riMessage.getCol() != -1) { hapiMessage.setLocationCol(riMessage.getCol()); } if (riMessage.getLine() != -1) { hapiMessage.setLocationLine(riMessage.getLine()); } hapiMessage.setLocationString(riMessage.getLocation()); hapiMessage.setMessage(riMessage.getMessage()); if (riMessage.getLevel() != null) { hapiMessage.setSeverity(ResultSeverityEnum.fromCode(riMessage.getLevel().toCode())); } theCtx.addValidationMessage(hapiMessage); } }
@Override public String encode() { return theCtx.getFhirContext().newXmlParser().encodeResourceToString(theResource); }
public static IValidationContext<IBaseResource> subContext(final IValidationContext<IBaseResource> theCtx, final IBaseResource theResource) { return new ValidationContext<IBaseResource>(theCtx.getFhirContext(), theResource, new IEncoder() { @Override public String encode() { return theCtx.getFhirContext().newXmlParser().encodeResourceToString(theResource); } @Override public EncodingEnum getEncoding() { return EncodingEnum.XML; } }, theCtx.getMessages()); } }
/** * Validates a resource instance returning a {@link ca.uhn.fhir.validation.ValidationResult} which contains the results. * * @param theResource * the resource to validate * @return the results of validation * @since 0.7 */ public ValidationResult validateWithResult(IBaseResource theResource) { Validate.notNull(theResource, "theResource must not be null"); applyDefaultValidators(); IValidationContext<IBaseResource> ctx = ValidationContext.forResource(myContext, theResource); for (IValidatorModule next : myValidators) { next.validateResource(ctx); } return ctx.toResult(); }
validator.setErrorHandler(handler); String encodedResource; if (theContext.getResourceAsStringEncoding() == EncodingEnum.XML) { encodedResource = theContext.getResourceAsString(); } else { encodedResource = theContext.getFhirContext().newXmlParser().encodeResourceToString((IBaseResource) theContext.getResource()); message.setMessage(e.getLocalizedMessage()); message.setSeverity(ResultSeverityEnum.FATAL); theContext.addValidationMessage(message); } catch (SAXException e) {
@Override protected List<ValidationMessage> validate(IValidationContext<?> theCtx) { return validate(theCtx.getFhirContext(), theCtx.getResourceAsString(), theCtx.getResourceAsStringEncoding()); }