public MaterialInstance findOrCreateFrom(Material material) { String cacheKey = materialKey(material); synchronized (cacheKey) { MaterialInstance materialInstance = findMaterialInstance(material); if (materialInstance == null) { LOGGER.debug("Material instance for material '{}' not found in the database, creating a new instance now.", material); materialInstance = material.createMaterialInstance(); saveOrUpdate(materialInstance); } return materialInstance; } }
@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 void insertLatestOrNewModifications(final Material material, MaterialInstance materialInstance, File folder, Modifications list) { final PluggableSCMMaterialInstance currentMaterialInstance = (PluggableSCMMaterialInstance) materialInstance; final PluggableSCMMaterialInstance latestMaterialInstance = (PluggableSCMMaterialInstance) material.createMaterialInstance(); if (currentMaterialInstance.shouldUpgradeTo(latestMaterialInstance)) { transactionTemplate.execute((TransactionCallback) transactionStatus -> { PluggableSCMMaterialInstance materialInstance1 = (PluggableSCMMaterialInstance) materialRepository.find(currentMaterialInstance.getId()); materialInstance1.upgradeTo(latestMaterialInstance); materialRepository.saveOrUpdate(materialInstance1); return materialInstance1; }); } scmMaterialUpdater.insertLatestOrNewModifications(material, currentMaterialInstance, folder, list); }
@Theory public void shouldBeSameObject_WhenConversionIsDoneFromMaterialToMaterialInstanceAndBack(MaterialConfig materialConfig) throws Exception { Material material = materialConfigConverter.toMaterial(materialConfig); MaterialInstance materialInstance = material.createMaterialInstance(); Material materialConvertedBackFromInstance = materialInstance.toOldMaterial(materialConfig.getName().toString(), materialConfig.getFolder(), "pass"); assertTrue(message("Material <-> MaterialInstance conversion failed.", material, materialConvertedBackFromInstance), reflectionEquals(material, materialConvertedBackFromInstance, fieldsWhichShouldBeIgnoredWhenSavedInDbAndGotBack.get(materialConfig.getClass()))); assertThat(materialInstance.getFingerprint(), is(material.getFingerprint())); assertThat(materialConvertedBackFromInstance.getFingerprint(), is(materialInstance.getFingerprint())); assertPasswordIsCorrect(material); assertPasswordIsCorrect(materialConvertedBackFromInstance); }