private void validateNotOutsideSandbox() { String dest = this.getFolder(); if (dest == null) { return; } if (!(FilenameUtil.isNormalizedPathOutsideWorkingDir(dest))) { setDestinationFolderError(String.format("Dest folder '%s' is not valid. It must be a sub-directory of the working folder.", dest)); } }
public void validateNotSubdirectoryOf(String otherSCMMaterialFolder) { String myDirPath = this.getFolder(); if (myDirPath == null || otherSCMMaterialFolder == null) { return; } if (FilenameUtil.isNormalizedDirectoryPathInsideNormalizedParentDirectory(myDirPath, otherSCMMaterialFolder)) { addError(FOLDER, "Invalid Destination Directory. Every material needs a different destination directory and the directories should not be nested."); } }
private void validateDestFolderPath() { if (StringUtils.isBlank(folder)) { return; } if (!new FilePathTypeValidator().isPathValid(folder)) { errors().add(FOLDER, FilePathTypeValidator.errorMessage("directory", getFolder())); } }
@Test public void shouldLoadPipelineWithMultipleMaterials() throws Exception { String pipelineXmlPartial = "<pipeline name=\"pipeline\">\n" + " <materials>\n" + " <svn url=\"/hgrepo1\" dest=\"folder1\" />\n" + " <svn url=\"/hgrepo2\" dest=\"folder2\" />\n" + " <svn url=\"/hgrepo3\" dest=\"folder3\" />\n" + " </materials>\n" + " <stage name=\"mingle\">\n" + " <jobs>\n" + " <job name=\"functional\">\n" + " <artifacts>\n" + " <log src=\"artifact1.xml\" dest=\"cruise-output\" />\n" + " </artifacts>\n" + " </job>\n" + " </jobs>\n" + " </stage>\n" + "</pipeline>\n"; PipelineConfig pipeline = xmlLoader.fromXmlPartial(pipelineXmlPartial, PipelineConfig.class); assertThat(pipeline.materialConfigs().size(), is(3)); ScmMaterialConfig material = (ScmMaterialConfig) pipeline.materialConfigs().get(0); assertThat(material.getFolder(), is("folder1")); }
public static void toJSON(OutputWriter jsonWriter, ScmMaterialConfig scmMaterialConfig) { if (!(scmMaterialConfig instanceof P4MaterialConfig)) { jsonWriter.add("url", scmMaterialConfig.getUrl()); } jsonWriter.add("destination", scmMaterialConfig.getFolder()); if (scmMaterialConfig.filter().isEmpty()) { jsonWriter.renderNull("filter"); } else { jsonWriter.addChild("filter", filterWriter -> FilterRepresenter.toJSON(filterWriter, scmMaterialConfig.filter())); } jsonWriter.add("invert_filter", scmMaterialConfig.isInvertFilter()); jsonWriter.add("name", scmMaterialConfig.getName()); jsonWriter.add("auto_update", scmMaterialConfig.isAutoUpdate()); }
public static void toJSON(OutputWriter jsonWriter, ScmMaterialConfig scmMaterialConfig) { if (!(scmMaterialConfig instanceof P4MaterialConfig)) { jsonWriter.add("url", scmMaterialConfig.getUrl()); } jsonWriter.add("destination", scmMaterialConfig.getFolder()); if (scmMaterialConfig.filter().isEmpty()) { jsonWriter.renderNull("filter"); } else { jsonWriter.addChild("filter", filterWriter -> FilterRepresenter.toJSON(filterWriter, scmMaterialConfig.filter())); } jsonWriter.add("invert_filter", scmMaterialConfig.isInvertFilter()); jsonWriter.add("name", scmMaterialConfig.getName()); jsonWriter.add("auto_update", scmMaterialConfig.isAutoUpdate()); }