@Override protected void merge(Metadata recessive) { Snapshot snapshot; String lastUpdated; if (metadata.getVersioning() == null) { DateFormat utcDateFormatter = new SimpleDateFormat("yyyyMMdd.HHmmss"); utcDateFormatter.setCalendar(new GregorianCalendar()); utcDateFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); snapshot = new Snapshot(); snapshot.setBuildNumber(getBuildNumber(recessive) + 1); snapshot.setTimestamp(utcDateFormatter.format(new Date())); Versioning versioning = new Versioning(); versioning.setSnapshot(snapshot); versioning.setLastUpdated(snapshot.getTimestamp().replace(".", "")); lastUpdated = versioning.getLastUpdated(); metadata.setVersioning(versioning); } else { snapshot = metadata.getVersioning().getSnapshot(); lastUpdated = metadata.getVersioning().getLastUpdated(); } for (Artifact artifact : artifacts) { String version = artifact.getVersion(); if (version.endsWith(SNAPSHOT)) { String qualifier = snapshot.getTimestamp() + '-' + snapshot.getBuildNumber(); version = version.substring(0, version.length() - SNAPSHOT.length()) + qualifier; } SnapshotVersion sv = new SnapshotVersion(); sv.setClassifier(artifact.getClassifier()); sv.setExtension(artifact.getExtension()); sv.setVersion(version); sv.setUpdated(lastUpdated); versions.put(getKey(sv.getClassifier(), sv.getExtension()), sv); } artifacts.clear(); Versioning versioning = recessive.getVersioning(); if (versioning != null) { for (SnapshotVersion sv : versioning.getSnapshotVersions()) { String key = getKey(sv.getClassifier(), sv.getExtension()); if (!versions.containsKey(key)) { versions.put(key, sv); } } } if (!legacyFormat) { metadata.getVersioning().setSnapshotVersions(new ArrayList<>(versions.values())); } }
public static SnapshotVersion searchForEquivalent( SnapshotVersion source, List<SnapshotVersion> list) { for (SnapshotVersion equivalent : list) { if (StringUtils.equals(source.getExtension(), equivalent.getExtension()) && ((StringUtils.isEmpty(source.getClassifier()) && StringUtils.isEmpty(equivalent.getClassifier())) || StringUtils.equals(source.getClassifier(), equivalent.getClassifier()))) { return equivalent; } } return null; }