
iabudiab.maven.plugins.dependencytrack.cyclone.DiffUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dependency-track-maven-plugin Show documentation
Show all versions of dependency-track-maven-plugin Show documentation
Maven plugin for interacting with Dependency Track
package iabudiab.maven.plugins.dependencytrack.cyclone;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.cyclonedx.model.Bom;
import org.cyclonedx.model.Component;
public class DiffUtils {
public static DiffResult compute(Bom from, Bom to) {
Map> result = new HashMap<>();
List fromComponents = new ArrayList<>(from.getComponents());
List toComponents = new ArrayList<>(to.getComponents());
for (Component fromComponent : from.getComponents()) {
long count = toComponents.stream()
.filter(toComponent -> toComponent.getGroup().equals(fromComponent.getGroup()) &&
toComponent.getName().equals(fromComponent.getName()) &&
toComponent.getVersion().equals(fromComponent.getVersion()))
.count();
if (count > 0) {
String identifier = identifier(fromComponent);
if (!result.containsKey(identifier)) {
result.put(identifier, new DiffItem<>());
}
result.get(identifier).getUnchanged().add(fromComponent);
fromComponents.removeIf(component -> component.getGroup().equals(fromComponent.getGroup()) &&
component.getName().equals(fromComponent.getName())
&& component.getVersion().equals(fromComponent.getVersion()));
toComponents.removeIf(component -> component.getGroup().equals(fromComponent.getGroup()) &&
component.getName().equals(fromComponent.getName())
&& component.getVersion().equals(fromComponent.getVersion()));
}
}
for (Component component : toComponents) {
String identifier = identifier(component);
if (!result.containsKey(identifier)) {
result.put(identifier, new DiffItem<>());
}
result.get(identifier).getAdded().add(component);
}
for (Component component : fromComponents) {
String identifier = identifier(component);
if (!result.containsKey(identifier)) {
result.put(identifier, new DiffItem<>());
}
result.get(identifier).getRemoved().add(component);
}
return new DiffResult(result);
}
private static String identifier(Component component) {
String identifier = component.getGroup() + ":" + component.getName();
if (identifier.startsWith(":")) {
identifier = identifier.substring(1);
}
return identifier;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy