diff options
author | Harald Musum <musum@oath.com> | 2018-09-20 12:36:51 +0200 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-09-20 12:36:51 +0200 |
commit | d3ce5363de4109870d6993b21e307d6999d01ba1 (patch) | |
tree | 7bb90bc5b3b18861002103f9264931cdb3199b44 | |
parent | d06c943b265e1e635f6b2a61358778db29f787c3 (diff) |
Minor schema validator cleanup
7 files changed, 18 insertions, 31 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 8e9c5c0b509..74ade9d8e14 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 @@ -26,9 +26,9 @@ public class ApplicationPackageXmlFilesValidator { private static final FilenameFilter xmlFilter = (dir, name) -> name.endsWith(".xml"); - public ApplicationPackageXmlFilesValidator(AppSubDirs appDirs, Version vespaVersion) { + private ApplicationPackageXmlFilesValidator(AppSubDirs appDirs, Version vespaVersion) { this.appDirs = appDirs; - this.validators = new SchemaValidators(vespaVersion, new BaseDeployLogger()); + this.validators = new SchemaValidators(vespaVersion); } public static ApplicationPackageXmlFilesValidator create(File appDir, Version vespaVersion) { 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 50268fc1e08..16469bb13ae 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 @@ -82,15 +82,15 @@ public class SchemaValidator { private class CustomErrorHandler implements ErrorHandler { volatile String fileName; - public void warning(SAXParseException e) throws SAXException { + public void warning(SAXParseException e) { deployLogger.log(Level.WARNING, message(e)); } - public void error(SAXParseException e) throws SAXException { + public void error(SAXParseException e) { throw new IllegalArgumentException(message(e)); } - public void fatalError(SAXParseException e) throws SAXException { + public void fatalError(SAXParseException e) { throw new IllegalArgumentException(message(e)); } diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java index 783f7361ad5..a28f771c37b 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SchemaValidators.java @@ -2,7 +2,6 @@ package com.yahoo.config.model.application.provider; import com.yahoo.component.Version; -import com.yahoo.config.application.api.DeployLogger; import com.yahoo.io.IOUtils; import com.yahoo.log.LogLevel; import org.osgi.framework.Bundle; @@ -40,8 +39,6 @@ public class SchemaValidators { private static final String routingStandaloneXmlSchemaName = "routing-standalone.rnc"; - private final DeployLogger deployLogger; - private final SchemaValidator servicesXmlValidator; private final SchemaValidator hostsXmlValidator; private final SchemaValidator deploymentXmlValidator; @@ -54,8 +51,7 @@ public class SchemaValidators { * * @param vespaVersion the version of Vespa we should validate against */ - public SchemaValidators(Version vespaVersion, DeployLogger logger) { - this.deployLogger = logger; + public SchemaValidators(Version vespaVersion) { File schemaDir = null; try { schemaDir = saveSchemasFromJar(new File(SchemaValidators.schemaDirBase), vespaVersion); @@ -75,15 +71,6 @@ public class SchemaValidators { } } - /** - * Initializes the validator by using the given file as schema file - * - * @param vespaVersion the version of Vespa we should validate against - */ - public SchemaValidators(Version vespaVersion) { - this(vespaVersion, new BaseDeployLogger()); - } - public SchemaValidator servicesXmlValidator() { return servicesXmlValidator; } @@ -104,7 +91,7 @@ public class SchemaValidators { return containerIncludeXmlValidator; } - public SchemaValidator routingStandaloneXmlValidator() { + SchemaValidator routingStandaloneXmlValidator() { return routingStandaloneXmlValidator; } @@ -114,22 +101,20 @@ public class SchemaValidators { * @return the directory the schema files are stored in * @throws IOException if it is not possible to read schema files */ - File saveSchemasFromJar(File tmpBase, Version vespaVersion) throws IOException { + private File saveSchemasFromJar(File tmpBase, Version vespaVersion) throws IOException { final Class<? extends SchemaValidators> schemaValidatorClass = this.getClass(); final ClassLoader classLoader = schemaValidatorClass.getClassLoader(); Enumeration<URL> uris = classLoader.getResources("schema"); if (uris == null) return null; File tmpDir = java.nio.file.Files.createTempDirectory(tmpBase.toPath(), "vespa").toFile(); - log.log(LogLevel.DEBUG, "Will save all XML schemas to " + tmpDir); + log.log(LogLevel.DEBUG, "Will save all XML schemas found in jar to " + tmpDir); while (uris.hasMoreElements()) { URL u = uris.nextElement(); log.log(LogLevel.DEBUG, "uri for resource 'schema'=" + u.toString()); if ("jar".equals(u.getProtocol())) { JarURLConnection jarConnection = (JarURLConnection) u.openConnection(); JarFile jarFile = jarConnection.getJarFile(); - for (Enumeration<JarEntry> entries = jarFile.entries(); - entries.hasMoreElements(); ) { - + for (Enumeration<JarEntry> entries = jarFile.entries(); entries.hasMoreElements(); ) { JarEntry je = entries.nextElement(); if (je.getName().startsWith("schema/") && je.getName().endsWith(".rnc")) { writeContentsToFile(tmpDir, je.getName(), jarFile.getInputStream(je)); @@ -168,7 +153,6 @@ public class SchemaValidators { return tmpDir; } - // TODO: This only copies schema for services.xml. Why? private static void copySchemas(File from, File to) throws IOException { // TODO: only copy .rnc files. if (! from.exists()) throw new IOException("Could not find schema source directory '" + from + "'"); @@ -187,7 +171,7 @@ public class SchemaValidators { private SchemaValidator createValidator(File schemaDir, String schemaFile) { try { File file = new File(schemaDir + File.separator + "schema" + File.separator + schemaFile); - return new SchemaValidator(file, deployLogger); + return new SchemaValidator(file, new BaseDeployLogger()); } catch (SAXException e) { throw new RuntimeException("Invalid schema '" + schemaFile + "'", e); } catch (IOException e) { diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java index 9db254bc742..1284d315058 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/SimpleApplicationValidator.java @@ -14,6 +14,6 @@ import java.io.Reader; public class SimpleApplicationValidator { public static void checkServices(Reader reader, Version version) throws IOException { - new SchemaValidators(version, new BaseDeployLogger()).servicesXmlValidator().validate(reader); + new SchemaValidators(version).servicesXmlValidator().validate(reader); } } diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java index b538468d0bc..e0047aba2db 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java @@ -9,6 +9,7 @@ import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.model.application.provider.SchemaValidators; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.builder.xml.ConfigModelBuilder; +import com.yahoo.vespa.config.VespaVersion; import com.yahoo.vespa.model.VespaModel; import org.xml.sax.SAXException; @@ -103,7 +104,7 @@ public class TestDriver { if (!validate) { return; } - SchemaValidators schemaValidators = new SchemaValidators(new Version(6), new BaseDeployLogger()); + SchemaValidators schemaValidators = new SchemaValidators(new Version(VespaVersion.major)); if (appPkg.getHosts() != null) { schemaValidators.hostsXmlValidator().validate(appPkg.getHosts()); } diff --git a/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java b/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java index fda230e22ab..5c4b51ca3fa 100644 --- a/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/application/provider/SchemaValidatorTest.java @@ -2,6 +2,7 @@ package com.yahoo.config.model.application.provider; import com.yahoo.component.Version; +import com.yahoo.vespa.config.VespaVersion; import org.junit.Test; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -65,6 +66,6 @@ public class SchemaValidatorTest { } private SchemaValidator createValidator() throws IOException { - return new SchemaValidators(new Version(6)).servicesXmlValidator(); + return new SchemaValidators(new Version(VespaVersion.major)).servicesXmlValidator(); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java index 3c9618ceccd..8147d2e00ca 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java @@ -10,6 +10,7 @@ import com.yahoo.config.model.api.ValidationParameters.FailOnIncompatibleChange; import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors; import com.yahoo.config.model.application.provider.*; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.vespa.config.VespaVersion; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.application.validation.Validation; @@ -50,7 +51,7 @@ public class VespaModelCreatorWithFilePkg { public void validate() throws IOException { ApplicationPackageXmlFilesValidator validator = - ApplicationPackageXmlFilesValidator.create(applicationPkg.getAppDir(), new Version(6)); + ApplicationPackageXmlFilesValidator.create(applicationPkg.getAppDir(), new Version(VespaVersion.major)); validator.checkApplication(); validator.checkIncludedDirs(applicationPkg); } |