diff --git a/CHANGELOG.md b/CHANGELOG.md index 792669f9..914abb49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Update to okhttp `5.3.2` - Requiring Java 21 - Remove implicit grant flow (see [blog post from Spotify](https://developer.spotify.com/blog/2025-10-14-reminder-oauth-migration-27-nov-2025)) +- Add JSpecify nullness annotations ## [4.3.2] - Remove `followers` property from `PlaylistUser` object diff --git a/pom.xml b/pom.xml index 0bfb48bb..b7cb5c71 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ 1.18.42 + 1.0.0 5.13.4 diff --git a/spotify-web-api-java-generator/pom.xml b/spotify-web-api-java-generator/pom.xml index 9eaa6266..73054803 100644 --- a/spotify-web-api-java-generator/pom.xml +++ b/spotify-web-api-java-generator/pom.xml @@ -31,6 +31,11 @@ + + org.jspecify + jspecify + ${jspecify.version} + io.swagger.parser.v3 swagger-parser diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/CLI.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/CLI.java index 3151a18e..e0ae8b0b 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/CLI.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/CLI.java @@ -32,7 +32,7 @@ public class CLI implements Runnable { boolean shouldClean = false; @Option(names = {"-p", "--package"}, required = true, description = "The Java package name") - String packageName = null; + String packageName; @Option(names = { "-h", "--help" }, usageHelp = true, description = "Print usage help") boolean helpRequested = false; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/JavaGenerator.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/JavaGenerator.java index d0af0ac6..0d62aba1 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/JavaGenerator.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/JavaGenerator.java @@ -6,7 +6,6 @@ import io.swagger.v3.oas.models.OpenAPI; import lombok.extern.slf4j.Slf4j; -import java.io.IOException; import java.nio.file.Path; @Slf4j @@ -17,7 +16,7 @@ public JavaGenerator() { this.mustacheFactory = new NoEscapingMustacheFactory(); } - public void generate(OpenAPI openAPI, Path outputDirectory, JavaPackage javaPackage) throws IOException, GeneratorException { + public void generate(OpenAPI openAPI, Path outputDirectory, JavaPackage javaPackage) throws GeneratorException { var generationContext = new GenerationContext(this.mustacheFactory, openAPI, javaPackage, outputDirectory); new BaseObjectGenerator(generationContext).generateBaseObject(); @@ -30,8 +29,7 @@ public void generate(OpenAPI openAPI, Path outputDirectory, JavaPackage javaPack EndpointSplitter.splitEndpoints(spotifyWebApi); - var apiTemplate = new ApiGenerator(generationContext); - apiTemplate.generateEndpoints(spotifyWebApi); + ApiGenerator.generateEndpoints(generationContext, spotifyWebApi); new SpotifyWebApiGenerator(generationContext).generate(); diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ApiGenerator.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ApiGenerator.java index be5bf9c8..26399635 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ApiGenerator.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ApiGenerator.java @@ -9,6 +9,7 @@ import de.sonallux.spotify.generator.java.util.JavaPackage; import de.sonallux.spotify.generator.java.util.JavaUtils; import de.sonallux.spotify.generator.java.util.Markdown2Html; +import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import java.util.*; @@ -17,16 +18,17 @@ import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; -@RequiredArgsConstructor +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) public class ApiGenerator { private final GenerationContext generationContext; - private JavaPackage apisJavaPackage; + private final JavaPackage apisJavaPackage; - public void generateEndpoints(SpotifyWebApi spotifyWebApi) { - apisJavaPackage = generationContext.childPackage("apis"); + public static void generateEndpoints(GenerationContext generationContext, SpotifyWebApi spotifyWebApi) { + final var apisJavaPackage = generationContext.childPackage("apis"); + final var apiGenerator = new ApiGenerator(generationContext, apisJavaPackage); - spotifyWebApi.getCategories().forEach(this::generateApiClasses); + spotifyWebApi.getCategories().forEach(apiGenerator::generateApiClasses); } private void generateApiClasses(ApiCategory category) { diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectGenerator.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectGenerator.java index 15457058..a8a387de 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectGenerator.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectGenerator.java @@ -10,6 +10,7 @@ import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.ObjectSchema; import io.swagger.v3.oas.models.media.Schema; +import org.jspecify.annotations.Nullable; import java.nio.file.Path; import java.util.HashMap; @@ -41,6 +42,7 @@ public ObjectGenerator(GenerationContext generationContext) { this.schemaNameToObjectName = new ConcurrentHashMap<>(); } + @Nullable public String getObjectNameForResponse(String responseName) { return responseNameToObjectName.get(responseName); } @@ -71,7 +73,7 @@ public void generateAllObjects() { * @param schema the OpenAPI schema * @return an object name to use for this schema */ - private String generateApiObject(String openApiName, Schema schema) { + private String generateApiObject(String openApiName, Schema schema) { if (schema.get$ref() != null) { var schemaName = OpenApiUtils.getSchemaName(schema.get$ref()); return getObjectNameOrGenerate(schemaName, generationContext.resolveSchema(schema.get$ref())); @@ -79,70 +81,72 @@ private String generateApiObject(String openApiName, Schema schema) { var objectName = getObjectNameFromSchemaName(openApiName); - if (schema instanceof ObjectSchema objectSchema) { - var apiObject = generateApiObject(objectSchema, objectName); - apiObject.setOpenApiName(openApiName); - return objectName; - } - if (schema instanceof ArraySchema arraySchema) { - var itemsSchema = arraySchema.getItems(); - var itemsType = JavaUtils.getTypeOfSchema(itemsSchema).orElse("Object"); - - return "java.util.List<" + itemsType + ">"; - } - if (schema instanceof ComposedSchema composedSchema) { - if (composedSchema.getAllOf() != null) { - var allOf = composedSchema.getAllOf(); - if (allOf.size() == 1) { - var ref = allOf.getFirst().get$ref(); - if (ref.equals("#/components/schemas/PagingObject")) { - var itemsSchema = (ArraySchema) composedSchema.getProperties().get("items"); - var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); - var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); - return "Paging<" + itemsObjectName + ">"; - } - - var referencedSchemaName = OpenApiUtils.getSchemaName(ref); - var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.getFirst()); - var apiObject = ApiObject.builder() + switch (schema) { + case ObjectSchema objectSchema -> { + var apiObject = generateApiObject(objectSchema, objectName); + apiObject.setOpenApiName(openApiName); + return objectName; + } + case ArraySchema arraySchema -> { + var itemsSchema = arraySchema.getItems(); + var itemsType = JavaUtils.getTypeOfSchema(itemsSchema).orElse("Object"); + return "java.util.List<" + itemsType + ">"; + } + case ComposedSchema composedSchema -> { + if (composedSchema.getAllOf() != null) { + var allOf = composedSchema.getAllOf(); + if (allOf.size() == 1) { + var ref = allOf.getFirst().get$ref(); + if (ref.equals("#/components/schemas/PagingObject")) { + var itemsSchema = (ArraySchema) composedSchema.getProperties().get("items"); + var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); + var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); + return "Paging<" + itemsObjectName + ">"; + } + + var referencedSchemaName = OpenApiUtils.getSchemaName(ref); + var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.getFirst()); + var apiObject = ApiObject.builder() .name(objectName) .openApiName(openApiName) .superClassName(referencedObjectName) .description(composedSchema.getDescription()) .build(); - this.schemaObjects.put(objectName, apiObject); - return objectName; - } - if (allOf.size() == 2) { - if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) { - var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items"); - var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); - var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); - return "Paging<" + itemsObjectName + ">"; - } - if (allOf.get(0).get$ref().equals("#/components/schemas/CursorPagingObject")) { - var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items"); - var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); - var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); - return "CursorPaging<" + itemsObjectName + ">"; - } - - if (allOf.get(1) instanceof ObjectSchema objectSchema) { - var referencedSchemaName = OpenApiUtils.getSchemaName(allOf.get(0).get$ref()); - var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.get(0)); - - var apiObject = generateApiObject(objectSchema, objectName); - apiObject.setDescription(composedSchema.getDescription()); - apiObject.setOpenApiName(openApiName); - apiObject.setSuperClassName(referencedObjectName); + this.schemaObjects.put(objectName, apiObject); return objectName; } + if (allOf.size() == 2) { + if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) { + var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items"); + var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); + var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); + return "Paging<" + itemsObjectName + ">"; + } + if (allOf.get(0).get$ref().equals("#/components/schemas/CursorPagingObject")) { + var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items"); + var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref()); + var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems()); + return "CursorPaging<" + itemsObjectName + ">"; + } + + if (allOf.get(1) instanceof ObjectSchema objectSchema) { + var referencedSchemaName = OpenApiUtils.getSchemaName(allOf.getFirst().get$ref()); + var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.getFirst()); + + var apiObject = generateApiObject(objectSchema, objectName); + apiObject.setDescription(composedSchema.getDescription()); + apiObject.setOpenApiName(openApiName); + apiObject.setSuperClassName(referencedObjectName); + return objectName; + } + } } + return objectName; + } + default -> { + return objectName; } } - - - return objectName; } private ApiObject generateApiObject(ObjectSchema objectSchema, String objectName) { @@ -180,7 +184,7 @@ private ApiObject.Property generateApiObjectProperty(String objectName, String n return new ApiObject.Property(name, type, resolvedSchema.getDescription()); } - private String getObjectNameOrGenerate(String openApiName, Schema schema) { + private String getObjectNameOrGenerate(String openApiName, Schema schema) { if (schemaNameToObjectName.containsKey(openApiName)) { return schemaNameToObjectName.get(openApiName); } @@ -260,7 +264,7 @@ private void fixContextForPaging(Map context) { )); } - private static String firstNonNull(String... strings) { + private static @Nullable String firstNonNull(@Nullable String... strings) { for (var s : strings) { if (s != null) { return s; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectModelCreator.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectModelCreator.java index 3241c9a0..e6d74796 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectModelCreator.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectModelCreator.java @@ -13,15 +13,16 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.responses.ApiResponse; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.Nullable; import java.util.function.Function; @RequiredArgsConstructor public class ObjectModelCreator { private final GenerationContext generationContext; - private final Function responseTypeMapper; + private final Function responseTypeMapper; - private SpotifyWebApi spotifyWebApi; + private SpotifyWebApi spotifyWebApi = new SpotifyWebApi(); public SpotifyWebApi createSpotifyWebApiModel(OpenAPI openAPI) { spotifyWebApi = new SpotifyWebApi(); diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/package-info.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/package-info.java new file mode 100644 index 00000000..ef8b9f78 --- /dev/null +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.generator.java.generators; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiEndpoint.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiEndpoint.java index 01612a4a..5f8184fa 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiEndpoint.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiEndpoint.java @@ -4,6 +4,7 @@ import de.sonallux.spotify.generator.java.util.Markdown2Html; import lombok.Getter; import lombok.Setter; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -25,7 +26,7 @@ public class ApiEndpoint { private final List optionalPathParameters; private final List optionalQueryParameters; private final List optionalBodyParameters; - private RawBodyParameter rawBodyParameter = null; + private @Nullable RawBodyParameter rawBodyParameter = null; public ApiEndpoint(String endpointId, String name, String description, String path, String httpMethod, String responseType, String responseDescription, List scopes, boolean deprecated) { this.endpointId = endpointId; @@ -72,7 +73,7 @@ public static class Parameter { private String type; private boolean commaSeparatedListType; private String description; - private String defaultValue; + private @Nullable String defaultValue; public Parameter(String name, String type, String description) { this.name = name; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiObject.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiObject.java index 5a063676..31d911fd 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiObject.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/ApiObject.java @@ -3,7 +3,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; -import lombok.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Comparator; import java.util.HashMap; @@ -17,11 +17,10 @@ public class ApiObject { /** * Name of the schema object from OpenAPI. Is null if this object is extracted from a complex OpenAPI schema */ - private String openApiName; - @NonNull + private @Nullable String openApiName; private String name; - private String description; - private String superClassName; + private @Nullable String description; + private @Nullable String superClassName; @Builder.Default private Map properties = new HashMap<>(); @@ -39,10 +38,9 @@ public List getPropertyList() { @Data @AllArgsConstructor public static class Property { - @NonNull private String name; - @NonNull private String type; + @Nullable private String description; } } diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/package-info.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/package-info.java new file mode 100644 index 00000000..4db2a099 --- /dev/null +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/model/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.generator.java.model; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/package-info.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/package-info.java new file mode 100644 index 00000000..3b38adc5 --- /dev/null +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.generator.java; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaPackage.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaPackage.java index 06eaa01c..0a1412bb 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaPackage.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaPackage.java @@ -3,6 +3,7 @@ import com.google.common.base.Preconditions; import com.google.common.base.Strings; import lombok.EqualsAndHashCode; +import org.jspecify.annotations.Nullable; import java.nio.file.Path; import java.util.Arrays; @@ -15,18 +16,18 @@ private JavaPackage(String... packageNames) { this.packageNames = packageNames; } - public static JavaPackage fromNames(String... packageNames) { + public static JavaPackage fromNames(@Nullable String... packageNames) { Preconditions.checkArgument(isValidJavaPackageName(packageNames), "Invalid java package"); return new JavaPackage(packageNames); } - public static JavaPackage fromPackage(String packageName) { + public static JavaPackage fromPackage(@Nullable String packageName) { Preconditions.checkArgument(packageName != null); var packageNames = packageName.split("\\."); return fromNames(packageNames); } - private static boolean isValidJavaPackageName(String[] packageNames) { + private static boolean isValidJavaPackageName(@Nullable String[] packageNames) { if (packageNames.length == 0) { return false; } diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaUtils.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaUtils.java index 442ee61d..8195d632 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaUtils.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaUtils.java @@ -8,6 +8,7 @@ import io.swagger.v3.oas.models.media.MapSchema; import io.swagger.v3.oas.models.media.Schema; import lombok.extern.slf4j.Slf4j; +import org.jspecify.annotations.Nullable; import java.util.Arrays; import java.util.List; @@ -140,22 +141,18 @@ public static Optional getTypeOfSchema(Schema schema) { // Resolve type of other composed schema via reference name return Optional.empty(); - - // Resolve type of other composed schema via reference name } - case MapSchema mapSchema -> { + case MapSchema ignored -> { return Optional.of("java.util.Map"); } default -> { + return Optional.empty(); } } - - // Type can not be resolved just by schema - return Optional.empty(); } public static String getCategoryName(Operation operation) { - return operation.getTags().get(0); + return operation.getTags().getFirst(); } public static String getCategoryClassName(String categoryName) { @@ -175,6 +172,6 @@ public static List getScopes(Operation operation) { if (security.isEmpty()) { return List.of(); } - return security.get(0).getOrDefault("oauth_2_0", List.of()); + return security.getFirst().getOrDefault("oauth_2_0", List.of()); } } diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/Markdown2Html.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/Markdown2Html.java index 0c182e79..90dd9c54 100644 --- a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/Markdown2Html.java +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/Markdown2Html.java @@ -7,7 +7,6 @@ import com.vladsch.flexmark.html.renderer.LinkStatus; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.util.data.MutableDataSet; -import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.List; @@ -23,7 +22,7 @@ public class Markdown2Html { var rendererOptions = new MutableDataSet(); HTML_RENDERER = HtmlRenderer.builder(rendererOptions).linkResolverFactory(new IndependentLinkResolverFactory() { @Override - public @NotNull LinkResolver apply(@NotNull LinkResolverBasicContext ctx) { + public LinkResolver apply(LinkResolverBasicContext ctx) { return SPOTIFY_LINK_RESOLVER; } }).build(); diff --git a/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/package-info.java b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/package-info.java new file mode 100644 index 00000000..b1837a88 --- /dev/null +++ b/spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.generator.java.util; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java-generator/src/main/resources/templates/api.mustache b/spotify-web-api-java-generator/src/main/resources/templates/api.mustache index 259a5170..3ff6b3a4 100644 --- a/spotify-web-api-java-generator/src/main/resources/templates/api.mustache +++ b/spotify-web-api-java-generator/src/main/resources/templates/api.mustache @@ -3,10 +3,12 @@ package {{package}}; import de.sonallux.spotify.api.http.ApiClient; import {{requestsPackage}}.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * {{name}} */ +@NullMarked @RequiredArgsConstructor public class {{className}} { private final ApiClient apiClient; diff --git a/spotify-web-api-java-generator/src/main/resources/templates/request.mustache b/spotify-web-api-java-generator/src/main/resources/templates/request.mustache index 15cc7186..1b735c6c 100644 --- a/spotify-web-api-java-generator/src/main/resources/templates/request.mustache +++ b/spotify-web-api-java-generator/src/main/resources/templates/request.mustache @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiCall; import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

{{name}}

@@ -22,6 +23,7 @@ import de.sonallux.spotify.api.models.*; * @deprecated see this blog post from Spotify {{/deprecated}} */ +@NullMarked public class {{className}} { private static final TypeReference<{{responseType}}> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java-generator/src/main/resources/templates/scope.mustache b/spotify-web-api-java-generator/src/main/resources/templates/scope.mustache index be068cae..de1d9492 100644 --- a/spotify-web-api-java-generator/src/main/resources/templates/scope.mustache +++ b/spotify-web-api-java-generator/src/main/resources/templates/scope.mustache @@ -1,8 +1,11 @@ package {{package}}; +import org.jspecify.annotations.NullMarked; + /** * Authorization Scopes */ +@NullMarked public enum {{className}} { {{#scopes}} /** diff --git a/spotify-web-api-java-generator/src/main/resources/templates/spotify-web-api.mustache b/spotify-web-api-java-generator/src/main/resources/templates/spotify-web-api.mustache index eecb46ba..e21e9733 100644 --- a/spotify-web-api-java-generator/src/main/resources/templates/spotify-web-api.mustache +++ b/spotify-web-api-java-generator/src/main/resources/templates/spotify-web-api.mustache @@ -4,8 +4,10 @@ import de.sonallux.spotify.api.apis.*; import de.sonallux.spotify.api.http.ApiClient; import lombok.Getter; import okhttp3.HttpUrl; +import org.jspecify.annotations.NullMarked; @Getter +@NullMarked public class SpotifyWebApi { public static final HttpUrl SPOTIFY_WEB_API_ENDPOINT = HttpUrl.get("{{endpointUrl}}"); diff --git a/spotify-web-api-java-generator/src/test/java/de/sonallux/spotify/generator/java/util/Markdown2HtmlTest.java b/spotify-web-api-java-generator/src/test/java/de/sonallux/spotify/generator/java/util/Markdown2HtmlTest.java index fd947029..0576cbf1 100644 --- a/spotify-web-api-java-generator/src/test/java/de/sonallux/spotify/generator/java/util/Markdown2HtmlTest.java +++ b/spotify-web-api-java-generator/src/test/java/de/sonallux/spotify/generator/java/util/Markdown2HtmlTest.java @@ -3,20 +3,21 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import java.util.List; public class Markdown2HtmlTest { - static List markdown2HtmlTestCases() { + static List markdown2HtmlTestCases() { return List.of( - new String[]{"[Test](/foo/bar)", "

Test

"}, - new String[]{"`playlist_id`", "

playlist_id

"}, - new String[]{"This is `playlist_id`, `uri`", "

This is playlist_id, uri

"}, - new String[]{"**Bold** is bolder", "

Bold is bolder

"}, - new String[]{"- foo\n- bar", "
  • foo
  • bar
"}, - new String[]{"Foo\n\nTest", "

Foo

Test

"} + Arguments.of("[Test](/foo/bar)", "

Test

"), + Arguments.of("`playlist_id`", "

playlist_id

"), + Arguments.of("This is `playlist_id`, `uri`", "

This is playlist_id, uri

"), + Arguments.of("**Bold** is bolder", "

Bold is bolder

"), + Arguments.of("- foo\n- bar", "
  • foo
  • bar
"), + Arguments.of("Foo\n\nTest", "

Foo

Test

") ); } diff --git a/spotify-web-api-java/pom.xml b/spotify-web-api-java/pom.xml index 1a1664f0..e6ff003c 100644 --- a/spotify-web-api-java/pom.xml +++ b/spotify-web-api-java/pom.xml @@ -46,6 +46,11 @@ + + org.jspecify + jspecify + ${jspecify.version} + com.squareup.okhttp3 okhttp-jvm diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/SpotifyWebApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/SpotifyWebApi.java index 10c4937c..da3cfdee 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/SpotifyWebApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/SpotifyWebApi.java @@ -4,8 +4,10 @@ import de.sonallux.spotify.api.http.ApiClient; import lombok.Getter; import okhttp3.HttpUrl; +import org.jspecify.annotations.NullMarked; @Getter +@NullMarked public class SpotifyWebApi { public static final HttpUrl SPOTIFY_WEB_API_ENDPOINT = HttpUrl.get("https://api.spotify.com/v1"); diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AlbumsApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AlbumsApi.java index 3cf9c97a..1f720f37 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AlbumsApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AlbumsApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.albums.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Albums */ +@NullMarked @RequiredArgsConstructor public class AlbumsApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ArtistsApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ArtistsApi.java index eec63ac7..44f2d826 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ArtistsApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ArtistsApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.artists.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Artists */ +@NullMarked @RequiredArgsConstructor public class ArtistsApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AudiobooksApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AudiobooksApi.java index feab30a5..558a613b 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AudiobooksApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/AudiobooksApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.audiobooks.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Audiobooks */ +@NullMarked @RequiredArgsConstructor public class AudiobooksApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/CategoriesApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/CategoriesApi.java index e28cadee..d132682d 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/CategoriesApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/CategoriesApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.categories.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Categories */ +@NullMarked @RequiredArgsConstructor public class CategoriesApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ChaptersApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ChaptersApi.java index 27b434eb..c4bbd0c4 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ChaptersApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ChaptersApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.chapters.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Chapters */ +@NullMarked @RequiredArgsConstructor public class ChaptersApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/EpisodesApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/EpisodesApi.java index 8cc9154f..c2979cdb 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/EpisodesApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/EpisodesApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.episodes.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Episodes */ +@NullMarked @RequiredArgsConstructor public class EpisodesApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/GenresApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/GenresApi.java index 9d1cabe1..c9c58f01 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/GenresApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/GenresApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.genres.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Genres */ +@NullMarked @RequiredArgsConstructor public class GenresApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/MarketsApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/MarketsApi.java index 8fd5eb95..d5edffb5 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/MarketsApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/MarketsApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.markets.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Markets */ +@NullMarked @RequiredArgsConstructor public class MarketsApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlayerApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlayerApi.java index 9b8cbe33..7ad226e3 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlayerApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlayerApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.player.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Player */ +@NullMarked @RequiredArgsConstructor public class PlayerApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlaylistsApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlaylistsApi.java index 25edd2f1..e97901d9 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlaylistsApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/PlaylistsApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.playlists.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Playlists */ +@NullMarked @RequiredArgsConstructor public class PlaylistsApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/SearchApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/SearchApi.java index 7109be5a..c76f304e 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/SearchApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/SearchApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.search.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Search */ +@NullMarked @RequiredArgsConstructor public class SearchApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ShowsApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ShowsApi.java index d8aee517..fbfc63b2 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ShowsApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/ShowsApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.shows.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Shows */ +@NullMarked @RequiredArgsConstructor public class ShowsApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/TracksApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/TracksApi.java index c47d28f3..2e4a6f12 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/TracksApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/TracksApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.tracks.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Tracks */ +@NullMarked @RequiredArgsConstructor public class TracksApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/UsersApi.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/UsersApi.java index cb045fab..611420e7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/UsersApi.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/UsersApi.java @@ -3,10 +3,12 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.apis.users.*; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.NullMarked; /** * Users */ +@NullMarked @RequiredArgsConstructor public class UsersApi { private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/CheckUsersSavedAlbumsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/CheckUsersSavedAlbumsRequest.java index 6fb04394..be3a892c 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/CheckUsersSavedAlbumsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/CheckUsersSavedAlbumsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check User's Saved Albums request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckUsersSavedAlbumsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumRequest.java index 24e94483..2bd0226a 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Album request

@@ -12,6 +13,7 @@ *

Response

*

An album

*/ +@NullMarked public class GetAlbumRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumsTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumsTracksRequest.java index 5a0aefac..dfc81c55 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumsTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetAlbumsTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Album Tracks request

@@ -12,6 +13,7 @@ *

Response

*

Pages of tracks

*/ +@NullMarked public class GetAlbumsTracksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetMultipleAlbumsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetMultipleAlbumsRequest.java index c52cecfe..dfbd3cdb 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetMultipleAlbumsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetMultipleAlbumsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Albums request

@@ -12,6 +13,7 @@ *

Response

*

A set of albums

*/ +@NullMarked public class GetMultipleAlbumsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetNewReleasesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetNewReleasesRequest.java index 74b68d40..50616813 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetNewReleasesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetNewReleasesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get New Releases request

@@ -12,6 +13,7 @@ *

Response

*

A paged set of albums

*/ +@NullMarked public class GetNewReleasesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetUsersSavedAlbumsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetUsersSavedAlbumsRequest.java index 0b0550de..dd67cf22 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetUsersSavedAlbumsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/GetUsersSavedAlbumsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Saved Albums request

@@ -15,6 +16,7 @@ *

Response

*

Pages of albums

*/ +@NullMarked public class GetUsersSavedAlbumsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/RemoveAlbumsUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/RemoveAlbumsUserRequest.java index 80b8b686..20bdcba8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/RemoveAlbumsUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/RemoveAlbumsUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove Users' Saved Albums request

@@ -15,6 +16,7 @@ *

Response

*

Album(s) have been removed from the library

*/ +@NullMarked public class RemoveAlbumsUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/SaveAlbumsUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/SaveAlbumsUserRequest.java index a6c90c40..90881ef4 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/SaveAlbumsUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/albums/SaveAlbumsUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Save Albums for Current User request

@@ -15,6 +16,7 @@ *

Response

*

The album is saved

*/ +@NullMarked public class SaveAlbumsUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistRequest.java index c25403d4..ae968553 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Artist request

@@ -12,6 +13,7 @@ *

Response

*

An artist

*/ +@NullMarked public class GetArtistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsAlbumsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsAlbumsRequest.java index 1d3b2f42..530ace31 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsAlbumsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsAlbumsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Artist's Albums request

@@ -12,6 +13,7 @@ *

Response

*

Pages of albums

*/ +@NullMarked public class GetArtistsAlbumsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsRelatedArtistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsRelatedArtistsRequest.java index 8704dda7..b5b1ff94 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsRelatedArtistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsRelatedArtistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Artist's Related Artists request

@@ -13,6 +14,7 @@ *

A set of artists

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetArtistsRelatedArtistsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsTopTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsTopTracksRequest.java index c15a7796..2b0c6cba 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsTopTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetArtistsTopTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Artist's Top Tracks request

@@ -12,6 +13,7 @@ *

Response

*

A set of tracks

*/ +@NullMarked public class GetArtistsTopTracksRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetMultipleArtistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetMultipleArtistsRequest.java index d95b4f5e..48de60d5 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetMultipleArtistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/artists/GetMultipleArtistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Artists request

@@ -12,6 +13,7 @@ *

Response

*

A set of artists

*/ +@NullMarked public class GetMultipleArtistsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/CheckUsersSavedAudiobooksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/CheckUsersSavedAudiobooksRequest.java index 33af4c07..aa605590 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/CheckUsersSavedAudiobooksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/CheckUsersSavedAudiobooksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check User's Saved Audiobooks request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckUsersSavedAudiobooksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookChaptersRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookChaptersRequest.java index a7d7c21f..71bc1d0d 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookChaptersRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookChaptersRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Audiobook Chapters request

@@ -12,6 +13,7 @@ *

Response

*

Pages of chapters

*/ +@NullMarked public class GetAudiobookChaptersRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookRequest.java index 781d809b..400f10e1 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetAudiobookRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get an Audiobook request

@@ -12,6 +13,7 @@ *

Response

*

An Audiobook

*/ +@NullMarked public class GetAudiobookRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetMultipleAudiobooksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetMultipleAudiobooksRequest.java index 47fe9e7c..950f1ef0 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetMultipleAudiobooksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetMultipleAudiobooksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Audiobooks request

@@ -12,6 +13,7 @@ *

Response

*

A set of audiobooks. If one of the requested audiobooks is unavailable then you'll find a null item in the audiobooks array where the audiobook object would otherwise be.

*/ +@NullMarked public class GetMultipleAudiobooksRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetUsersSavedAudiobooksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetUsersSavedAudiobooksRequest.java index 30416474..3a7a23a6 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetUsersSavedAudiobooksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/GetUsersSavedAudiobooksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Saved Audiobooks request

@@ -15,6 +16,7 @@ *

Response

*

Pages of saved audiobooks

*/ +@NullMarked public class GetUsersSavedAudiobooksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/RemoveAudiobooksUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/RemoveAudiobooksUserRequest.java index c01bf500..33b4d373 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/RemoveAudiobooksUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/RemoveAudiobooksUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove User's Saved Audiobooks request

@@ -15,6 +16,7 @@ *

Response

*

Audiobook(s) have been removed from the library

*/ +@NullMarked public class RemoveAudiobooksUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/SaveAudiobooksUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/SaveAudiobooksUserRequest.java index 7eff31f8..2252876c 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/SaveAudiobooksUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/audiobooks/SaveAudiobooksUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Save Audiobooks for Current User request

@@ -15,6 +16,7 @@ *

Response

*

Audiobook(s) are saved to the library

*/ +@NullMarked public class SaveAudiobooksUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoriesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoriesRequest.java index 5f4406af..1931a6cd 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoriesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoriesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Browse Categories request

@@ -12,6 +13,7 @@ *

Response

*

A paged set of categories

*/ +@NullMarked public class GetCategoriesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoryRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoryRequest.java index ea533d30..91896dab 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoryRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/categories/GetCategoryRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Single Browse Category request

@@ -12,6 +13,7 @@ *

Response

*

A category

*/ +@NullMarked public class GetCategoryRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetChapterRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetChapterRequest.java index 2dc83a3e..ba6a9975 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetChapterRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetChapterRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get a Chapter request

@@ -12,6 +13,7 @@ *

Response

*

A Chapter

*/ +@NullMarked public class GetChapterRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetSeveralChaptersRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetSeveralChaptersRequest.java index caf641f0..5f3cb511 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetSeveralChaptersRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/chapters/GetSeveralChaptersRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Chapters request

@@ -12,6 +13,7 @@ *

Response

*

A set of chapters

*/ +@NullMarked public class GetSeveralChaptersRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/CheckUsersSavedEpisodesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/CheckUsersSavedEpisodesRequest.java index 916ffe0a..eb728aad 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/CheckUsersSavedEpisodesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/CheckUsersSavedEpisodesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check User's Saved Episodes request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckUsersSavedEpisodesRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetEpisodeRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetEpisodeRequest.java index efa7a96b..3c80ef07 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetEpisodeRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetEpisodeRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Episode request

@@ -15,6 +16,7 @@ *

Response

*

An episode

*/ +@NullMarked public class GetEpisodeRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetMultipleEpisodesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetMultipleEpisodesRequest.java index 36b0574d..7e8e7568 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetMultipleEpisodesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetMultipleEpisodesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Episodes request

@@ -15,6 +16,7 @@ *

Response

*

A set of episodes

*/ +@NullMarked public class GetMultipleEpisodesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetUsersSavedEpisodesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetUsersSavedEpisodesRequest.java index 134723ba..9a555151 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetUsersSavedEpisodesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/GetUsersSavedEpisodesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Saved Episodes request

@@ -15,6 +16,7 @@ *

Response

*

Pages of episodes

*/ +@NullMarked public class GetUsersSavedEpisodesRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/RemoveEpisodesUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/RemoveEpisodesUserRequest.java index d2bb5327..01dcd1a8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/RemoveEpisodesUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/RemoveEpisodesUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove User's Saved Episodes request

@@ -15,6 +16,7 @@ *

Response

*

Episode removed

*/ +@NullMarked public class RemoveEpisodesUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/SaveEpisodesUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/SaveEpisodesUserRequest.java index 44b10b94..36b1f06a 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/SaveEpisodesUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/episodes/SaveEpisodesUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Save Episodes for Current User request

@@ -15,6 +16,7 @@ *

Response

*

Episode saved

*/ +@NullMarked public class SaveEpisodesUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/genres/GetRecommendationGenresRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/genres/GetRecommendationGenresRequest.java index 1884b226..aa98fda9 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/genres/GetRecommendationGenresRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/genres/GetRecommendationGenresRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Available Genre Seeds request

@@ -13,6 +14,7 @@ *

A set of genres

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetRecommendationGenresRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/markets/GetAvailableMarketsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/markets/GetAvailableMarketsRequest.java index 4995b886..d7547959 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/markets/GetAvailableMarketsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/markets/GetAvailableMarketsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Available Markets request

@@ -12,6 +13,7 @@ *

Response

*

A markets object with an array of country codes

*/ +@NullMarked public class GetAvailableMarketsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/AddToQueueRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/AddToQueueRequest.java index e7b9d7f2..873bac8e 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/AddToQueueRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/AddToQueueRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Add Item to Playback Queue request

@@ -15,6 +16,7 @@ *

Response

*

Command received

*/ +@NullMarked public class AddToQueueRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetInformationAboutUsersCurrentPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetInformationAboutUsersCurrentPlaybackRequest.java index 957b5587..6a36472c 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetInformationAboutUsersCurrentPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetInformationAboutUsersCurrentPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Playback State request

@@ -15,6 +16,7 @@ *

Response

*

Information about playback

*/ +@NullMarked public class GetInformationAboutUsersCurrentPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetQueueRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetQueueRequest.java index fb556249..14c82c19 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetQueueRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetQueueRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get the User's Queue request

@@ -15,6 +16,7 @@ *

Response

*

Information about the queue

*/ +@NullMarked public class GetQueueRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetRecentlyPlayedRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetRecentlyPlayedRequest.java index 879fd7c7..de6d42b2 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetRecentlyPlayedRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetRecentlyPlayedRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Recently Played Tracks request

@@ -15,6 +16,7 @@ *

Response

*

A paged set of tracks

*/ +@NullMarked public class GetRecentlyPlayedRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersAvailableDevicesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersAvailableDevicesRequest.java index b5cc335f..690c6f9d 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersAvailableDevicesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersAvailableDevicesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Available Devices request

@@ -15,6 +16,7 @@ *

Response

*

A set of devices

*/ +@NullMarked public class GetUsersAvailableDevicesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersCurrentlyPlayingTrackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersCurrentlyPlayingTrackRequest.java index c5874d62..636489d7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersCurrentlyPlayingTrackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/GetUsersCurrentlyPlayingTrackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Currently Playing Track request

@@ -15,6 +16,7 @@ *

Response

*

Information about the currently playing track

*/ +@NullMarked public class GetUsersCurrentlyPlayingTrackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/PauseUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/PauseUsersPlaybackRequest.java index e0e24305..3745dcd8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/PauseUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/PauseUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Pause Playback request

@@ -15,6 +16,7 @@ *

Response

*

Playback paused

*/ +@NullMarked public class PauseUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SeekToPositionInCurrentlyPlayingTrackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SeekToPositionInCurrentlyPlayingTrackRequest.java index a86ab02d..f6a65277 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SeekToPositionInCurrentlyPlayingTrackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SeekToPositionInCurrentlyPlayingTrackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Seek To Position request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class SeekToPositionInCurrentlyPlayingTrackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetRepeatModeOnUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetRepeatModeOnUsersPlaybackRequest.java index 4cc412b8..cd219e6b 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetRepeatModeOnUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetRepeatModeOnUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Set Repeat Mode request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class SetRepeatModeOnUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetVolumeForUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetVolumeForUsersPlaybackRequest.java index 1e06a989..b236fa06 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetVolumeForUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SetVolumeForUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Set Playback Volume request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class SetVolumeForUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToNextTrackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToNextTrackRequest.java index 3d393d23..7016a6b7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToNextTrackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToNextTrackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Skip To Next request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class SkipUsersPlaybackToNextTrackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToPreviousTrackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToPreviousTrackRequest.java index 7598e09b..c85c7a37 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToPreviousTrackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/SkipUsersPlaybackToPreviousTrackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Skip To Previous request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class SkipUsersPlaybackToPreviousTrackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/StartUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/StartUsersPlaybackRequest.java index 6110faeb..1d7ae9e8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/StartUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/StartUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Start/Resume Playback request

@@ -15,6 +16,7 @@ *

Response

*

Playback started

*/ +@NullMarked public class StartUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/ToggleShuffleForUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/ToggleShuffleForUsersPlaybackRequest.java index db489b90..446233f7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/ToggleShuffleForUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/ToggleShuffleForUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Toggle Playback Shuffle request

@@ -15,6 +16,7 @@ *

Response

*

Command sent

*/ +@NullMarked public class ToggleShuffleForUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/TransferUsersPlaybackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/TransferUsersPlaybackRequest.java index be66d96a..06c22cd6 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/TransferUsersPlaybackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/player/TransferUsersPlaybackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Transfer Playback request

@@ -15,6 +16,7 @@ *

Response

*

Playback transferred

*/ +@NullMarked public class TransferUsersPlaybackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/AddTracksToPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/AddTracksToPlaylistRequest.java index 00c425df..3ce19a36 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/AddTracksToPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/AddTracksToPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Add Items to Playlist request

@@ -15,6 +16,7 @@ *

Response

*

A snapshot ID for the playlist

*/ +@NullMarked public class AddTracksToPlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ChangePlaylistDetailsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ChangePlaylistDetailsRequest.java index 1323860c..e5f23f69 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ChangePlaylistDetailsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ChangePlaylistDetailsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Change Playlist Details request

@@ -15,6 +16,7 @@ *

Response

*

Playlist updated

*/ +@NullMarked public class ChangePlaylistDetailsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/CreatePlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/CreatePlaylistRequest.java index 6fb70c40..56bbfdcf 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/CreatePlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/CreatePlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Create Playlist request

@@ -15,6 +16,7 @@ *

Response

*

A playlist

*/ +@NullMarked public class CreatePlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetCategoriesPlaylistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetCategoriesPlaylistsRequest.java index 1778c27a..a253c8b5 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetCategoriesPlaylistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetCategoriesPlaylistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Category's Playlists request

@@ -13,6 +14,7 @@ *

A paged set of playlists

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetCategoriesPlaylistsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetFeaturedPlaylistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetFeaturedPlaylistsRequest.java index 6b3dbe19..07854bf1 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetFeaturedPlaylistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetFeaturedPlaylistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Featured Playlists request

@@ -13,6 +14,7 @@ *

A paged set of playlists

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetFeaturedPlaylistsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListOfCurrentUsersPlaylistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListOfCurrentUsersPlaylistsRequest.java index e8bdd0e4..91c15490 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListOfCurrentUsersPlaylistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListOfCurrentUsersPlaylistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Current User's Playlists request

@@ -15,6 +16,7 @@ *

Response

*

A paged set of playlists

*/ +@NullMarked public class GetListOfCurrentUsersPlaylistsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListUsersPlaylistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListUsersPlaylistsRequest.java index 52b2c3a1..ea0f7e92 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListUsersPlaylistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetListUsersPlaylistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Playlists request

@@ -15,6 +16,7 @@ *

Response

*

A paged set of playlists

*/ +@NullMarked public class GetListUsersPlaylistsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistCoverRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistCoverRequest.java index 9eda3b55..18278994 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistCoverRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistCoverRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Playlist Cover Image request

@@ -12,6 +13,7 @@ *

Response

*

A set of images

*/ +@NullMarked public class GetPlaylistCoverRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistRequest.java index aba32fdc..d0894dd8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Playlist request

@@ -12,6 +13,7 @@ *

Response

*

A playlist

*/ +@NullMarked public class GetPlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistsTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistsTracksRequest.java index e33449e0..ea6bf779 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistsTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/GetPlaylistsTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Playlist Items request

@@ -15,6 +16,7 @@ *

Response

*

Pages of tracks

*/ +@NullMarked public class GetPlaylistsTracksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/RemoveTracksPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/RemoveTracksPlaylistRequest.java index eed122e7..e12fa413 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/RemoveTracksPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/RemoveTracksPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove Playlist Items request

@@ -15,6 +16,7 @@ *

Response

*

A snapshot ID for the playlist

*/ +@NullMarked public class RemoveTracksPlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReorderPlaylistsTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReorderPlaylistsTracksRequest.java index 713d2054..706e8197 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReorderPlaylistsTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReorderPlaylistsTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Reorder Playlist Items request

@@ -15,6 +16,7 @@ *

Response

*

A snapshot ID for the playlist

*/ +@NullMarked public class ReorderPlaylistsTracksRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReplacePlaylistsTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReplacePlaylistsTracksRequest.java index 5b8068ec..1337aa12 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReplacePlaylistsTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/ReplacePlaylistsTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Replace Playlist Items request

@@ -15,6 +16,7 @@ *

Response

*

A snapshot ID for the playlist

*/ +@NullMarked public class ReplacePlaylistsTracksRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/UploadCustomPlaylistCoverRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/UploadCustomPlaylistCoverRequest.java index 6e4e3954..7e0e991b 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/UploadCustomPlaylistCoverRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/playlists/UploadCustomPlaylistCoverRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Add Custom Playlist Cover Image request

@@ -15,6 +16,7 @@ *

Response

*

Image uploaded

*/ +@NullMarked public class UploadCustomPlaylistCoverRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/search/SearchRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/search/SearchRequest.java index 291560ab..37553552 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/search/SearchRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/search/SearchRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Search for Item request

@@ -12,6 +13,7 @@ *

Response

*

Search response

*/ +@NullMarked public class SearchRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/CheckUsersSavedShowsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/CheckUsersSavedShowsRequest.java index 6cf9f4c0..e9582140 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/CheckUsersSavedShowsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/CheckUsersSavedShowsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check User's Saved Shows request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckUsersSavedShowsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetMultipleShowsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetMultipleShowsRequest.java index 0bc6cc41..8e78c888 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetMultipleShowsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetMultipleShowsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Shows request

@@ -12,6 +13,7 @@ *

Response

*

A set of shows

*/ +@NullMarked public class GetMultipleShowsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowRequest.java index 2b492c9a..f62750f7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Show request

@@ -15,6 +16,7 @@ *

Response

*

A show

*/ +@NullMarked public class GetShowRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowsEpisodesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowsEpisodesRequest.java index 053ad343..6648fa3d 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowsEpisodesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetShowsEpisodesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Show Episodes request

@@ -15,6 +16,7 @@ *

Response

*

Pages of episodes

*/ +@NullMarked public class GetShowsEpisodesRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetUsersSavedShowsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetUsersSavedShowsRequest.java index 4fa987a9..679113f0 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetUsersSavedShowsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/GetUsersSavedShowsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Saved Shows request

@@ -15,6 +16,7 @@ *

Response

*

Pages of shows

*/ +@NullMarked public class GetUsersSavedShowsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/RemoveShowsUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/RemoveShowsUserRequest.java index 066dfcf2..ebfdc1e0 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/RemoveShowsUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/RemoveShowsUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove User's Saved Shows request

@@ -15,6 +16,7 @@ *

Response

*

Show removed

*/ +@NullMarked public class RemoveShowsUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/SaveShowsUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/SaveShowsUserRequest.java index 6c8d0728..6350bca7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/SaveShowsUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/shows/SaveShowsUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Save Shows for Current User request

@@ -15,6 +16,7 @@ *

Response

*

Show saved

*/ +@NullMarked public class SaveShowsUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/CheckUsersSavedTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/CheckUsersSavedTracksRequest.java index 5851b348..b3e71539 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/CheckUsersSavedTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/CheckUsersSavedTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check User's Saved Tracks request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckUsersSavedTracksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioAnalysisRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioAnalysisRequest.java index fecd66af..e7d49e60 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioAnalysisRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioAnalysisRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Track's Audio Analysis request

@@ -13,6 +14,7 @@ *

Audio analysis for one track

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetAudioAnalysisRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioFeaturesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioFeaturesRequest.java index 121c1bd5..4b7b0474 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioFeaturesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetAudioFeaturesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Track's Audio Features request

@@ -13,6 +14,7 @@ *

Audio features for one track

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetAudioFeaturesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetRecommendationsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetRecommendationsRequest.java index a1dc74bc..9ea118f6 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetRecommendationsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetRecommendationsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Recommendations request

@@ -13,6 +14,7 @@ *

A set of recommendations

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetRecommendationsRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralAudioFeaturesRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralAudioFeaturesRequest.java index e3d7d0d6..66a761f8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralAudioFeaturesRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralAudioFeaturesRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Tracks' Audio Features request

@@ -13,6 +14,7 @@ *

A set of audio features

* @deprecated see this blog post from Spotify */ +@NullMarked public class GetSeveralAudioFeaturesRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralTracksRequest.java index 530496c0..ee823925 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetSeveralTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Several Tracks request

@@ -12,6 +13,7 @@ *

Response

*

A set of tracks

*/ +@NullMarked public class GetSeveralTracksRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetTrackRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetTrackRequest.java index e663d634..b9a6a939 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetTrackRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetTrackRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Track request

@@ -12,6 +13,7 @@ *

Response

*

A track

*/ +@NullMarked public class GetTrackRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetUsersSavedTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetUsersSavedTracksRequest.java index fe6ec8d2..067960b2 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetUsersSavedTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/GetUsersSavedTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Saved Tracks request

@@ -15,6 +16,7 @@ *

Response

*

Pages of tracks

*/ +@NullMarked public class GetUsersSavedTracksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/RemoveTracksUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/RemoveTracksUserRequest.java index 95ab0188..33d8915f 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/RemoveTracksUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/RemoveTracksUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Remove User's Saved Tracks request

@@ -15,6 +16,7 @@ *

Response

*

Track removed

*/ +@NullMarked public class RemoveTracksUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/SaveTracksUserRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/SaveTracksUserRequest.java index 46949dca..6f8741d5 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/SaveTracksUserRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/tracks/SaveTracksUserRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Save Tracks for Current User request

@@ -15,6 +16,7 @@ *

Response

*

Track saved

*/ +@NullMarked public class SaveTracksUserRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckCurrentUserFollowsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckCurrentUserFollowsRequest.java index 66ff8789..4c605320 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckCurrentUserFollowsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckCurrentUserFollowsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check If User Follows Artists or Users request

@@ -15,6 +16,7 @@ *

Response

*

Array of booleans

*/ +@NullMarked public class CheckCurrentUserFollowsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckIfUserFollowsPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckIfUserFollowsPlaylistRequest.java index 28672378..51258ef5 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckIfUserFollowsPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/CheckIfUserFollowsPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Check if Current User Follows Playlist request

@@ -12,6 +13,7 @@ *

Response

*

Array of boolean, containing a single boolean

*/ +@NullMarked public class CheckIfUserFollowsPlaylistRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowArtistsUsersRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowArtistsUsersRequest.java index ae6fbfa0..9453cfee 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowArtistsUsersRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowArtistsUsersRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Follow Artists or Users request

@@ -15,6 +16,7 @@ *

Response

*

Artist or user followed

*/ +@NullMarked public class FollowArtistsUsersRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowPlaylistRequest.java index a497f5bf..b0c00aff 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/FollowPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Follow Playlist request

@@ -15,6 +16,7 @@ *

Response

*

Playlist followed

*/ +@NullMarked public class FollowPlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetCurrentUsersProfileRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetCurrentUsersProfileRequest.java index cecc290d..c7d7a84b 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetCurrentUsersProfileRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetCurrentUsersProfileRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Current User's Profile request

@@ -15,6 +16,7 @@ *

Response

*

A user

*/ +@NullMarked public class GetCurrentUsersProfileRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetFollowedRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetFollowedRequest.java index a4ed4093..b9522f4f 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetFollowedRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetFollowedRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get Followed Artists request

@@ -15,6 +16,7 @@ *

Response

*

A paged set of artists

*/ +@NullMarked public class GetFollowedRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersProfileRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersProfileRequest.java index 1a525a4f..8058884b 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersProfileRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersProfileRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Profile request

@@ -12,6 +13,7 @@ *

Response

*

A user

*/ +@NullMarked public class GetUsersProfileRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopArtistsRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopArtistsRequest.java index 28d116bd..0d72f5e7 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopArtistsRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopArtistsRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Top Artists request

@@ -15,6 +16,7 @@ *

Response

*

Pages of artists

*/ +@NullMarked public class GetUsersTopArtistsRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopTracksRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopTracksRequest.java index 04d3b92b..4e48e83a 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopTracksRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/GetUsersTopTracksRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Get User's Top Tracks request

@@ -15,6 +16,7 @@ *

Response

*

Pages of tracks

*/ +@NullMarked public class GetUsersTopTracksRequest { private static final TypeReference> RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowArtistsUsersRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowArtistsUsersRequest.java index efba882c..a11a457d 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowArtistsUsersRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowArtistsUsersRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Unfollow Artists or Users request

@@ -15,6 +16,7 @@ *

Response

*

Artist or user unfollowed

*/ +@NullMarked public class UnfollowArtistsUsersRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowPlaylistRequest.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowPlaylistRequest.java index 182e10d6..ea2bd3b3 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowPlaylistRequest.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/apis/users/UnfollowPlaylistRequest.java @@ -5,6 +5,7 @@ import de.sonallux.spotify.api.http.ApiClient; import de.sonallux.spotify.api.http.Request; import de.sonallux.spotify.api.models.*; +import org.jspecify.annotations.NullMarked; /** *

Unfollow Playlist request

@@ -15,6 +16,7 @@ *

Response

*

Playlist unfollowed

*/ +@NullMarked public class UnfollowPlaylistRequest { private static final TypeReference RESPONSE_TYPE = new TypeReference<>() {}; private final ApiClient apiClient; diff --git a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/authorization/Scope.java b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/authorization/Scope.java index 2fab80e8..ad9915e8 100644 --- a/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/authorization/Scope.java +++ b/spotify-web-api-java/src/main/generated/de/sonallux/spotify/api/authorization/Scope.java @@ -1,8 +1,11 @@ package de.sonallux.spotify.api.authorization; +import org.jspecify.annotations.NullMarked; + /** * Authorization Scopes */ +@NullMarked public enum Scope { /** * Communicate with the Spotify app on your device. diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyApiException.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyApiException.java index 8290d3c5..8b882958 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyApiException.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyApiException.java @@ -1,12 +1,15 @@ package de.sonallux.spotify.api; import de.sonallux.spotify.api.models.Error; +import lombok.Getter; +import org.jspecify.annotations.Nullable; import java.io.IOException; public class SpotifyApiException extends IOException { - private Error error; + @Getter + private @Nullable Error error; public SpotifyApiException(Error error) { super(error.getStatus() + " " + error.getMessage()); @@ -25,13 +28,4 @@ public SpotifyApiException(String message, Error error) { super(message + ": " + error.getStatus() + " " + error.getMessage()); this.error = error; } - - public SpotifyApiException(String message, Error error, Throwable cause) { - super(message + ": " + error.getStatus() + " " + error.getMessage(), cause); - this.error = error; - } - - public Error getError() { - return error; - } } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyWebApiBuilder.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyWebApiBuilder.java index ea7bf66c..c419f27d 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyWebApiBuilder.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/SpotifyWebApiBuilder.java @@ -13,15 +13,16 @@ import okhttp3.Call; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; +import org.jspecify.annotations.Nullable; import java.util.Objects; @NoArgsConstructor public class SpotifyWebApiBuilder { - private HttpUrl baseUrl; - private Call.Factory callFactory; - private ObjectMapper objectMapper; - private ApiAuthorizationProvider authorizationProvider; + private @Nullable HttpUrl baseUrl; + private Call.@Nullable Factory callFactory; + private @Nullable ObjectMapper objectMapper; + private @Nullable ApiAuthorizationProvider authorizationProvider; public SpotifyWebApiBuilder baseUrl(String baseUrl) { Objects.requireNonNull(baseUrl, "baseUrl == null"); diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/ApiAuthorizationProvider.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/ApiAuthorizationProvider.java index c5e9eb80..933146fe 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/ApiAuthorizationProvider.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/ApiAuthorizationProvider.java @@ -1,5 +1,7 @@ package de.sonallux.spotify.api.authorization; +import org.jspecify.annotations.Nullable; + public interface ApiAuthorizationProvider { /** * Get the value for the Authorization header that should be added to a request. This method @@ -7,7 +9,7 @@ public interface ApiAuthorizationProvider { * If no Authorization header should be added to the request null can be returned. * @return the value of the Authorization header or null */ - String getAuthorizationHeaderValue(); + @Nullable String getAuthorizationHeaderValue(); /** * Callback to initiate a token refresh after a 401 Unauthorized response from the Spotify Web API. diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthTokens.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthTokens.java index 605d364c..ae4b3a1b 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthTokens.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthTokens.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.*; +import org.jspecify.annotations.Nullable; @Getter @Setter @@ -15,11 +16,11 @@ public class AuthTokens { @JsonProperty("token_type") public String tokenType; - public String scope; + public @Nullable String scope; @JsonProperty("expires_in") public int expiresIn; @JsonProperty("refresh_token") - public String refreshToken; + public @Nullable String refreshToken; } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthorizationRedirectResponse.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthorizationRedirectResponse.java index b39343a8..8104d538 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthorizationRedirectResponse.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/AuthorizationRedirectResponse.java @@ -5,15 +5,16 @@ import lombok.AllArgsConstructor; import lombok.Getter; import okhttp3.HttpUrl; +import org.jspecify.annotations.Nullable; import java.util.function.Function; @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) -public class AuthorizationRedirectResponse { - private final String state; - private final T body; - private final String error; +public class AuthorizationRedirectResponse { + private final @Nullable String state; + private final @Nullable T body; + private final @Nullable String error; public boolean isSuccess() { return body != null; @@ -42,7 +43,7 @@ public static AuthorizationRedirectResponse error(String error) { * @return the authorization response * @throws IllegalArgumentException If {@code uri} is not a well-formed URI. */ - public static AuthorizationRedirectResponse parse(String url, Function contentExtractor) { + public static AuthorizationRedirectResponse parse(String url, Function contentExtractor) { return parse(HttpUrl.get(url), contentExtractor); } @@ -53,7 +54,7 @@ public static AuthorizationRedirectResponse parse(String url, Function AuthorizationRedirectResponse parse(HttpUrl httpUrl, Function contentExtractor) { + public static AuthorizationRedirectResponse parse(HttpUrl httpUrl, Function contentExtractor) { var state = httpUrl.queryParameter("state"); var error = httpUrl.queryParameter("error"); diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/InMemoryTokenStore.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/InMemoryTokenStore.java index 5d334190..cdcf2a5c 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/InMemoryTokenStore.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/InMemoryTokenStore.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; +import org.jspecify.annotations.Nullable; /** * A simple {@link TokenStore} that stores the auth tokens in memory @@ -9,7 +10,7 @@ @NoArgsConstructor @AllArgsConstructor public class InMemoryTokenStore implements TokenStore { - private AuthTokens authTokens; + private @Nullable AuthTokens authTokens = null; @Override public void storeTokens(AuthTokens authTokens) { diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/SimpleApiAuthorizationProvider.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/SimpleApiAuthorizationProvider.java index a8034d7e..6e9faefa 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/SimpleApiAuthorizationProvider.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/SimpleApiAuthorizationProvider.java @@ -5,6 +5,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.jspecify.annotations.Nullable; /** * A simple {@link ApiAuthorizationProvider} that can only hold an access token. @@ -21,7 +22,7 @@ public class SimpleApiAuthorizationProvider implements ApiAuthorizationProvider private String accessToken; @Override - public String getAuthorizationHeaderValue() { + public @Nullable String getAuthorizationHeaderValue() { if (!TextUtil.hasText(accessToken)) { return null; } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStore.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStore.java index 26693777..d3925a52 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStore.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStore.java @@ -1,6 +1,8 @@ package de.sonallux.spotify.api.authorization; +import org.jspecify.annotations.Nullable; + public interface TokenStore { void storeTokens(AuthTokens authTokens); - AuthTokens loadTokens(); + @Nullable AuthTokens loadTokens(); } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStoreApiAuthorizationProvider.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStoreApiAuthorizationProvider.java index b711d976..929ed25a 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStoreApiAuthorizationProvider.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/TokenStoreApiAuthorizationProvider.java @@ -2,6 +2,7 @@ import de.sonallux.spotify.api.util.TextUtil; import lombok.AllArgsConstructor; +import org.jspecify.annotations.Nullable; /** * An {@link ApiAuthorizationProvider} that uses a provided {@link TokenStore} to provide authorization @@ -11,7 +12,7 @@ public class TokenStoreApiAuthorizationProvider implements ApiAuthorizationProvi protected final TokenStore tokenStore; @Override - public String getAuthorizationHeaderValue() { + public @Nullable String getAuthorizationHeaderValue() { var tokens = tokenStore.loadTokens(); if (tokens == null || !TextUtil.hasText(tokens.getAccessToken()) || !TextUtil.hasText(tokens.getTokenType())) { return null; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/authorization_code/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/authorization_code/package-info.java new file mode 100644 index 00000000..49c70789 --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/authorization_code/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api.authorization.authorization_code; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/client_credentials/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/client_credentials/package-info.java new file mode 100644 index 00000000..e6ed8011 --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/client_credentials/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api.authorization.client_credentials; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/package-info.java new file mode 100644 index 00000000..d0bfd9df --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/authorization/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api.authorization; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiCall.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiCall.java index c73c2213..c874de0c 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiCall.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiCall.java @@ -12,7 +12,7 @@ import okio.BufferedSource; import okio.ForwardingSource; import okio.Okio; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import java.io.IOException; @@ -25,8 +25,8 @@ public class ApiCall { private final TypeReference responseType; private volatile boolean canceled; - private Call rawCall; - private Throwable creationFailure; // RuntimeException | IOException + private @Nullable Call rawCall; + private @Nullable Throwable creationFailure; // RuntimeException | IOException private boolean executed; /** @@ -124,15 +124,13 @@ private RT parseResponseBody(ResponseBody responseBody, TypeReference r } } - private Error getErrorBody(ResponseBody rawResponse) { + private @Nullable Error getErrorBody(ResponseBody rawResponse) { if (rawResponse.contentLength() == 0) { return null; } try { var errorResponse = parseResponseBody(rawResponse, ERROR_RESPONSE_TYPE); - if (errorResponse != null) { - return errorResponse.getError(); - } + return errorResponse.getError(); } catch (IOException ignore) {} return null; @@ -169,7 +167,7 @@ public boolean isCanceled() { static final class ExceptionCatchingResponseBody extends ResponseBody { private final ResponseBody delegate; private final BufferedSource delegateSource; - private IOException thrownException; + private @Nullable IOException thrownException; ExceptionCatchingResponseBody(ResponseBody delegate) { this.delegate = delegate; @@ -177,7 +175,7 @@ static final class ExceptionCatchingResponseBody extends ResponseBody { Okio.buffer( new ForwardingSource(delegate.source()) { @Override - public long read(@NotNull Buffer sink, long byteCount) throws IOException { + public long read(Buffer sink, long byteCount) throws IOException { try { return super.read(sink, byteCount); } catch (IOException e) { @@ -189,6 +187,7 @@ public long read(@NotNull Buffer sink, long byteCount) throws IOException { } @Override + @Nullable public MediaType contentType() { return delegate.contentType(); } @@ -198,7 +197,6 @@ public long contentLength() { return delegate.contentLength(); } - @NotNull @Override public BufferedSource source() { return delegateSource; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiClient.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiClient.java index f9a65636..c3eb60f1 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiClient.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/ApiClient.java @@ -8,6 +8,7 @@ import okhttp3.Call; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; +import org.jspecify.annotations.Nullable; import java.util.Objects; @@ -28,10 +29,10 @@ public static Builder builder() { } public static final class Builder { - private HttpUrl baseUrl; - private Call.Factory callFactory; - private ObjectMapper objectMapper; - private ApiCall.Factory apiCallFactory; + private @Nullable HttpUrl baseUrl; + private Call.@Nullable Factory callFactory; + private @Nullable ObjectMapper objectMapper; + private ApiCall.@Nullable Factory apiCallFactory; public Builder(){} diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/AuthorizationAddingInterceptor.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/AuthorizationAddingInterceptor.java index 4a04f2ec..34f93bc8 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/AuthorizationAddingInterceptor.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/AuthorizationAddingInterceptor.java @@ -5,7 +5,6 @@ import lombok.AllArgsConstructor; import okhttp3.Interceptor; import okhttp3.Response; -import org.jetbrains.annotations.NotNull; import java.io.IOException; @@ -13,7 +12,6 @@ public class AuthorizationAddingInterceptor implements Interceptor { private final ApiAuthorizationProvider authProvider; - @NotNull @Override public Response intercept(Chain chain) throws IOException { var request = chain.request(); diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Request.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Request.java index 82a417a6..fdbfb9f7 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Request.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Request.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import okhttp3.*; import okhttp3.internal.http.HttpMethod; +import org.jspecify.annotations.Nullable; import java.io.IOException; import java.util.HashMap; @@ -83,7 +84,7 @@ okhttp3.Request.Builder toOkHttpRequest(ApiClient apiClient) throws IOException .headers(Headers.of(getHeaderParameters())); } - private RequestBody createRequestBody(ObjectMapper objectMapper) throws IOException { + private @Nullable RequestBody createRequestBody(ObjectMapper objectMapper) throws IOException { if (rawBody.isPresent()) { return rawBody.get(); } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Response.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Response.java index ae84797d..3ae8094d 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Response.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/Response.java @@ -3,11 +3,12 @@ import de.sonallux.spotify.api.models.Error; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import org.jspecify.annotations.Nullable; @RequiredArgsConstructor(access = AccessLevel.PRIVATE) -public class Response { +public class Response { - public static Response success(T body, okhttp3.Response rawResponse) { + public static Response success(@Nullable X body, okhttp3.Response rawResponse) { return new Response<>(rawResponse, body, null); } @@ -16,8 +17,8 @@ public static Response error(Error error, okhttp3.Response rawResponse) { } private final okhttp3.Response rawResponse; - private final T body; - private final Error error; + private final @Nullable T body; + private final @Nullable Error error; /** * Returns the underlying OkHttp response object @@ -52,14 +53,14 @@ public boolean isSuccessful() { * the response has no body. * For non successful response this is always null. Use {{@link #errorBody()}} to get the associated error. */ - public T body() { + public @Nullable T body() { return body; } /** * Returns an error representation for non successful responses. This is null if the response is successful. */ - public Error errorBody() { + public @Nullable Error errorBody() { return error; } } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/package-info.java new file mode 100644 index 00000000..eb9833b5 --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/http/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api.http; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/package-info.java new file mode 100644 index 00000000..f8d5cefe --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/SpotifyUri.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/SpotifyUri.java index a95ff0fc..541af610 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/SpotifyUri.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/SpotifyUri.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import org.jspecify.annotations.Nullable; @Getter @AllArgsConstructor @@ -95,7 +96,7 @@ public String toString() { return toSpotifyUri(); } - public static SpotifyUri parseUri(String string) throws SpotifyUriException { + public static SpotifyUri parseUri(@Nullable String string) throws SpotifyUriException { if (string == null || string.isEmpty()) { throw new SpotifyUriException("Can not parse empty spotifyUri"); } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/TextUtil.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/TextUtil.java index 2cf7a223..f906c46a 100644 --- a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/TextUtil.java +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/TextUtil.java @@ -1,9 +1,11 @@ package de.sonallux.spotify.api.util; +import org.jspecify.annotations.Nullable; + public final class TextUtil { private TextUtil() {} - public static boolean hasText(String str) { + public static boolean hasText(@Nullable String str) { return str != null && !str.isEmpty(); } } diff --git a/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/package-info.java b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/package-info.java new file mode 100644 index 00000000..df939121 --- /dev/null +++ b/spotify-web-api-java/src/main/java/de/sonallux/spotify/api/util/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package de.sonallux.spotify.api.util; + +import org.jspecify.annotations.NullMarked; diff --git a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/ConversionTest.java b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/ConversionTest.java index c45035b4..5b5308a0 100644 --- a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/ConversionTest.java +++ b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/ConversionTest.java @@ -41,7 +41,7 @@ void testResponseSnakeCaseToCamelCase() throws Exception { assertEquals("MTYxNTI3MzcxMSwwMDAwMDAwMDcxOTM3NDM1NDIxMmIzODI4NGQzMDI0OGRiZGQ4M2Q4", playlist.getSnapshotId()); assertFalse(playlist.isPublic()); assertEquals("Spotify", playlist.getOwner().getDisplayName()); - var firstTrack = playlist.getTracks().getItems().get(0); + var firstTrack = playlist.getTracks().getItems().getFirst(); assertNotNull(firstTrack); assertEquals(Instant.parse("2021-03-07T23:01:00Z"), firstTrack.getAddedAt()); assertInstanceOf(Track.class, firstTrack.getTrack()); @@ -98,7 +98,7 @@ void testUnionTypeHandlingWithAdditionalTypesParameter() throws Exception { webServer.enqueue(loadMockResponse("get-playlists-tracks-union.json")); var response = api.getPlaylistsApi().getPlaylistsTracks("foo").build().execute(); - var track = response.getItems().get(0).getTrack(); + var track = response.getItems().getFirst().getTrack(); assertNotNull(track); assertEquals("track", track.getType()); assertInstanceOf(Track.class, track); @@ -121,7 +121,7 @@ void testUnionTypeHandlingWithoutAdditionalTypesParameter() throws Exception { var response = api.getPlaylistsApi().getPlaylistsTracks("foo") .additionalTypes("track") .build().execute(); - var track = response.getItems().get(0).getTrack(); + var track = response.getItems().getFirst().getTrack(); assertNotNull(track); assertEquals("track", track.getType()); assertInstanceOf(Track.class, track); diff --git a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodeFlowTest.java b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodeFlowTest.java index 60df4aaa..133acc20 100644 --- a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodeFlowTest.java +++ b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodeFlowTest.java @@ -179,7 +179,7 @@ private void assertStoreAuthTokensFromResponse() { assertEquals("Bearer", authTokens.getTokenType()); assertEquals("user-read-private user-read-email", authTokens.getScope()); assertEquals(3600, authTokens.getExpiresIn()); - assertNull(authTokens.getRefreshToken()); + assertEquals("RgA6ZcjIi6L8bq", authTokens.getRefreshToken()); return true; })); } @@ -191,7 +191,8 @@ private void assertStoreAuthTokensFromResponse() { "access_token": "NgA6ZcYIixn8bU", "token_type": "Bearer", "scope": "user-read-private user-read-email", - "expires_in": 3600 + "expires_in": 3600, + "refresh_token": "RgA6ZcjIi6L8bq" }""") .build(); diff --git a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodePKCEFlowTest.java b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodePKCEFlowTest.java index 04b6fb5e..13f07ed0 100644 --- a/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodePKCEFlowTest.java +++ b/spotify-web-api-java/src/test/java/de/sonallux/spotify/api/authorization/authorization_code/AuthorizationCodePKCEFlowTest.java @@ -173,7 +173,7 @@ private void assertStoreAuthTokensFromResponse() { assertEquals("Bearer", authTokens.getTokenType()); assertEquals("user-read-private user-read-email", authTokens.getScope()); assertEquals(3600, authTokens.getExpiresIn()); - assertNull(authTokens.getRefreshToken()); + assertEquals("RgA6ZcjIi6L8bq", authTokens.getRefreshToken()); return true; })); } @@ -185,7 +185,8 @@ private void assertStoreAuthTokensFromResponse() { "access_token": "NgA6ZcYIixn8bU", "token_type": "Bearer", "scope": "user-read-private user-read-email", - "expires_in": 3600 + "expires_in": 3600, + "refresh_token": "RgA6ZcjIi6L8bq" }""") .build();