diff -r bafc315294fd -r 7281bdf43c60 src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat Oct 17 20:06:14 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Thu Oct 22 11:06:15 2020 +0200 @@ -46,6 +46,7 @@ import java.sql.SQLException; import java.util.List; import java.util.NoSuchElementException; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -453,16 +454,28 @@ public ResponseType commitIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException { try { final var issue = new Issue(getParameter(req, Integer.class, "id").orElseThrow()); + final var componentId = getParameter(req, Integer.class, "component"); + final Component component; + if (componentId.isPresent()) { + component = dao.getComponentDao().find(componentId.get()); + } else { + component = null; + } issue.setProject(new Project(getParameter(req, Integer.class, "pid").orElseThrow())); getParameter(req, String.class, "category").map(IssueCategory::valueOf).ifPresent(issue::setCategory); getParameter(req, String.class, "status").map(IssueStatus::valueOf).ifPresent(issue::setStatus); issue.setSubject(getParameter(req, String.class, "subject").orElseThrow()); - getParameter(req, Integer.class, "assignee").map( - userid -> userid >= 0 ? new User(userid) : null + issue.setComponent(component); + getParameter(req, Integer.class, "assignee").map(userid -> { + if (userid >= 0) { + return new User(userid); + } else if (userid == -2) { + return Optional.ofNullable(component).map(Component::getLead).orElse(null); + } else { + return null; + } + } ).ifPresent(issue::setAssignee); - getParameter(req, Integer.class, "component").map( - cid -> cid >= 0 ? new Component(cid) : null - ).ifPresent(issue::setComponent); getParameter(req, String.class, "description").ifPresent(issue::setDescription); getParameter(req, Date.class, "eta").ifPresent(issue::setEta);