Skip to content

Commit

Permalink
[MNG-8106] Fix metadata merge (#1481)
Browse files Browse the repository at this point in the history
As currently if given metadata serves multiple roles (G, A or V level), data loss occurs.

---

https://issues.apache.org/jira/browse/MNG-8106
  • Loading branch information
cstamas committed Apr 25, 2024
1 parent 31d2dc1 commit 854589b
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ protected void merge(Metadata recessive) {

metadata = metadata.withVersioning(metadata.getVersioning().withSnapshotVersions(versions.values()));

// just carry-on as-is
if (recessive.getPlugins() != null && !recessive.getPlugins().isEmpty()) {
metadata = metadata.withPlugins(new ArrayList<>(recessive.getPlugins()));
}

artifacts.clear();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,16 @@ private static Metadata createRepositoryMetadata(PluginInfo pluginInfo) {
protected void merge(Metadata recessive) {
List<Plugin> recessivePlugins = recessive.getPlugins();
List<Plugin> plugins = metadata.getPlugins();
if (!plugins.isEmpty()) {
if (!recessivePlugins.isEmpty() || !plugins.isEmpty()) {
LinkedHashMap<String, Plugin> mergedPlugins = new LinkedHashMap<>();
recessivePlugins.forEach(p -> mergedPlugins.put(p.getPrefix(), p));
plugins.forEach(p -> mergedPlugins.put(p.getPrefix(), p));
metadata = metadata.withPlugins(mergedPlugins.values());
}
// just carry-on as-is
if (recessive.getVersioning() != null) {
metadata = metadata.withVersioning(recessive.getVersioning());
}
}

@Deprecated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.nio.file.Path;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.LinkedHashMap;
Expand Down Expand Up @@ -130,6 +131,11 @@ protected void merge(Metadata recessive) {
}

metadata = metadata.withVersioning(metadata.getVersioning().withSnapshotVersions(versions.values()));

// just carry-on as-is
if (recessive.getPlugins() != null && !recessive.getPlugins().isEmpty()) {
metadata = metadata.withPlugins(new ArrayList<>(recessive.getPlugins()));
}
}

private static int getBuildNumber(Metadata metadata) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ protected void merge(Metadata recessive) {
}

metadata = metadata.withVersioning(versioning.build());

// just carry-on as-is
if (recessive.getPlugins() != null && !recessive.getPlugins().isEmpty()) {
metadata = metadata.withPlugins(new ArrayList<>(recessive.getPlugins()));
}
}

public Object getKey() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ protected void merge(Metadata recessive) {

metadata.getVersioning().setSnapshotVersions(new ArrayList<>(versions.values()));

// just carry-on as-is
if (!recessive.getPlugins().isEmpty()) {
metadata.setPlugins(new ArrayList<>(recessive.getPlugins()));
}

artifacts.clear();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,17 @@ private static Metadata createRepositoryMetadata(PluginInfo pluginInfo) {
protected void merge(Metadata recessive) {
List<Plugin> recessivePlugins = recessive.getPlugins();
List<Plugin> plugins = metadata.getPlugins();
if (!plugins.isEmpty()) {
if (!recessivePlugins.isEmpty() || !plugins.isEmpty()) {
LinkedHashMap<String, Plugin> mergedPlugins = new LinkedHashMap<>();
recessivePlugins.forEach(p -> mergedPlugins.put(p.getPrefix(), p));
plugins.forEach(p -> mergedPlugins.put(p.getPrefix(), p));
metadata.setPlugins(new ArrayList<>(mergedPlugins.values()));
}

// just carry-on as-is
if (recessive.getVersioning() != null) {
metadata.setVersioning(recessive.getVersioning());
}
}

@Deprecated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ protected void merge(Metadata recessive) {
}

metadata.getVersioning().setSnapshotVersions(new ArrayList<>(versions.values()));

// just carry-on as-is
if (!recessive.getPlugins().isEmpty()) {
metadata.setPlugins(new ArrayList<>(recessive.getPlugins()));
}
}

private static int getBuildNumber(Metadata metadata) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ protected void merge(Metadata recessive) {
versions.addAll(versioning.getVersions());
versioning.setVersions(new ArrayList<>(versions));
}

// just carry-on as-is
if (!recessive.getPlugins().isEmpty()) {
metadata.setPlugins(new ArrayList<>(recessive.getPlugins()));
}
}

public Object getKey() {
Expand Down

0 comments on commit 854589b

Please sign in to comment.