diff --git a/java/code/src/com/redhat/rhn/frontend/dto/OwnedErrata.java b/java/code/src/com/redhat/rhn/frontend/dto/OwnedErrata.java index 0454636631fc..c8d9f68cc12f 100644 --- a/java/code/src/com/redhat/rhn/frontend/dto/OwnedErrata.java +++ b/java/code/src/com/redhat/rhn/frontend/dto/OwnedErrata.java @@ -14,6 +14,8 @@ */ package com.redhat.rhn.frontend.dto; +import com.redhat.rhn.domain.errata.Errata; + import java.util.Date; /** @@ -25,6 +27,23 @@ public class OwnedErrata extends ErrataOverview { private String locallyModified; private Integer published; + /** + * Empty default Constructor + */ + public OwnedErrata() { + super(); + } + + /** + * Constructor from errata + * @param errataIn the errata + */ + public OwnedErrata(Errata errataIn) { + super(); + setId(errataIn.getId()); + setAdvisory(errataIn.getAdvisory()); + } + /** * @param locallyModifiedIn The locallyModified to set. */ diff --git a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java index 3a4616e71a96..9e74d248fb2e 100644 --- a/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java +++ b/java/code/src/com/redhat/rhn/manager/errata/ErrataManager.java @@ -307,8 +307,12 @@ public static void truncateErrata(Set srcErrata, Channel tgtChannel, Use Set filteredErrata = tgtErrata.stream().filter(e -> !(srcErrata.contains(e) || asCloned(e) .map(er -> srcErrata.contains(er.getOriginal())).orElse(false))) .collect(Collectors.toUnmodifiableSet()); - removeErratumAndPackagesFromChannel(filteredErrata, srcErrata, tgtChannel, user); + List emptyChannelErrata = filteredErrata.stream() + .filter(t -> t.getChannels().isEmpty()) + .map(OwnedErrata::new) + .collect(Collectors.toList()); + ErrataManager.deleteErrata(user, emptyChannelErrata); } private static Optional asCloned(Errata e) { @@ -637,9 +641,7 @@ private static void deleteErrata(User user, List erratas) { */ public static void deleteErratum(User user, Errata errata) { List eids = new ArrayList<>(); - OwnedErrata oErrata = new OwnedErrata(); - oErrata.setId(errata.getId()); - oErrata.setAdvisory(errata.getAdvisory()); + OwnedErrata oErrata = new OwnedErrata(errata); eids.add(oErrata); deleteErrata(user, eids); } diff --git a/java/spacewalk-java.changes.serpico.7427-cleanup-truncata-errata b/java/spacewalk-java.changes.serpico.7427-cleanup-truncata-errata new file mode 100644 index 000000000000..9903835b152e --- /dev/null +++ b/java/spacewalk-java.changes.serpico.7427-cleanup-truncata-errata @@ -0,0 +1,2 @@ +- ErrataManager.truncateErrata now tries to clean orphan erratas + at the end (erratas with no channel)