Skip to content

Commit 67c194b

Browse files
authored
Merge pull request #19 from aboutbits/rework-meta
rework response and meta objects
2 parents 10212a0 + 3d15445 commit 67c194b

8 files changed

Lines changed: 146 additions & 37 deletions

File tree

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package it.aboutbits.springboot.toolbox.web.response;
22

3+
import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
34
import lombok.NonNull;
45

5-
public record ItemResponse<T>(@NonNull T data) {
6+
public final class ItemResponse<T> extends ItemResponseWithMeta<T, Meta.EmptyMeta> {
7+
public ItemResponse(@NonNull T data) {
8+
super(data, new Meta.EmptyMeta());
9+
}
610
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package it.aboutbits.springboot.toolbox.web.response;
2+
3+
import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
import lombok.NonNull;
7+
8+
@Getter
9+
@EqualsAndHashCode
10+
public class ItemResponseWithMeta<T, M extends Meta> {
11+
private final T data;
12+
private final M meta;
13+
14+
public ItemResponseWithMeta(@NonNull T data, @NonNull M meta) {
15+
this.data = data;
16+
this.meta = meta;
17+
}
18+
19+
public T data() {
20+
return data;
21+
}
22+
23+
public M meta() {
24+
return meta;
25+
}
26+
}
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package it.aboutbits.springboot.toolbox.web.response;
22

3+
import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
34
import lombok.NonNull;
45

56
import java.util.List;
67

7-
public record ListResponse<T>(@NonNull List<T> data) {
8+
public final class ListResponse<T> extends ListResponseWithMeta<T, Meta.EmptyMeta> {
9+
public ListResponse(@NonNull List<T> data) {
10+
super(data, new Meta.EmptyMeta());
11+
}
812
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package it.aboutbits.springboot.toolbox.web.response;
2+
3+
import it.aboutbits.springboot.toolbox.web.response.meta.Meta;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
import lombok.NonNull;
7+
8+
import java.util.List;
9+
10+
@Getter
11+
@EqualsAndHashCode
12+
public class ListResponseWithMeta<T, M extends Meta> {
13+
private final List<T> data;
14+
private final M meta;
15+
16+
public ListResponseWithMeta(@NonNull List<T> data, @NonNull M meta) {
17+
this.data = data;
18+
this.meta = meta;
19+
}
20+
21+
public List<T> data() {
22+
return data;
23+
}
24+
25+
public M meta() {
26+
return meta;
27+
}
28+
}
Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
package it.aboutbits.springboot.toolbox.web.response;
22

3+
import it.aboutbits.springboot.toolbox.web.response.meta.MetaWithPagination;
34
import lombok.NonNull;
45
import org.springframework.data.domain.Page;
56

67
import java.util.List;
78
import java.util.function.Function;
89

9-
public record PagedResponse<T>(
10-
@NonNull
11-
List<T> data,
12-
@NonNull
13-
MetaWithPagination meta
14-
) {
10+
public final class PagedResponse<T> extends PagedResponseWithMeta<T, MetaWithPagination> {
11+
12+
public PagedResponse(@NonNull List<T> data, @NonNull MetaWithPagination meta) {
13+
super(data, meta);
14+
}
1515

1616
public static <T> PagedResponse<T> of(@NonNull Page<T> page) {
1717
return new PagedResponse<>(
1818
page.getContent(),
19-
new MetaWithPagination(
20-
new MetaWithPagination.Pagination(
21-
page.getNumber(),
22-
page.getSize(),
23-
page.getTotalElements()
24-
)
25-
)
19+
MetaWithPagination.of(page)
2620
);
2721
}
2822

@@ -31,28 +25,7 @@ public static <I, O> PagedResponse<O> of(@NonNull Page<I> page, @NonNull Functio
3125

3226
return new PagedResponse<>(
3327
mapped.getContent(),
34-
new MetaWithPagination(
35-
new MetaWithPagination.Pagination(
36-
mapped.getNumber(),
37-
mapped.getSize(),
38-
mapped.getTotalElements()
39-
)
40-
)
28+
MetaWithPagination.of(page)
4129
);
4230
}
43-
44-
public record MetaWithPagination(
45-
@NonNull
46-
Pagination pagination
47-
) {
48-
public record Pagination(long page, int size, long totalElements) {
49-
public static Pagination of(@NonNull Page<?> page) {
50-
return new Pagination(
51-
page.getNumber(),
52-
page.getSize(),
53-
page.getTotalElements()
54-
);
55-
}
56-
}
57-
}
5831
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package it.aboutbits.springboot.toolbox.web.response;
2+
3+
import it.aboutbits.springboot.toolbox.web.response.meta.MetaWithPagination;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
import lombok.NonNull;
7+
8+
import java.util.List;
9+
10+
@Getter
11+
@EqualsAndHashCode
12+
public class PagedResponseWithMeta<T, M extends MetaWithPagination> {
13+
private final List<T> data;
14+
private final M meta;
15+
16+
public PagedResponseWithMeta(@NonNull List<T> data, @NonNull M meta) {
17+
this.data = data;
18+
this.meta = meta;
19+
}
20+
21+
public List<T> data() {
22+
return data;
23+
}
24+
25+
public M meta() {
26+
return meta;
27+
}
28+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package it.aboutbits.springboot.toolbox.web.response.meta;
2+
3+
public interface Meta {
4+
record EmptyMeta() implements Meta {
5+
}
6+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package it.aboutbits.springboot.toolbox.web.response.meta;
2+
3+
import lombok.EqualsAndHashCode;
4+
import lombok.Getter;
5+
import lombok.NonNull;
6+
import org.springframework.data.domain.Page;
7+
8+
@Getter
9+
@EqualsAndHashCode
10+
public class MetaWithPagination implements Meta {
11+
private final Pagination pagination;
12+
13+
public MetaWithPagination(@NonNull Pagination pagination) {
14+
this.pagination = pagination;
15+
}
16+
17+
public Pagination pagination() {
18+
return pagination;
19+
}
20+
21+
public static MetaWithPagination of(@NonNull Page<?> page) {
22+
return new MetaWithPagination(
23+
new MetaWithPagination.Pagination(
24+
page.getNumber(),
25+
page.getSize(),
26+
page.getTotalElements()
27+
)
28+
);
29+
}
30+
31+
public record Pagination(long page, int size, long totalElements) {
32+
public static Pagination of(@NonNull Page<?> page) {
33+
return new Pagination(
34+
page.getNumber(),
35+
page.getSize(),
36+
page.getTotalElements()
37+
);
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)