@Override public String getRevisionUrl() { return getRevision(); }
@Override public MaterialInstance createMaterialInstance() { return new PackageMaterialInstance(JsonHelper.toJsonString(this), UUID.randomUUID().toString()); }
@Override public void insertLatestOrNewModifications(final Material material, MaterialInstance materialInstance, File folder, Modifications list) { final PackageMaterialInstance packageMaterialInstance = (PackageMaterialInstance) materialInstance; if(packageMaterialInstance.shouldUpgradeTo((PackageMaterialInstance) material.createMaterialInstance())) { transactionTemplate.execute((TransactionCallback) transactionStatus -> { PackageMaterialInstance materialInstance1 = (PackageMaterialInstance) materialRepository.find(packageMaterialInstance.getId()); materialInstance1.upgradeTo((PackageMaterialInstance) material.createMaterialInstance()); materialRepository.saveOrUpdate(materialInstance1); return materialInstance1; }); } scmMaterialUpdater.insertLatestOrNewModifications(material,packageMaterialInstance,folder,list); }
@Override public List<Modification> modificationsSince(final PackageMaterial material, File baseDir, final Revision revision, SubprocessExecutionContext execCtx) { PackageMaterialRevision packageMaterialRevision = (PackageMaterialRevision) revision; PackageRevision previouslyKnownRevision = new PackageRevision(packageMaterialRevision.getRevision(), packageMaterialRevision.getTimestamp(), null, packageMaterialRevision.getData()); PackageConfiguration packageConfiguration = buildPackageConfigurations(material.getPackageDefinition()); RepositoryConfiguration repositoryConfiguration = buildRepositoryConfigurations(material.getPackageDefinition().getRepository()); PackageRevision packageRevision = packageRepositoryExtension.latestModificationSince(material.getPluginId(), packageConfiguration, repositoryConfiguration, previouslyKnownRevision); return getModifications(packageRevision); }
@Test public void shouldCorrectlyCopyConfigurationValue() { PackageMaterialInstance packageMaterialInstance = (PackageMaterialInstance) MaterialsMother.packageMaterial().createMaterialInstance(); packageMaterialInstance.setId(10L); PackageMaterial latestMaterial = MaterialsMother.packageMaterial("repo-id", "name", "pkId", "name", ConfigurationPropertyMother.create("key1", false, "value1")); PackageMaterialInstance newPackageMaterialInstance = (PackageMaterialInstance) latestMaterial.createMaterialInstance(); packageMaterialInstance.upgradeTo(newPackageMaterialInstance); assertThat(packageMaterialInstance.getId(), is(10L)); assertThat(packageMaterialInstance.getConfiguration(), is(newPackageMaterialInstance.getConfiguration())); }
@Test public void shouldSetFingerprintWhenConvertingMaterialInstanceToMaterial() { String fingerprint = "fingerprint"; PackageMaterial material = MaterialsMother.packageMaterial(); PackageMaterialInstance materialInstance = new PackageMaterialInstance(JsonHelper.toJsonString(material), "flyweight"); ReflectionUtil.setField(materialInstance, "fingerprint", fingerprint); materialInstance.setId(1L); PackageMaterial constructedMaterial = (PackageMaterial) materialInstance.toOldMaterial(null, null, null); assertThat(constructedMaterial.getFingerprint(), is(fingerprint)); }
@Override public Revision oldestRevision(Modifications modifications) { if (modifications.isEmpty()) { return new NullRevision(); } Modification modification = modifications.get(0); return new PackageMaterialRevision(modification.getRevision(), modification.getModifiedTime()); }
@Test public void shouldFindPackageMaterialRevisionEqual() { Date date = new Date(); PackageMaterialRevision revisionOne = new PackageMaterialRevision("go-agent-12.1.0", date); PackageMaterialRevision revisionTwo = new PackageMaterialRevision("go-agent-12.1.0", date); assertThat(revisionOne.equals(revisionTwo), is(true)); } }
@Test public void shouldCreatePackageMaterialInstance() { PackageMaterial material = MaterialsMother.packageMaterial(); PackageMaterialInstance materialInstance = (PackageMaterialInstance) material.createMaterialInstance(); assertThat(materialInstance, is(notNullValue())); assertThat(materialInstance.getFlyweightName(), is(notNullValue())); assertThat(materialInstance.getConfiguration(), is(JsonHelper.toJsonString(material))); }
@Test public void shouldCorrectlyCheckIfUpgradeIsNecessary() { PackageMaterial material = MaterialsMother.packageMaterial("repo-id", "repo-name", "pkg-id", "pkg-name", ConfigurationPropertyMother.create("key1", false, "value1")); PackageMaterialInstance materialInstance = (PackageMaterialInstance) material.createMaterialInstance(); materialInstance.setId(10L); PackageMaterialInstance materialInstanceCopy = (PackageMaterialInstance) material.createMaterialInstance(); material.getPackageDefinition().getConfiguration().add(ConfigurationPropertyMother.create("key2", false, "value2")); PackageMaterialInstance newMaterialInstance = (PackageMaterialInstance) material.createMaterialInstance(); assertThat(materialInstance.shouldUpgradeTo(materialInstanceCopy), is(false)); assertThat(materialInstance.shouldUpgradeTo(newMaterialInstance), is(true)); }
@Override public Material toOldMaterial(String name, String folder, String password) { PackageMaterial packageMaterial = JsonHelper.fromJson(configuration, PackageMaterial.class); packageMaterial.setName(new CaseInsensitiveString(name)); packageMaterial.setId(id); packageMaterial.setFingerprint(getFingerprint()); return packageMaterial; }
@Test public void shouldGetLatestModificationsForPackageMaterial() { Date timestamp = new Date(); String revisionString = "123"; HashMap<String, String> data = new HashMap<>(); data.put("1", "one"); data.put("2", "two"); Modification modification = new Modification(null, null, null, timestamp, revisionString, JsonHelper.toJsonString(data)); Modifications modifications = new Modifications(modification); Revision revision = modifications.latestRevision(new PackageMaterial()); assertThat(revision instanceof PackageMaterialRevision, is(true)); PackageMaterialRevision packageMaterialRevision = (PackageMaterialRevision) revision; assertThat(packageMaterialRevision.getRevision(), is(revisionString)); assertThat(packageMaterialRevision.getTimestamp(), is(timestamp)); assertThat(packageMaterialRevision.getData().size(), is(data.size())); assertThat(packageMaterialRevision.getData().get("1"), is(data.get("1"))); assertThat(packageMaterialRevision.getData().get("2"), is(data.get("2"))); }
@Test public void shouldConvertMaterialInstanceToMaterial() { PackageMaterial material = MaterialsMother.packageMaterial(); PackageDefinition packageDefinition = material.getPackageDefinition(); PackageMaterialInstance materialInstance = new PackageMaterialInstance(JsonHelper.toJsonString(material), "flyweight"); materialInstance.setId(1L); PackageMaterial constructedMaterial = (PackageMaterial) materialInstance.toOldMaterial(null, null, null); assertThat(constructedMaterial.getPackageDefinition().getConfiguration(), is(packageDefinition.getConfiguration())); assertThat(constructedMaterial.getPackageDefinition().getRepository().getPluginConfiguration().getId(), is(packageDefinition.getRepository().getPluginConfiguration().getId())); assertThat(constructedMaterial.getPackageDefinition().getRepository().getConfiguration(), is(packageDefinition.getRepository().getConfiguration())); assertThat(constructedMaterial.getId(), is(1L)); }
@Test public void shouldGetJsonRepresentationForPackageMaterial() { PackageMaterial material = new PackageMaterial(); PackageRepository repository = create("repo-id", "repo-name", "pluginid", "version", new Configuration(ConfigurationPropertyMother.create("k1", false, "v1"))); material.setPackageDefinition(PackageDefinitionMother.create("p-id", "package-name", new Configuration(ConfigurationPropertyMother.create("k2", false, "v2")), repository)); Map<String, String> jsonMap = new LinkedHashMap<>(); material.toJson(jsonMap, new PackageMaterialRevision("rev123", new Date())); assertThat(jsonMap.get("scmType"), is("Package")); assertThat(jsonMap.get("materialName"), is("repo-name:package-name")); assertThat(jsonMap.get("action"), is("Modified")); assertThat(jsonMap.get("location"), is(material.getUriForDisplay())); }
public Revision latestRevision(Material material) { if (material instanceof SvnMaterial) { String revision = Modification.latestRevision(this).getRevision(); return new SubversionRevision(revision); } if (material instanceof DependencyMaterial) { Modification latestModification = this.get(0); String revision = latestModification.getRevision(); return DependencyMaterialRevision.create(revision, latestModification.getPipelineLabel()); } if (material instanceof PackageMaterial) { Modification latestModification = this.get(0); return new PackageMaterialRevision(latestModification.getRevision(), latestModification.getModifiedTime(), latestModification.getAdditionalDataMap()); } if (material instanceof PluggableSCMMaterial) { Modification latestModification = this.get(0); return new PluggableSCMMaterialRevision(latestModification.getRevision(), latestModification.getModifiedTime(), latestModification.getAdditionalDataMap()); } return Modification.latestRevision(this); }