diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-09-06 12:30:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-09-06 12:30:38 +0200 |
commit | 4bb69b9afd9670a91916762474e3bc6fe4257419 (patch) | |
tree | b983f2a205a201acf7aee79247afe3205dc3a769 /config-application-package/src/main/java/com | |
parent | a1c927a718ac336371114d6ad276a3ca958d3c03 (diff) |
Allow reading from source dirs be turned on or off
Diffstat (limited to 'config-application-package/src/main/java/com')
2 files changed, 64 insertions, 37 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java index 201bd175cb0..922f81150c0 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/DeployData.java @@ -8,6 +8,7 @@ package com.yahoo.config.model.application.provider; * @since 5.1.11 */ public class DeployData { + /* Which user deployed */ private final String deployedByUser; 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 f34b8608aa2..60844b57ef0 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 @@ -70,15 +70,26 @@ public class FilesApplicationPackage implements ApplicationPackage { // NOTE: these directories exist in the original user app, but their locations are given in 'services.xml' private final List<String> userIncludeDirs = new ArrayList<>(); private final ApplicationMetaData metaData; + private final boolean includeSourceFiles; + + /** Creates from a directory with source files included */ + public static FilesApplicationPackage fromFile(File appDir) { + return fromFile(appDir, true); + } /** * Returns an application package object based on the given application dir * * @param appDir application package directory + * @param includeSourceFiles read files from source directories /src/main and src/test in addition + * to the application package location. This is useful during development + * to be able to run tests without a complete build first. * @return an Application package instance */ - public static FilesApplicationPackage fromFile(File appDir) { - return new Builder(appDir).preprocessedDir(new File(appDir, ".preprocessed")).build(); + public static FilesApplicationPackage fromFile(File appDir, boolean includeSourceFiles) { + return new Builder(appDir).preprocessedDir(new File(appDir, ".preprocessed")) + .includeSourceFiles(includeSourceFiles) + .build(); } /** Creates package from a local directory, typically deploy app */ @@ -86,37 +97,11 @@ public class FilesApplicationPackage implements ApplicationPackage { return new Builder(appDir).deployData(deployData).build(); } - /** - * Builder for {@link com.yahoo.config.model.application.provider.FilesApplicationPackage}. Use - * this to create instances in a flexible manner. - */ - public static class Builder { - private final File appDir; - private Optional<File> preprocessedDir = Optional.empty(); - private Optional<ApplicationMetaData> metaData = Optional.empty(); - - public Builder(File appDir) { - this.appDir = appDir; - } - - public Builder preprocessedDir(File preprocessedDir) { - this.preprocessedDir = Optional.ofNullable(preprocessedDir); - return this; - } - - public Builder deployData(DeployData deployData) { - this.metaData = Optional.of(metaDataFromDeployData(appDir, deployData)); - return this; - } - - public FilesApplicationPackage build() { - return new FilesApplicationPackage(appDir, preprocessedDir.orElse(new File(appDir, ".preprocessed")), metaData.orElse(readMetaData(appDir))); - } - } - private static ApplicationMetaData metaDataFromDeployData(File appDir, DeployData deployData) { - return new ApplicationMetaData(deployData.getDeployedByUser(), deployData.getDeployedFromDir(), deployData.getDeployTimestamp(), - deployData.getApplicationName(), computeCheckSum(appDir), deployData.getGeneration(), deployData.getCurrentlyActiveGeneration()); + return new ApplicationMetaData(deployData.getDeployedByUser(), deployData.getDeployedFromDir(), + deployData.getDeployTimestamp(), deployData.getApplicationName(), + computeCheckSum(appDir), deployData.getGeneration(), + deployData.getCurrentlyActiveGeneration()); } /** @@ -126,10 +111,12 @@ public class FilesApplicationPackage implements ApplicationPackage { * @param appDir application package directory * @param preprocessedDir preprocessed application package output directory * @param metaData metadata for this application package + * @param includeSourceFiles include files from source dirs */ @SuppressWarnings("deprecation") - private FilesApplicationPackage(File appDir, File preprocessedDir, ApplicationMetaData metaData) { + private FilesApplicationPackage(File appDir, File preprocessedDir, ApplicationMetaData metaData, boolean includeSourceFiles) { verifyAppDir(appDir); + this.includeSourceFiles = includeSourceFiles; this.appDir = appDir; this.preprocessedDir = preprocessedDir; appSubDirs = new AppSubDirs(appDir); @@ -306,7 +293,7 @@ public class FilesApplicationPackage implements ApplicationPackage { Collection<String> disjoint = new ArrayList<>(fileSds); disjoint.retainAll(bundleSds); throw new IllegalArgumentException("For the following search definitions names there are collisions between those specified inside " + - "docproc bundles and those in searchdefinitions/ in application package: "+disjoint); + "docproc bundles and those in searchdefinitions/ in application package: "+disjoint); } } @@ -335,7 +322,7 @@ public class FilesApplicationPackage implements ApplicationPackage { String sdName = entry.getKey(); if (usedNames.contains(sdName)) { throw new IllegalArgumentException("The search definition name '"+sdName+"' used in bundle '"+ - bundle.getName()+"' is already used in classpath or previous bundle."); + bundle.getName()+"' is already used in classpath or previous bundle."); } usedNames.add(sdName); String sdPayload = entry.getValue(); @@ -411,8 +398,10 @@ public class FilesApplicationPackage implements ApplicationPackage { public Map<ConfigDefinitionKey, UnparsedConfigDefinition> getAllExistingConfigDefs() { Map<ConfigDefinitionKey, UnparsedConfigDefinition> defs = new LinkedHashMap<>(); addAllDefsFromConfigDir(defs, configDefsDir); - addAllDefsFromConfigDir(defs, new File("src/main/resources/configdefinitions")); // Allow running from source - addAllDefsFromConfigDir(defs, new File("src/test/resources/configdefinitions")); // Allow running from source + if (includeSourceFiles) { // allow running from source, assuming mvn file project layout + addAllDefsFromConfigDir(defs, new File("src/main/resources/configdefinitions")); + addAllDefsFromConfigDir(defs, new File("src/test/resources/configdefinitions")); + } addAllDefsFromBundles(defs, FilesApplicationPackage.getComponents(appDir)); return defs; } @@ -754,4 +743,41 @@ public class FilesApplicationPackage implements ApplicationPackage { } while(i!=-1); } + /** + * Builder for {@link com.yahoo.config.model.application.provider.FilesApplicationPackage}. Use + * this to create instances in a flexible manner. + */ + public static class Builder { + + private final File appDir; + private Optional<File> preprocessedDir = Optional.empty(); + private Optional<ApplicationMetaData> metaData = Optional.empty(); + private boolean includeSourceFiles = true; + + public Builder(File appDir) { + this.appDir = appDir; + } + + public Builder preprocessedDir(File preprocessedDir) { + this.preprocessedDir = Optional.ofNullable(preprocessedDir); + return this; + } + + public Builder deployData(DeployData deployData) { + this.metaData = Optional.of(metaDataFromDeployData(appDir, deployData)); + return this; + } + + public Builder includeSourceFiles(boolean includeSourceFiles) { + this.includeSourceFiles = includeSourceFiles; + return this; + } + + public FilesApplicationPackage build() { + return new FilesApplicationPackage(appDir, preprocessedDir.orElse(new File(appDir, ".preprocessed")), + metaData.orElse(readMetaData(appDir)), includeSourceFiles); + } + + } + } |