@Override public Map<String, Object> getAttributes(boolean addSecureFields) { Map<String, Object> materialMap = new HashMap<>(); materialMap.put("type", "scm"); materialMap.put("plugin-id", getPluginId()); Map<String, String> configurationMap = scmConfig.getConfiguration().getConfigurationAsMap(addSecureFields); materialMap.put("scm-configuration", configurationMap); return materialMap; }
@Override public void checkout(PluggableSCMMaterial material, File baseDir, Revision revision, SubprocessExecutionContext execCtx) { SCMPropertyConfiguration scmPropertyConfiguration = buildSCMPropertyConfigurations(material.getScmConfig()); MaterialInstance materialInstance = materialRepository.findMaterialInstance(material); PluggableSCMMaterialRevision pluggableSCMMaterialRevision = (PluggableSCMMaterialRevision) revision; SCMRevision scmRevision = new SCMRevision( pluggableSCMMaterialRevision.getRevision(), pluggableSCMMaterialRevision.getTimestamp(), null, null, pluggableSCMMaterialRevision.getData(), null); Result result = scmExtension.checkout(material.getPluginId(), scmPropertyConfiguration, baseDir.getAbsolutePath(), scmRevision); if(!result.isSuccessful()) throw new RuntimeException("Failed to perform checkout on pluggable SCM"); }
@Override public List<Modification> latestModification(final PluggableSCMMaterial material, File baseDir, SubprocessExecutionContext execCtx) { SCMPropertyConfiguration scmPropertyConfiguration = buildSCMPropertyConfigurations(material.getScmConfig()); final MaterialInstance materialInstance = materialRepository.findMaterialInstance(material); MaterialPollResult pollResult = scmExtension.getLatestRevision(material.getPluginId(), scmPropertyConfiguration, materialInstance.getAdditionalDataMap(), baseDir.getAbsolutePath()); final Map<String, String> materialData = pollResult.getMaterialData(); if (materialInstance.requiresUpdate(materialData)) { updateAdditionalData(materialInstance.getId(), materialData); } SCMRevision scmRevision = pollResult.getLatestRevision(); return scmRevision == null ? new Modifications() : new Modifications(getModification(scmRevision)); }
@Test public void shouldReturnSomethingMoreSaneForToString() throws Exception { PluggableSCMMaterial material = MaterialsMother.pluggableSCMMaterial(); SCMMetadataStore.getInstance().addMetadataFor(material.getPluginId(), new SCMConfigurations(), null); assertThat(material.toString(), is("'PluggableSCMMaterial{[k1=v1, k2=v2]}'")); }
@Override public List<Modification> modificationsSince(final PluggableSCMMaterial material, File baseDir, final Revision revision, SubprocessExecutionContext execCtx) { SCMPropertyConfiguration scmPropertyConfiguration = buildSCMPropertyConfigurations(material.getScmConfig()); MaterialInstance materialInstance = materialRepository.findMaterialInstance(material); PluggableSCMMaterialRevision pluggableSCMMaterialRevision = (PluggableSCMMaterialRevision) revision; SCMRevision previouslyKnownRevision = new SCMRevision(pluggableSCMMaterialRevision.getRevision(), pluggableSCMMaterialRevision.getTimestamp(), null, null, pluggableSCMMaterialRevision.getData(), null); MaterialPollResult pollResult = scmExtension.latestModificationSince(material.getPluginId(), scmPropertyConfiguration, materialInstance.getAdditionalDataMap(), baseDir.getAbsolutePath(), previouslyKnownRevision); final Map<String, String> materialData = pollResult.getMaterialData(); if (materialInstance.requiresUpdate(materialData)) { updateAdditionalData(materialInstance.getId(), materialData); } List<SCMRevision> scmRevisions = pollResult.getRevisions(); return getModifications(scmRevisions); }