summaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2016-09-28 14:21:39 +0200
committerHarald Musum <musum@yahoo-inc.com>2016-09-28 14:21:39 +0200
commit54eae6ceba4781d5f5c4c224c4e0274de48113c9 (patch)
tree3239c0647cf4b10fcdaf20f3cabd3869db25f624 /config-application-package
parent47de13f38ebb7ca18ff7dd91f34437254a87c228 (diff)
Validate deployment.xml against schema
VESPA-3348
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/ApplicationPackageXmlFilesValidator.java8
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidator.java10
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;