@Test public void shouldTalkToPluginToGetLatestModificationSinceLastRevision() throws Exception { String flyweight = "flyweight"; SCMRevision previouslyKnownRevision = new SCMRevision(); when(jsonMessageHandler.requestMessageForLatestRevisionsSince(scmPropertyConfiguration, materialData, flyweight, previouslyKnownRevision)).thenReturn(requestBody); MaterialPollResult deserializedResponse = new MaterialPollResult(); when(jsonMessageHandler.responseMessageForLatestRevisionsSince(responseBody)).thenReturn(deserializedResponse); MaterialPollResult response = scmExtension.latestModificationSince(PLUGIN_ID, scmPropertyConfiguration, materialData, flyweight, previouslyKnownRevision); assertRequest(requestArgumentCaptor.getValue(), SCM_EXTENSION, "1.0", SCMExtension.REQUEST_LATEST_REVISIONS_SINCE, requestBody); verify(jsonMessageHandler).requestMessageForLatestRevisionsSince(scmPropertyConfiguration, materialData, flyweight, previouslyKnownRevision); verify(jsonMessageHandler).responseMessageForLatestRevisionsSince(responseBody); assertSame(response, deserializedResponse); }
@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); }