@Override public void validateXMLFor(Optional<Version> vespaVersion) throws IOException { Version modelVersion = vespaVersion.orElse(Vtag.currentVersion); ApplicationPackageXmlFilesValidator validator = ApplicationPackageXmlFilesValidator.create(appDir, modelVersion); validator.checkApplication(); validator.checkIncludedDirs(this); }
private void validateOptional(SchemaValidator validator, String file) throws IOException { if ( ! appDirs.file(file).exists()) return; validate(validator, file); }
private void validateRouting(Tuple2<File, String> directory) throws IOException { if ( ! directory.first.isDirectory()) return; validateRouting(validators.routingStandaloneXmlValidator(), directory); }
@SuppressWarnings("deprecation") public void checkApplication() throws IOException { validate(validators.servicesXmlValidator(), servicesFileName()); validateOptional(validators.hostsXmlValidator(), FilesApplicationPackage.HOSTS); validateOptional(validators.deploymentXmlValidator(), FilesApplicationPackage.DEPLOYMENT_FILE.getName()); validateOptional(validators.validationOverridesXmlValidator(), FilesApplicationPackage.VALIDATION_OVERRIDES.getName()); if (appDirs.searchdefinitions().exists()) { if (FilesApplicationPackage.getSearchDefinitionFiles(appDirs.root()).isEmpty()) { throw new IllegalArgumentException("Application package in " + appDirs.root() + " must contain at least one search definition (.sd) file when directory searchdefinitions/ exists."); } } validateRouting(appDirs.routingtables); }
public static ApplicationPackageXmlFilesValidator create(File appDir, Version vespaVersion) { return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), vespaVersion); }
private void validateXml(ModelContext modelContext, boolean ignoreValidationErrors) { if (modelContext.appDir().isPresent()) { ApplicationPackageXmlFilesValidator validator = ApplicationPackageXmlFilesValidator.create(modelContext.appDir().get(), modelContext.modelVespaVersion()); try { validator.checkApplication(); validator.checkIncludedDirs(modelContext.applicationPackage()); } catch (IllegalArgumentException e) { rethrowUnlessIgnoreErrors(e, ignoreValidationErrors); } catch (Exception e) { throw new RuntimeException(e); } } else { validateXML(modelContext.applicationPackage(), ignoreValidationErrors); } }
private void validateRouting(SchemaValidator validator, Tuple2<File, String> directory) throws IOException { File dir = directory.first; if ( ! dir.isDirectory()) return; String directoryName = directory.second; for (File f : dir.listFiles(xmlFilter)) { if (f.isDirectory()) validateRouting(validator, new Tuple2<>(f, directoryName + File.separator + f.getName())); else validator.validate(f, directoryName + File.separator + f.getName()); } }