### Question:
ChecksumGeneratorImpl implements ChecksumGenerator { protected String aggregateChecksums(final Map<String, String> checksums) { if (checksums.isEmpty()) { return null; } StringBuilder data = new StringBuilder(); for (Map.Entry<String, String> entry : checksums.entrySet()) { data.append(entry.getKey() + "=" + entry.getValue()); } return DigestUtils.sha1Hex(data.toString()); }  Map<String, String> generateChecksums(Session session, String path); Map<String, String> generateChecksums(Session session, String path, ChecksumGeneratorOptions options);  }### Answer:
@Test public void testAggregateChecksums() { Map<String, String> checksums = new LinkedHashMap<String, String>(); checksums.put("jcr:content/foo", "1234"); checksums.put("jcr:content/bar", "5678,9012"); String expected = DigestUtils.sha1Hex("jcr:content/foo=1234jcr:content/bar=5678,9012"); String actual = checksumGenerator.aggregateChecksums(checksums); assertEquals(expected, actual); }