Refactor trailers

Trailes are no persons, they have a person.
This commit is contained in:
René Pfeuffer
2020-06-02 16:41:59 +02:00
parent 76f2722ff4
commit ad864787a7
10 changed files with 43 additions and 45 deletions

View File

@@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableSet;
import sonia.scm.plugin.Extension;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetTrailers;
import sonia.scm.repository.Person;
import sonia.scm.repository.Repository;
import sonia.scm.repository.Trailer;
@@ -79,7 +80,7 @@ public class ChangesetDescriptionTrailers implements ChangesetTrailers {
Matcher matcher = PERSON_PATTERN.matcher(person.trim());
if (matcher.matches()) {
MatchResult matchResult = matcher.toMatchResult();
return of(new Trailer(type, matchResult.group(2), matchResult.group(1)));
return of(new Trailer(type, new Person(matchResult.group(1), matchResult.group(2))));
} else {
return empty();
}

View File

@@ -29,12 +29,12 @@ import de.otto.edison.hal.Links;
import org.mapstruct.AfterMapping;
import org.mapstruct.Context;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.ObjectFactory;
import sonia.scm.repository.Branch;
import sonia.scm.repository.Changeset;
import sonia.scm.repository.ChangesetTrailers;
import sonia.scm.repository.Person;
import sonia.scm.repository.Repository;
import sonia.scm.repository.Tag;
import sonia.scm.repository.Trailer;
@@ -77,19 +77,18 @@ public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMa
@Inject
private Set<ChangesetTrailers> changesetTrailersSet;
// @Mapping(target = "attributes", ignore = true) // We do not map HAL attributes
// public abstract ChangesetDto map(Changeset changeset, @Context Repository repository);
abstract TrailerDto map(Trailer trailer);
abstract TrailerPersonDto map(Trailer trailer);
abstract PersonDto map(Person person);
@AfterMapping
void appendTrailerPersons(Changeset changeset, @MappingTarget ChangesetDto target, @Context Repository repository) {
List<TrailerPersonDto> collectedTrailers = new ArrayList<>();
List<TrailerDto> collectedTrailers = new ArrayList<>();
changesetTrailersSet.stream()
.flatMap(changesetTrailers -> changesetTrailers.getTrailers(repository, changeset).stream())
.map(this::map)
.forEach(collectedTrailers::add);
target.setTrailerPersons(collectedTrailers);
target.setTrailers(collectedTrailers);
}
@AfterMapping