public Map<String, List<Pair<PipelineConfig, PipelineConfigs>>> getPluggableSCMMaterialUsageInPipelines() { if (pluggableSCMMaterialToPipelineMap == null) { synchronized (this) { if (pluggableSCMMaterialToPipelineMap == null) { pluggableSCMMaterialToPipelineMap = new HashMap<>(); for (PipelineConfigs pipelineConfigs : this) { for (PipelineConfig pipelineConfig : pipelineConfigs) { for (PluggableSCMMaterialConfig pluggableSCMMaterialConfig : pipelineConfig.pluggableSCMMaterialConfigs()) { String scmId = pluggableSCMMaterialConfig.getScmId(); if (!pluggableSCMMaterialToPipelineMap.containsKey(scmId)) { pluggableSCMMaterialToPipelineMap.put(scmId, new ArrayList<>()); } pluggableSCMMaterialToPipelineMap.get(scmId).add(new Pair<>(pipelineConfig, pipelineConfigs)); } } } } } } return pluggableSCMMaterialToPipelineMap; }
public PluggableSCMMaterial(PluggableSCMMaterialConfig config) { this(); this.name = config.getName(); this.scmId = config.getScmId(); this.scmConfig = config.getSCMConfig(); this.folder = config.getFolder(); this.filter = config.filter(); }
@Test public void shouldSetSCMIdToNullIfConfigAttributesForSCMMaterialDoesNotContainSCMId() throws Exception { Map<String, String> attributes = new HashMap<>(); pluggableSCMMaterialConfig.setConfigAttributes(attributes); assertThat(pluggableSCMMaterialConfig.getScmId(), is(nullValue())); }
@Test public void shouldSetPluggableSCMMaterialConfigAttributesForMaterial() { String scmId = "scm-id"; Map<String, String> hashMap = new HashMap<>(); hashMap.put(PluggableSCMMaterialConfig.SCM_ID, scmId); Map<String, Object> attributeMap = new HashMap<>(); attributeMap.put(AbstractMaterialConfig.MATERIAL_TYPE, PluggableSCMMaterialConfig.TYPE); attributeMap.put(PluggableSCMMaterialConfig.TYPE, hashMap); MaterialConfigs materialConfigs = new MaterialConfigs(); materialConfigs.setConfigAttributes(attributeMap); assertThat(materialConfigs.size(), is(1)); assertThat(((PluggableSCMMaterialConfig) materialConfigs.first()).getScmId(), is(scmId)); }
private CRPluggableScmMaterial pluggableScmMaterialConfigToCRPluggableScmMaterial(PluggableSCMMaterialConfig pluggableScmMaterialConfig) { SCMs scms = getSCMs(); String id = pluggableScmMaterialConfig.getScmId(); SCM scmConfig = scms.find(id); if (scmConfig == null) throw new ConfigConvertionException( String.format("Failed to find referenced scm '%s'", id)); return new CRPluggableScmMaterial(pluggableScmMaterialConfig.getName().toString(), id, pluggableScmMaterialConfig.getFolder(), pluggableScmMaterialConfig.filter().ignoredFileNames()); }
@Test public void shouldSetSCMIdAsNullIfSCMConfigIsNull() { pluggableSCMMaterialConfig.setSCMConfig(null); assertThat(pluggableSCMMaterialConfig.getScmId(), is(nullValue())); assertThat(pluggableSCMMaterialConfig.getSCMConfig(), is(nullValue())); }
@Test public void shouldGetExistingOrDefaultPluggableSCMMaterialCorrectly() { SvnMaterialConfig svn = new SvnMaterialConfig("http://test.com", false); PluggableSCMMaterialConfig pluggableSCMMaterialOne = new PluggableSCMMaterialConfig("scm-id-1"); PluggableSCMMaterialConfig pluggableSCMMaterialTwo = new PluggableSCMMaterialConfig("scm-id-2"); assertThat(new MaterialConfigs(svn, pluggableSCMMaterialTwo).getExistingOrDefaultMaterial(pluggableSCMMaterialOne).getScmId(), is("scm-id-2")); assertThat(new MaterialConfigs(svn).getExistingOrDefaultMaterial(pluggableSCMMaterialOne).getScmId(), is("scm-id-1")); }
public static void toJSON(OutputWriter jsonWriter, PluggableSCMMaterialConfig pluggableSCMMaterialConfig) { jsonWriter.add("ref", pluggableSCMMaterialConfig.getScmId()); if (pluggableSCMMaterialConfig.filter().isEmpty()) { jsonWriter.renderNull("filter"); } else { jsonWriter.addChild("filter", filterWriter -> FilterRepresenter.toJSON(filterWriter, pluggableSCMMaterialConfig.filter())); } jsonWriter.add("destination", pluggableSCMMaterialConfig.getFolder()); }
@Test public void shouldSetConfigAttributesForSCMMaterialWhenDataIsEmpty() throws Exception { Map<String, String> attributes = new HashMap<>(); attributes.put(PluggableSCMMaterialConfig.SCM_ID, "scm-id"); attributes.put(PluggableSCMMaterialConfig.FOLDER, ""); attributes.put(PluggableSCMMaterialConfig.FILTER, ""); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(); pluggableSCMMaterialConfig.setFolder("dest"); pluggableSCMMaterialConfig.setFilter(new Filter(new IgnoredFiles("/foo/**.*"))); pluggableSCMMaterialConfig.setConfigAttributes(attributes); assertThat(pluggableSCMMaterialConfig.getScmId(), is("scm-id")); assertThat(pluggableSCMMaterialConfig.getFolder(), is(nullValue())); assertThat(pluggableSCMMaterialConfig.filter(), is(new Filter())); }
public static void toJSON(OutputWriter jsonWriter, PluggableSCMMaterialConfig pluggableSCMMaterialConfig) { jsonWriter.add("ref", pluggableSCMMaterialConfig.getScmId()); if (pluggableSCMMaterialConfig.filter().isEmpty()) { jsonWriter.renderNull("filter"); } else { jsonWriter.addChild("filter", filterWriter -> FilterRepresenter.toJSON(filterWriter, pluggableSCMMaterialConfig.filter())); } jsonWriter.add("destination", pluggableSCMMaterialConfig.getFolder()); }
@Test public void shouldSetConfigAttributesForSCMMaterial() throws Exception { Map<String, String> attributes = new HashMap<>(); attributes.put(PluggableSCMMaterialConfig.SCM_ID, "scm-id"); attributes.put(PluggableSCMMaterialConfig.FOLDER, "dest"); attributes.put(PluggableSCMMaterialConfig.FILTER, "/foo/**.*,/another/**.*,bar"); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(); pluggableSCMMaterialConfig.setConfigAttributes(attributes); assertThat(pluggableSCMMaterialConfig.getScmId(), is("scm-id")); assertThat(pluggableSCMMaterialConfig.getFolder(), is("dest")); assertThat(pluggableSCMMaterialConfig.filter(), is(new Filter(new IgnoredFiles("/foo/**.*"), new IgnoredFiles("/another/**.*"), new IgnoredFiles("bar")))); }
@Test public void shouldAllowSCMTypeMaterialForPipeline() throws Exception { CruiseConfig configToSave = new BasicCruiseConfig(); SCM scm = new SCM(); String scmId = "scm-id"; scm.setId(scmId); scm.setName("name"); scm.setPluginConfiguration(new PluginConfiguration("plugin-id", "1.0")); scm.setConfiguration(new Configuration(getConfigurationProperty("url", false, "http://go"))); configToSave.getSCMs().add(scm); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(scmId); pluggableSCMMaterialConfig.setSCMConfig(scm); configToSave.addPipeline("default", PipelineConfigMother.pipelineConfig("test", new MaterialConfigs(pluggableSCMMaterialConfig), new JobConfigs(new JobConfig("ls")))); xmlWriter.write(configToSave, output, false); GoConfigHolder goConfigHolder = xmlLoader.loadConfigHolder(output.toString()); PipelineConfig pipelineConfig = goConfigHolder.config.pipelineConfigByName(new CaseInsensitiveString("test")); MaterialConfig materialConfig = pipelineConfig.materialConfigs().get(0); assertThat(materialConfig instanceof PluggableSCMMaterialConfig, is(true)); assertThat(((PluggableSCMMaterialConfig) materialConfig).getScmId(), is(scmId)); assertThat(((PluggableSCMMaterialConfig) materialConfig).getSCMConfig(), is(scm)); assertThat(materialConfig.getFolder(), is(nullValue())); assertThat(materialConfig.filter(), is(new Filter())); }
@Test public void shouldAllowFolderAndFilterForPluggableSCMMaterialForPipeline() throws Exception { CruiseConfig configToSave = new BasicCruiseConfig(); SCM scm = new SCM(); String scmId = "scm-id"; scm.setId(scmId); scm.setName("name"); scm.setPluginConfiguration(new PluginConfiguration("plugin-id", "1.0")); scm.setConfiguration(new Configuration(getConfigurationProperty("url", false, "http://go"))); configToSave.getSCMs().add(scm); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(scmId); pluggableSCMMaterialConfig.setSCMConfig(scm); pluggableSCMMaterialConfig.setFolder("dest"); pluggableSCMMaterialConfig.setFilter(new Filter(new IgnoredFiles("x"), new IgnoredFiles("y"))); configToSave.addPipeline("default", PipelineConfigMother.pipelineConfig("test", new MaterialConfigs(pluggableSCMMaterialConfig), new JobConfigs(new JobConfig("ls")))); xmlWriter.write(configToSave, output, false); GoConfigHolder goConfigHolder = xmlLoader.loadConfigHolder(output.toString()); PipelineConfig pipelineConfig = goConfigHolder.config.pipelineConfigByName(new CaseInsensitiveString("test")); MaterialConfig materialConfig = pipelineConfig.materialConfigs().get(0); assertThat(materialConfig instanceof PluggableSCMMaterialConfig, is(true)); assertThat(((PluggableSCMMaterialConfig) materialConfig).getScmId(), is(scmId)); assertThat(((PluggableSCMMaterialConfig) materialConfig).getSCMConfig(), is(scm)); assertThat(materialConfig.getFolder(), is("dest")); assertThat(materialConfig.filter(), is(new Filter(new IgnoredFiles("x"), new IgnoredFiles("y")))); }