com.hltech.pact.gen.domain.client.util.RequestBodyExtractor   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 20
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A isRequestBody(Parameter) 0 3 1
A extract(Parameter[]) 0 11 3
A RequestBodyExtractor() 0 1 1
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