diff --git a/gradle/changelog/error_with_ssh_signature.yaml b/gradle/changelog/error_with_ssh_signature.yaml new file mode 100644 index 0000000000..e94dcefda5 --- /dev/null +++ b/gradle/changelog/error_with_ssh_signature.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Internal server error for commits with SSH signatures diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java index 759ab18f30..ddebdc84c2 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java @@ -24,6 +24,7 @@ package sonia.scm.api.v2.resources; +import com.google.common.base.Strings; import de.otto.edison.hal.Embedded; import de.otto.edison.hal.Links; import jakarta.inject.Inject; @@ -51,9 +52,11 @@ import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; +import static com.google.common.base.Strings.emptyToNull; import static de.otto.edison.hal.Embedded.embeddedBuilder; import static de.otto.edison.hal.Link.link; import static de.otto.edison.hal.Links.linkingTo; +import static java.util.Optional.ofNullable; @Mapper public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMapper implements InstantAttributeMapper, ChangesetToChangesetDtoMapper { @@ -88,7 +91,7 @@ public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMa @ObjectFactory SignatureDto createDto(Signature signature) { - final Optional key = publicKeyStore.findById(signature.getKeyId()); + Optional key = ofNullable(emptyToNull(signature.getKeyId())).flatMap(publicKeyStore::findById); if (signature.getType().equals("gpg") && key.isPresent()) { final Links.Builder linkBuilder = linkingTo()