public void setScmRevision(Set<FaninScmMaterial> allScmMaterials) { for (FaninScmMaterial scmMaterial : allScmMaterials) { if (materialConfig.getFingerprint().equals(scmMaterial.fingerprint)) { scmRevision = scmMaterial.revision; break; } } } }
@Override public int hashCode() { return materialConfig != null ? materialConfig.getFingerprint().hashCode() : 0; } }
private void handleScmMaterial(HashSet<String> scmMaterialSet, MaterialConfig material) { final String fingerprint = material.getFingerprint(); scmMaterialSet.add(fingerprint); fingerprintScmMaterialMap.put(fingerprint, material); }
private void handleScmMaterial(Set<String> scmMaterialSet, MaterialConfig material) { final String fingerprint = material.getFingerprint(); scmMaterialSet.add(fingerprint); fingerprintScmMaterialMap.put(fingerprint, material); }
private FanInNode createNode(MaterialConfig material) { FanInNode node = nodes.get(material.getFingerprint()); if (node == null) { node = FanInNodeFactory.create(material); nodes.put(material.getFingerprint(), node); } return node; }
@Override public MaterialConfig materialConfigFor(String fingerprint) { for (MaterialConfig materialConfig : getUniqueMaterialConfigs(false)) { if (materialConfig.getFingerprint().equals(fingerprint)) { return materialConfig; } } return null; }
private void addMaterialsForConfig(Set<String> materialFingerPrints, List<PipelineConfig> pipelineConfigs) { for (PipelineConfig pipelineConfig : pipelineConfigs) { for (MaterialConfig material : pipelineConfig.materialConfigs()) { materialFingerPrints.add(material.getFingerprint()); } } }
public boolean hasMaterialConfigWithFingerprint(MaterialConfig materialConfig) { for (Material material : this) { if (material.getFingerprint().equals(materialConfig.getFingerprint())) { return true; } } return false; }
private void buildGraph(PipelineConfig target) { nodes.put(this.root.materialConfig.getFingerprint(), this.root); final Set<String> scmMaterials = new HashSet<>(); buildRestOfTheGraph(this.root, target, scmMaterials, new HashSet<>()); dependencyMaterialFingerprintMap.put((DependencyMaterialConfig) this.root.materialConfig, scmMaterials); }
public boolean isConfigOriginSameAsOneOfMaterials() { if (!(isConfigDefinedRemotely())) return false; RepoConfigOrigin repoConfigOrigin = (RepoConfigOrigin) this.origin; MaterialConfig configMaterial = repoConfigOrigin.getMaterial(); for (MaterialConfig material : this.materialConfigs()) { if (material.getFingerprint().equals(configMaterial.getFingerprint())) return true; } return false; }
@Override public MaterialConfig materialConfigFor(CaseInsensitiveString pipelineName, String fingerprint) { PipelineConfig pipelineConfig = pipelineConfigByName(pipelineName); MaterialConfigs materialConfigs = pipelineConfig.materialConfigs(); for (MaterialConfig materialConfig : materialConfigs) { if (materialConfig.getFingerprint().equals(fingerprint)) { return materialConfig; } } return null; }
public ConfigRepoConfig findByFingerprint(String fingerprint) { return getConfigRepos().stream() .filter(configRepo -> configRepo.getMaterialConfig().getFingerprint().equalsIgnoreCase(fingerprint)) .findFirst().orElse(null); }
private MaterialConfig materialFrom(MaterialConfigs knownMaterials, MaterialRevision materialRevision) { for (MaterialConfig knownMaterial : knownMaterials) { if (knownMaterial.getFingerprint().equals(materialRevision.getMaterial().getFingerprint())) { return knownMaterial; } } return null; }
public MaterialConfig materialForPipelineWithFingerprint(String pipelineName, String fingerprint) { for (MaterialConfig materialConfig : pipelineConfigNamed(new CaseInsensitiveString(pipelineName)).materialConfigs()) { if (materialConfig.getFingerprint().equals(fingerprint)) { return materialConfig; } } throw new RuntimeException(format("Pipeline [%s] does not have a material with fingerprint [%s]", pipelineName, fingerprint)); }
private List<PartialConfig> removePartialsThatDoNotCorrespondToTheCurrentConfigReposList(List<PartialConfig> partList) { List<Object> notToBeMerged = new ArrayList<>(); for (PartialConfig partialConfig : partList) { if (partialConfig.getOrigin() instanceof RepoConfigOrigin) { RepoConfigOrigin origin = (RepoConfigOrigin) partialConfig.getOrigin(); if (!configRepos.hasMaterialWithFingerprint(origin.getMaterial().getFingerprint())) notToBeMerged.add(partialConfig); } } partList = ListUtils.removeAll(partList, notToBeMerged); return partList; }
private void assertAllDirectDependenciesArePresentInInput(MaterialRevisions actualRevisions, CaseInsensitiveString pipelineName) { Collection<String> actualRevFingerprints = CollectionUtils.collect(actualRevisions.iterator(), actualRevision -> actualRevision.getMaterial().getFingerprint()); for (FanInNode child : root.children) { //The dependency material that is not in 'passed' state will not be found in actual revisions if (!actualRevFingerprints.contains(child.materialConfig.getFingerprint())) { throw NoCompatibleUpstreamRevisionsException.doesNotHaveValidRevisions(pipelineName, child.materialConfig); } } }
private void validateMaterialUniqueness(ValidationContext validationContext) { if (this.getMaterialConfig() != null) { if (!validationContext.getCruiseConfig().getConfigRepos().isUniqueMaterial(this.getMaterialConfig().getFingerprint())) { this.errors.add("material", format( "You have defined multiple configuration repositories with the same repository - '%s'.", this.repo.getDisplayName())); } } }
private void validateAutoUpdateState(ValidationContext validationContext) { if (validationContext == null) return; MaterialConfig material = this.getMaterialConfig(); if (material != null) { MaterialConfigs allMaterialsByFingerPrint = validationContext.getAllMaterialsByFingerPrint(material.getFingerprint()); if (allMaterialsByFingerPrint.stream().anyMatch(m -> !m.isAutoUpdate())) { getMaterialConfig().errors().add("autoUpdate", format("Material of type %s (%s) is specified as a configuration repository and pipeline material with disabled autoUpdate." + " All copies of this material must have autoUpdate enabled or configuration repository must be removed", material.getTypeForDisplay(), material.getDescription())); } } }
@Override public void onSuccessPartialConfig(ConfigRepoConfig repoConfig, PartialConfig newPart) { String fingerprint = repoConfig.getMaterialConfig().getFingerprint(); if (this.configWatchList.hasConfigRepoWithFingerprint(fingerprint)) { //TODO maybe validate new part without context of other partials or main config // put latest known cachedGoPartials.addOrUpdate(fingerprint, newPart); if (updateConfig(newPart, fingerprint, repoConfig)) { cachedGoPartials.markAsValid(fingerprint, newPart); } } }
@Test public void shouldGetAllMaterialsByFingerPrint() throws Exception { CruiseConfig cruiseConfig = new GoConfigMother().cruiseConfigWithPipelineUsingTwoMaterials(); MaterialConfig expectedMaterial = MaterialConfigsMother.multipleMaterialConfigs().get(1); PipelineConfigSaveValidationContext context = PipelineConfigSaveValidationContext.forChain(true, "group", cruiseConfig); MaterialConfigs allMaterialsByFingerPrint = context.getAllMaterialsByFingerPrint(expectedMaterial.getFingerprint()); assertThat(allMaterialsByFingerPrint.size(), is(1)); assertThat(allMaterialsByFingerPrint.first(), is(expectedMaterial)); } @Test