• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zalando / problem / #2092

pending completion
#2092

push

web-flow
Bump jacoco-maven-plugin from 0.8.7 to 0.8.8 (#386)

Bumps [jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.7 to 0.8.8.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.7...v0.8.8)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

375 of 375 relevant lines covered (100.0%)

1.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/problem-gson/src/main/java/org/zalando/problem/gson/CustomProblemAdapter.java
1
package org.zalando.problem.gson;
2

3
import com.google.gson.Gson;
4
import com.google.gson.JsonElement;
5
import com.google.gson.JsonObject;
6
import com.google.gson.TypeAdapter;
7
import com.google.gson.internal.Streams;
8
import com.google.gson.stream.JsonReader;
9
import com.google.gson.stream.JsonWriter;
10
import lombok.AllArgsConstructor;
11
import org.zalando.problem.AbstractThrowableProblem;
12

13
import java.io.IOException;
14
import java.net.URI;
15
import java.util.Optional;
16

17
import static java.util.Arrays.stream;
18

19
@AllArgsConstructor
1✔
20
final class CustomProblemAdapter<T> extends TypeAdapter<T> {
21

22
    private final Gson gson;
23
    private final TypeAdapter<T> delegate;
24
    private final boolean stackTraces;
25

26
    @Override
27
    public void write(final JsonWriter out, final T value) throws IOException {
28
        final JsonElement element = delegate.toJsonTree(value);
1✔
29
        final JsonObject object = element.getAsJsonObject();
1✔
30

31
        final URI problemType = URITypeAdapter.TYPE.fromJsonTree(object.remove("type"));
1✔
32
        object.add("type", URITypeAdapter.TYPE.toJsonTree(problemType));
1✔
33

34
        if (value instanceof AbstractThrowableProblem) {
1✔
35
            flattenParameters(object);
1✔
36
        }
37

38
        if (value instanceof Throwable) {
1✔
39
            // Get rid of unwanted fields.
40
            object.remove("detailMessage");
1✔
41
            object.remove("suppressedExceptions");
1✔
42
            object.remove("stackTrace");
1✔
43

44
            if (stackTraces) {
1✔
45
                object.add("stacktrace", gson.getAdapter(String[].class)
1✔
46
                        .toJsonTree(stream(((Throwable) value).getStackTrace())
1✔
47
                                .map(Object::toString)
1✔
48
                                .toArray(String[]::new)));
1✔
49
            }
50
        }
51

52
        Streams.write(element, out);
1✔
53
    }
1✔
54

55
    private void flattenParameters(final JsonObject object) {
56
        Optional.ofNullable(object.remove("parameters"))
1✔
57
                .map(JsonElement::getAsJsonObject)
1✔
58
                .ifPresent(params -> params.entrySet().forEach(e ->
1✔
59
                        object.add(e.getKey(), e.getValue())));
1✔
60
    }
1✔
61

62
    @Override
63
    public T read(final JsonReader in) throws IOException {
64
        return delegate.read(in);
1✔
65
    }
66

67
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc