diff options
7 files changed, 43 insertions, 31 deletions
diff --git a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java index 1762a4b9884..fe9225cd7a6 100644 --- a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java +++ b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java @@ -42,7 +42,7 @@ public class ApplicationPreprocessor { new Zone(environment.orElse(Environment.defaultEnvironment()), region.orElse(RegionName.defaultName())), (a, b) -> { }, logger); - preprocessed.validateXML(logger); + preprocessed.validateXML(); } 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 393bd1c2de7..81cb1f83b6e 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 @@ -7,12 +7,10 @@ import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.provision.Version; import com.yahoo.path.Path; import com.yahoo.io.reader.NamedReader; -import com.yahoo.log.LogLevel; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; -import java.util.LinkedList; import java.util.List; import java.util.Optional; @@ -24,7 +22,6 @@ import java.util.Optional; public class ApplicationPackageXmlFilesValidator { private final AppSubDirs appDirs; - private final DeployLogger logger; private final Optional<Version> vespaVersion; private static final FilenameFilter xmlFilter = new FilenameFilter() { @@ -34,25 +31,24 @@ public class ApplicationPackageXmlFilesValidator { } }; - public ApplicationPackageXmlFilesValidator(AppSubDirs appDirs, DeployLogger logger, Optional<Version> vespaVersion) { + + public ApplicationPackageXmlFilesValidator(AppSubDirs appDirs, Optional<Version> vespaVersion) { this.appDirs = appDirs; - this.logger = logger; this.vespaVersion = vespaVersion; } - public static ApplicationPackageXmlFilesValidator createDefaultXMLValidator(File appDir, DeployLogger logger, Optional<Version> vespaVersion) { - return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), logger, vespaVersion); + // TODO: Remove when no version older than 6.33 is used + public ApplicationPackageXmlFilesValidator(AppSubDirs appDirs, DeployLogger logger, Optional<Version> vespaVersion) { + this.appDirs = appDirs; + this.vespaVersion = vespaVersion; } - public static ApplicationPackageXmlFilesValidator createTestXmlValidator(File appDir) { - return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), new BaseDeployLogger(), Optional.<Version>empty()); + public static ApplicationPackageXmlFilesValidator createDefaultXMLValidator(File appDir, Optional<Version> vespaVersion) { + return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), vespaVersion); } - // Verify that files a and b does not coexist. - private void checkConflicts(String a, String b) throws IllegalArgumentException { - if (appDirs.file(a).exists() && appDirs.file(b).exists()) - throw new IllegalArgumentException("Application package in " + appDirs.root() + " contains both " + a + " and " + b + - ", please use just one of them"); + public static ApplicationPackageXmlFilesValidator createTestXmlValidator(File appDir) { + return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), Optional.<Version>empty()); } @SuppressWarnings("deprecation") diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java index 3b85e617f87..1f39e2474da 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java @@ -44,10 +44,8 @@ import java.net.URL; import java.security.MessageDigest; import java.util.*; import java.util.jar.JarFile; -import java.util.logging.Level; import java.util.logging.Logger; -import static com.yahoo.io.IOUtils.readAll; import static com.yahoo.text.Lowercase.toLowerCase; @@ -626,13 +624,13 @@ public class FilesApplicationPackage implements ApplicationPackage { } @Override - public void validateXML(DeployLogger logger) throws IOException { - validateXML(logger, Optional.empty()); + public void validateXML() throws IOException { + validateXML(Optional.empty()); } @Override - public void validateXML(DeployLogger logger, Optional<Version> vespaVersion) throws IOException { - ApplicationPackageXmlFilesValidator xmlFilesValidator = ApplicationPackageXmlFilesValidator.createDefaultXMLValidator(appDir, logger, vespaVersion); + public void validateXML(Optional<Version> vespaVersion) throws IOException { + ApplicationPackageXmlFilesValidator xmlFilesValidator = ApplicationPackageXmlFilesValidator.createDefaultXMLValidator(appDir, vespaVersion); xmlFilesValidator.checkApplication(); ApplicationPackageXmlFilesValidator.checkIncludedDirs(this); } diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java index 2a4751af083..a5fb7a152d8 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java @@ -217,14 +217,24 @@ public interface ApplicationPackage { throw new UnsupportedOperationException("This application package cannot return file references"); } + // TODO: Remove when no version older than 6.33 is in use default void validateXML(DeployLogger logger) throws IOException { throw new UnsupportedOperationException("This application package cannot validate XML"); } + default void validateXML() throws IOException { + throw new UnsupportedOperationException("This application package cannot validate XML"); + } + + // TODO: Remove when no version older than 6.33 is in use default void validateXML(DeployLogger logger, Optional<Version> vespaVersion) throws IOException { throw new UnsupportedOperationException("This application package cannot validate XML"); } + default void validateXML(Optional<Version> vespaVersion) throws IOException { + throw new UnsupportedOperationException("This application package cannot validate XML"); + } + default void writeMetaData() throws IOException { throw new UnsupportedOperationException("This application package cannot write its metadata"); } diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java index 731410c9bf3..c30c62b44bc 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java @@ -232,6 +232,16 @@ public class MockApplicationPackage implements ApplicationPackage { " </host>" + "</hosts>"; + + @Override + public void validateXML() throws IOException { + if (failOnValidateXml) { + throw new IllegalArgumentException("Error in application package"); + } else { + throw new UnsupportedOperationException("This application package cannot validate XML"); + } + } + @Override public void validateXML(DeployLogger logger) throws IOException { if (failOnValidateXml) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java index 9b234435ce2..adbd4d7bae1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.model; import com.google.inject.Inject; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.config.application.api.ApplicationPackage; -import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.ConfigModelRegistry; import com.yahoo.config.model.MapConfigModelRegistry; import com.yahoo.config.model.NullConfigModelRegistry; @@ -89,7 +88,6 @@ public class VespaModelFactory implements ModelFactory { if (modelContext.appDir().isPresent()) { ApplicationPackageXmlFilesValidator validator = ApplicationPackageXmlFilesValidator.createDefaultXMLValidator(modelContext.appDir().get(), - modelContext.deployLogger(), modelContext.vespaVersion()); try { validator.checkApplication(); @@ -101,7 +99,7 @@ public class VespaModelFactory implements ModelFactory { } } else { - validateXML(modelContext.applicationPackage(), modelContext.deployLogger(), ignoreValidationErrors); + validateXML(modelContext.applicationPackage(), ignoreValidationErrors); } DeployState deployState = createDeployState(modelContext); VespaModel model = buildModel(deployState); @@ -173,9 +171,9 @@ public class VespaModelFactory implements ModelFactory { return modelContext.properties().hostedVespa() && id.isHostedVespaRoutingApplication(); } - private void validateXML(ApplicationPackage applicationPackage, DeployLogger deployLogger, boolean ignoreValidationErrors) { + private void validateXML(ApplicationPackage applicationPackage, boolean ignoreValidationErrors) { try { - applicationPackage.validateXML(deployLogger); + applicationPackage.validateXML(); } catch (IllegalArgumentException e) { rethrowUnlessIgnoreErrors(e, ignoreValidationErrors); } catch (Exception e) { @@ -185,7 +183,7 @@ public class VespaModelFactory implements ModelFactory { private List<ConfigChangeAction> validateModel(VespaModel model, DeployState deployState, boolean ignoreValidationErrors) { try { - deployState.getApplicationPackage().validateXML(deployState.getDeployLogger()); + deployState.getApplicationPackage().validateXML(); return Validation.validate(model, ignoreValidationErrors, deployState); } catch (IllegalArgumentException e) { rethrowUnlessIgnoreErrors(e, ignoreValidationErrors); diff --git a/standalone-container/src/main/scala/com/yahoo/container/standalone/StandaloneContainerApplication.scala b/standalone-container/src/main/scala/com/yahoo/container/standalone/StandaloneContainerApplication.scala index 8157170e6d1..3f31dcd67ca 100644 --- a/standalone-container/src/main/scala/com/yahoo/container/standalone/StandaloneContainerApplication.scala +++ b/standalone-container/src/main/scala/com/yahoo/container/standalone/StandaloneContainerApplication.scala @@ -2,7 +2,7 @@ package com.yahoo.container.standalone import com.google.inject.{Key, AbstractModule, Injector, Inject} -import com.yahoo.config.application.api.{DeployLogger, RuleConfigDeriver, FileRegistry, ApplicationPackage} +import com.yahoo.config.application.api.{RuleConfigDeriver, FileRegistry, ApplicationPackage} import com.yahoo.config.provision.Zone import com.yahoo.jdisc.application.Application import com.yahoo.container.jdisc.ConfiguredApplication @@ -134,9 +134,9 @@ object StandaloneContainerApplication { tmpDir.toFile } - private def validateApplication(applicationPackage: ApplicationPackage, logger: DeployLogger) = { + private def validateApplication(applicationPackage: ApplicationPackage) = { try { - applicationPackage.validateXML(logger) + applicationPackage.validateXML() } catch { case e: IOException => throw new IllegalArgumentException(e) } @@ -171,7 +171,7 @@ object StandaloneContainerApplication { val applicationPackage = rawApplicationPackage.preprocess(Zone.defaultZone(), new RuleConfigDeriver { override def derive(ruleBaseDir: String, outputDir: String): Unit = {} }, logger) - validateApplication(applicationPackage, logger) + validateApplication(applicationPackage) val deployState = new DeployState.Builder(). applicationPackage(applicationPackage). fileRegistry(fileRegistry). |