diff --git a/src/main/java/com/kttdevelopment/mal4j/APICall.java b/src/main/java/com/kttdevelopment/mal4j/APICall.java index 62937344..180fa39f 100644 --- a/src/main/java/com/kttdevelopment/mal4j/APICall.java +++ b/src/main/java/com/kttdevelopment/mal4j/APICall.java @@ -232,9 +232,15 @@ private static class JDK11 { if(!useNetHttp) try{ - final Field methods = HttpURLConnection.class.getDeclaredField("methods"); + Field methods; + + try{ + methods = HttpURLConnection.class.getDeclaredField("methods"); + }catch(final NoSuchFieldException ignored){ // fix Google randomly breaking code for no reason + //noinspection JavaReflectionMemberAccess + methods = HttpURLConnection.class.getDeclaredField("PERMITTED_USER_METHODS"); + } - // allow variable modification Field modifiers; try{ modifiers = Field.class.getDeclaredField("modifiers"); diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListImpl.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListImpl.java index 57af4acd..ea48407c 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListImpl.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListImpl.java @@ -856,7 +856,7 @@ private static String toCommaSeparatedString(final String... fields){ private static final String inverted = "^%s$|^%s(?=,)|(?<=\\w)\\{%s}|(?:^|,)%s\\{.*?}|,%s|(?<=\\{)%s,"; private static String convertFields(final String defaultFields, final List fields){ - return convertFields(defaultFields, fields.toArray(new String[0])); + return convertFields(defaultFields, fields == null ? null : fields.toArray(new String[0])); } /** diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema.java index 8857cda9..3e070c1e 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema.java @@ -30,15 +30,6 @@ @SuppressWarnings("unused") abstract class MyAnimeListSchema { - protected static R[] copyArray(final R[] array, final Class Class){ - if(array == null) return null; - - @SuppressWarnings("unchecked") - final R[] cp = (R[]) Array.newInstance(Class, array.length); - System.arraycopy(array, 0, cp, 0, array.length); - return cp; - } - protected static R[] adaptList(final JsonObject[] list, final Function adapter, final Class Class){ if(list == null) return null; diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Anime.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Anime.java index 8dc6e0a8..dcd4ae68 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Anime.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Anime.java @@ -371,7 +371,7 @@ public final NSFW getNSFW() { @Override public final Genre[] getGenres() { - return copyArray(genres, Genre.class); + return genres != null ? Arrays.copyOf(genres, genres.length) : null; } @Override @@ -441,12 +441,12 @@ public final AnimeRating getRating() { @Override public final Studio[] getStudios() { - return copyArray(studios, Studio.class); + return studios != null ? Arrays.copyOf(studios, studios.length) : null; } @Override public final Picture[] getPictures() { - return copyArray(pictures, Picture.class); + return pictures != null ? Arrays.copyOf(pictures, pictures.length) : null; } @Override @@ -456,17 +456,17 @@ public final String getBackground() { @Override public final RelatedAnime[] getRelatedAnime() { - return copyArray(relatedAnime, RelatedAnime.class); + return relatedAnime != null ? Arrays.copyOf(relatedAnime, relatedAnime.length) : null; } @Override public final RelatedManga[] getRelatedManga() { - return copyArray(relatedManga, RelatedManga.class); + return relatedManga != null ? Arrays.copyOf(relatedManga, relatedManga.length) : null; } @Override public final AnimeRecommendation[] getRecommendations() { - return copyArray(recommendations, AnimeRecommendation.class); + return recommendations != null ? Arrays.copyOf(recommendations, recommendations.length) : null; } @Override @@ -476,12 +476,12 @@ public final AnimeStatistics getStatistics() { @Override public final OpeningTheme[] getOpeningThemes(){ - return copyArray(openingThemes, OpeningTheme.class); + return openingThemes != null ? Arrays.copyOf(openingThemes, openingThemes.length) : null; } @Override public final EndingTheme[] getEndingThemes(){ - return copyArray(endingThemes, EndingTheme.class); + return endingThemes != null ? Arrays.copyOf(endingThemes, endingThemes.length) : null; } // additional methods @@ -588,7 +588,7 @@ public final Priority getPriority() { @Override public final String[] getTags() { - return copyArray(tags, String.class); + return tags != null ? Arrays.copyOf(tags, tags.length) : null; } @Override @@ -767,7 +767,7 @@ public final NSFW getNSFW() { @Override public final Genre[] getGenres() { - return copyArray(genres, Genre.class); + return genres != null ? Arrays.copyOf(genres, genres.length) : null; } @Override @@ -837,7 +837,7 @@ public final AnimeRating getRating() { @Override public final Studio[] getStudios() { - return copyArray(studios, Studio.class); + return studios != null ? Arrays.copyOf(studios, studios.length) : null; } // additional methods diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Common.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Common.java index e8f7084c..00b9da67 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Common.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Common.java @@ -36,7 +36,7 @@ static AlternativeTitles asAlternativeTitles(final MyAnimeList mal, final Json.J @Override public final String[] getSynonyms() { - return copyArray(synonyms, String.class); + return synonyms != null ? Arrays.copyOf(synonyms, synonyms.length) : null; } @Override diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Forum.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Forum.java index 6b32583f..b231fc23 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Forum.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Forum.java @@ -191,7 +191,7 @@ public final Boolean isClosed() { @Override public final PollOption[] getOptions() { - return copyArray(options, PollOption.class); + return options != null ? Arrays.copyOf(options, options.length) : null; } // additional methods @@ -329,7 +329,7 @@ public final String getDescription() { @Override public final ForumSubBoard[] getSubBoards() { - return copyArray(subBoards, ForumSubBoard.class); + return subBoards != null ? Arrays.copyOf(subBoards, subBoards.length) : null; } // additional methods @@ -367,7 +367,7 @@ public final String getTitle() { @Override public final ForumBoard[] getForumBoards() { - return copyArray(forumBoards, ForumBoard.class); + return forumBoards != null ? Arrays.copyOf(forumBoards, forumBoards.length) : null; } // additional methods @@ -437,7 +437,7 @@ public final String getTitle() { @Override public final Post[] getPosts() { - return copyArray(posts, Post.class); + return posts != null ? Arrays.copyOf(posts, posts.length) : null; } @Override diff --git a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Manga.java b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Manga.java index 898f4233..bfc4ff60 100644 --- a/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Manga.java +++ b/src/main/java/com/kttdevelopment/mal4j/MyAnimeListSchema_Manga.java @@ -219,7 +219,7 @@ public final NSFW getNSFW() { @Override public final Genre[] getGenres() { - return copyArray(genres, Genre.class); + return genres != null ? Arrays.copyOf(genres, genres.length) : null; } @Override @@ -269,12 +269,12 @@ public final Integer getChapters() { @Override public final Author[] getAuthors() { - return copyArray(authors, Author.class); + return authors != null ? Arrays.copyOf(authors, authors.length) : null; } @Override public final Picture[] getPictures() { - return copyArray(pictures, Picture.class); + return pictures != null ? Arrays.copyOf(pictures, pictures.length) : null; } @Override @@ -284,22 +284,22 @@ public final String getBackground() { @Override public final RelatedAnime[] getRelatedAnime() { - return copyArray(relatedAnime, RelatedAnime.class); + return relatedAnime != null ? Arrays.copyOf(relatedAnime, relatedAnime.length) : null; } @Override public final RelatedManga[] getRelatedManga() { - return copyArray(relatedManga, RelatedManga.class); + return relatedManga != null ? Arrays.copyOf(relatedManga, relatedManga.length) : null; } @Override public final MangaRecommendation[] getRecommendations() { - return copyArray(recommendations, MangaRecommendation.class); + return recommendations != null ? Arrays.copyOf(recommendations, recommendations.length) : null; } @Override public final Publisher[] getSerialization() { - return copyArray(serialization, Publisher.class); + return serialization != null ? Arrays.copyOf(serialization, serialization.length) : null; } // additional methods @@ -400,7 +400,7 @@ public final Priority getPriority() { @Override public final String[] getTags() { - return copyArray(tags, String.class); + return tags != null ? Arrays.copyOf(tags, tags.length) : null; } @Override @@ -581,7 +581,7 @@ public final NSFW getNSFW() { @Override public final Genre[] getGenres() { - return copyArray(genres, Genre.class); + return genres != null ? Arrays.copyOf(genres, genres.length) : null; } @Override @@ -631,7 +631,7 @@ public final Integer getChapters() { @Override public final Author[] getAuthors() { - return copyArray(authors, Author.class); + return authors != null ? Arrays.copyOf(authors, authors.length) : null; } // additional methods diff --git a/src/main/java/com/kttdevelopment/mal4j/anime/property/time/Season.java b/src/main/java/com/kttdevelopment/mal4j/anime/property/time/Season.java index dc0b3e2b..68ba4965 100644 --- a/src/main/java/com/kttdevelopment/mal4j/anime/property/time/Season.java +++ b/src/main/java/com/kttdevelopment/mal4j/anime/property/time/Season.java @@ -51,9 +51,7 @@ public enum Season { * @since 1.0.0 */ public final String[] getMonths(){ - final String[] copy = new String[months.length]; - System.arraycopy(months, 0, copy, 0, months.length); - return copy; + return Arrays.copyOf(months, months.length); } /** diff --git a/src/test/java/com/kttdevelopment/mal4j/AnimeTests/TestUserAnimeListing.java b/src/test/java/com/kttdevelopment/mal4j/AnimeTests/TestUserAnimeListing.java index 824ecc68..fa71f09a 100644 --- a/src/test/java/com/kttdevelopment/mal4j/AnimeTests/TestUserAnimeListing.java +++ b/src/test/java/com/kttdevelopment/mal4j/AnimeTests/TestUserAnimeListing.java @@ -23,6 +23,7 @@ public void testStatus(){ mal.getUserAnimeListing() .withStatus(AnimeStatus.Dropped) .withFields(Fields.Anime.list_status) + .withLimit(1) .search(); Assertions.assertEquals(AnimeStatus.Dropped, list.get(0).getStatus()); } @@ -33,6 +34,7 @@ public void testSort(){ mal.getUserAnimeListing() .sortBy(AnimeSort.UpdatedAt) .withFields(Fields.Anime.list_status) + .withLimit(2) .search(); Assertions.assertTrue(list.get(0).getUpdatedAt().getTime() > list.get(1).getUpdatedAt().getTime()); }