From 0bbf8860ffd8936fc622367a90f2f1e034976949 Mon Sep 17 00:00:00 2001 From: Hammy Date: Sun, 13 Jun 2021 00:49:00 +0100 Subject: [PATCH] Add APIUtils.java for utility methods to be used by APIWrapper.java --- src/main/java/me/goudham/APIUtils.java | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/me/goudham/APIUtils.java diff --git a/src/main/java/me/goudham/APIUtils.java b/src/main/java/me/goudham/APIUtils.java new file mode 100644 index 0000000..f0b7566 --- /dev/null +++ b/src/main/java/me/goudham/APIUtils.java @@ -0,0 +1,35 @@ +package me.goudham; + +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.type.TypeFactory; +import me.goudham.domain.pagination.PaginationData; +import me.goudham.domain.series.Series; +import me.goudham.domain.waifu.Waifu; + +import java.util.List; + +/** + * Includes helper methods to use within {@link APIWrapper} + * + */ +class APIUtils { + + /** + * @param model The actual class of the given model. E.g {@link Waifu#getClass()} + * @param The type of model to be returned. E.g {@link Waifu} or {@link Series} + * @return {@link JavaType} of {@link List} + * + */ + static JavaType listOf(Class model) { + return TypeFactory.defaultInstance().constructCollectionType(List.class, model); + } + + /** + * @param model The actual class of the given model. E.g {@link Waifu#getClass()} + * @param The type of model to be returned. E.g {@link Waifu} or {@link Series} + * @return {@link JavaType} of {@link PaginationData} + */ + static JavaType paginationData(Class model) { + return TypeFactory.defaultInstance().constructParametricType(PaginationData.class, model); + } +}