extract(Parameter[])   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 11
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 10
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
1
package com.hltech.pact.gen.domain.client.util;
2
3
import com.hltech.pact.gen.domain.client.model.Body;
4
import org.springframework.web.bind.annotation.RequestBody;
5
6
import java.lang.reflect.Parameter;
7
import java.util.Arrays;
8
9
public final class RequestBodyExtractor {
10
11
    private RequestBodyExtractor() {}
12
13
    public static Body extract(Parameter[] parameters) {
14
        Parameter responseParameter = Arrays.stream(parameters)
15
            .filter(RequestBodyExtractor::isRequestBody)
16
            .findFirst()
17
            .orElse(null);
18
19
        return Body.builder()
20
            .type(responseParameter != null ? responseParameter.getType() : null)
21
            .genericArgumentTypes(TypeExtractor.extractParameterTypesFromType(
22
                responseParameter != null ? responseParameter.getParameterizedType() : null))
23
            .build();
24
    }
25
26
    private static boolean isRequestBody(Parameter parameter) {
27
        return parameter.getAnnotations().length == 0
28
            || parameter.isAnnotationPresent(RequestBody.class);
29
    }
30
}
31