public static ApplicationPackageXmlFilesValidator create(File appDir, Version vespaVersion) { return new ApplicationPackageXmlFilesValidator(new AppSubDirs(appDir), vespaVersion); }
public AppSubDirs(File root) { this.root = new Tuple2<>(root, root.getName()); rules = createTuple(ApplicationPackage.RULES_DIR.getRelative()); searchchains = createTuple(ApplicationPackage.SEARCHCHAINS_DIR); docprocchains = createTuple(ApplicationPackage.DOCPROCCHAINS_DIR); routingtables = createTuple(ApplicationPackage.ROUTINGTABLES_DIR); configDefs = createTuple(ApplicationPackage.CONFIG_DEFINITIONS_DIR); searchdefinitions = createTuple(ApplicationPackage.SEARCH_DEFINITIONS_DIR.getRelative()); }
@SuppressWarnings("deprecation") private String servicesFileName() { String servicesFile = FilesApplicationPackage.SERVICES; if ( ! appDirs.file(servicesFile).exists()) { throw new IllegalArgumentException("Application package in " + appDirs.root() + " must contain " + FilesApplicationPackage.SERVICES); } return servicesFile; }
private void copyUserDefsIntoApplication() { File destination = appSubDirs.configDefs(); destination.mkdir(); ConfigDefinitionDir defDir = new ConfigDefinitionDir(destination); // Copy the user's def files from components. List<Bundle> bundlesAdded = new ArrayList<>(); for (FilesApplicationPackage.Component component : FilesApplicationPackage.getComponents(appSubDirs.root())) { Bundle bundle = component.getBundle(); defDir.addConfigDefinitionsFromBundle(bundle, bundlesAdded); bundlesAdded.add(bundle); } }
@SuppressWarnings("deprecation") public void checkApplication() throws IOException { validate(validators.servicesXmlValidator(), servicesFileName()); validateOptional(validators.hostsXmlValidator(), FilesApplicationPackage.HOSTS); validateOptional(validators.deploymentXmlValidator(), FilesApplicationPackage.DEPLOYMENT_FILE.getName()); validateOptional(validators.validationOverridesXmlValidator(), FilesApplicationPackage.VALIDATION_OVERRIDES.getName()); if (appDirs.searchdefinitions().exists()) { if (FilesApplicationPackage.getSearchDefinitionFiles(appDirs.root()).isEmpty()) { throw new IllegalArgumentException("Application package in " + appDirs.root() + " must contain at least one search definition (.sd) file when directory searchdefinitions/ exists."); } } validateRouting(appDirs.routingtables); }
private void validateOptional(SchemaValidator validator, String file) throws IOException { if ( ! appDirs.file(file).exists()) return; validate(validator, file); }
private Tuple2<File, String> createTuple(String name) { return new Tuple2<>(file(name), name); }
private void validate(SchemaValidator validator, String filename) throws IOException { validator.validate(appDirs.file(filename)); }
/** * New package from given path on local file system. Retrieves config definition files from * the default location '$VESPA_HOME/share/vespa/configdefinitions'. * * @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, boolean includeSourceFiles) { verifyAppDir(appDir); this.includeSourceFiles = includeSourceFiles; this.appDir = appDir; this.preprocessedDir = preprocessedDir; appSubDirs = new AppSubDirs(appDir); configDefsDir = new File(appDir, ApplicationPackage.CONFIG_DEFINITIONS_DIR); addUserIncludeDirs(); this.metaData = metaData; }