diff options
author | Harald Musum <musum@yahoo-inc.com> | 2016-09-28 14:21:39 +0200 |
---|---|---|
committer | Harald Musum <musum@yahoo-inc.com> | 2016-09-28 14:21:39 +0200 |
commit | 54eae6ceba4781d5f5c4c224c4e0274de48113c9 (patch) | |
tree | 3239c0647cf4b10fcdaf20f3cabd3869db25f624 /config-application-package/src/main/java/com/yahoo/config/model/application/provider | |
parent | 47de13f38ebb7ca18ff7dd91f34437254a87c228 (diff) |
Validate deployment.xml against schema
VESPA-3348
Diffstat (limited to 'config-application-package/src/main/java/com/yahoo/config/model/application/provider')
2 files changed, 17 insertions, 1 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java index 81cb1f83b6e..26c57483a5c 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java @@ -55,6 +55,7 @@ public class ApplicationPackageXmlFilesValidator { public void checkApplication() throws IOException { validateHostsFile(SchemaValidator.hostsXmlSchemaName); validateServicesFile(SchemaValidator.servicesXmlSchemaName); + validateDeploymentFile(SchemaValidator.deploymentXmlSchemaName); if (appDirs.searchdefinitions().exists()) { if (FilesApplicationPackage.getSearchDefinitionFiles(appDirs.root()).isEmpty()) { @@ -81,7 +82,6 @@ public class ApplicationPackageXmlFilesValidator { if (appDirs.file(FilesApplicationPackage.HOSTS).exists()) { validate(hostsXmlSchemaName, FilesApplicationPackage.HOSTS); } - } private void validateServicesFile(String servicesXmlSchemaName) throws IOException { @@ -89,6 +89,12 @@ public class ApplicationPackageXmlFilesValidator { validate(servicesXmlSchemaName, servicesFileName()); } + private void validateDeploymentFile(String deploymentXmlSchemaName) throws IOException { + if (appDirs.file(FilesApplicationPackage.DEPLOYMENT_FILE.getName()).exists()) { + validate(deploymentXmlSchemaName, FilesApplicationPackage.DEPLOYMENT_FILE.getName()); + } + } + private void validate(String schemaName, String xmlFileName) throws IOException { createSchemaValidator(schemaName, vespaVersion).validate(appDirs.file(xmlFileName)); } diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java index a28a17dc831..698fa8fdce7 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java @@ -43,6 +43,7 @@ public class SchemaValidator { public static final String schemaDirBase = System.getProperty("java.io.tmpdir", File.separator + "tmp" + File.separator + "vespa"); static final String servicesXmlSchemaName = "services.rnc"; static final String hostsXmlSchemaName = "hosts.rnc"; + static final String deploymentXmlSchemaName = "deployment.rnc"; private final CustomErrorHandler errorHandler = new CustomErrorHandler(); private final ValidationDriver driver; private DeployLogger deployLogger; @@ -91,6 +92,15 @@ public class SchemaValidator { return new SchemaValidator(hostsXmlSchemaName); } + /** + * Create a validator for deployment.xml for tests + * + * @throws IOException if it is not possible to read schema files + */ + public static SchemaValidator createTestValidatorDeployment() throws IOException { + return new SchemaValidator(deploymentXmlSchemaName); + } + private class CustomErrorHandler implements ErrorHandler { volatile String fileName; |