Skip to content

Commit 83f589a

Browse files
committed
chore: update to Java 21
1 parent ed085f3 commit 83f589a

File tree

21 files changed

+125
-111
lines changed

21 files changed

+125
-111
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ jobs:
77
runs-on: ubuntu-latest
88
strategy:
99
matrix:
10-
java: ['17', '21', '25']
10+
java: ['21', '25']
1111
name: Build on Java ${{ matrix.java }}
1212
steps:
1313
- name: Checkout

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- name: Setup java
1616
uses: actions/setup-java@v5
1717
with:
18-
java-version: 17
18+
java-version: 21
1919
distribution: 'temurin'
2020
cache: 'maven'
2121
server-id: central

.github/workflows/update.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: Setup java
1515
uses: actions/setup-java@v5
1616
with:
17-
java-version: 17
17+
java-version: 21
1818
distribution: 'temurin'
1919
cache: 'maven'
2020
- name: Get latest fixed open api definition

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88
- Update to okhttp `5.3.2`
9+
- Requiring Java 21
910

1011
## [4.3.2]
1112
- Remove `followers` property from `PlaylistUser` object

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
</developers>
4646

4747
<properties>
48-
<java.version>17</java.version>
48+
<java.version>21</java.version>
4949
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5050
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
5151

spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/EndpointSplitter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void splitEndpoints(SpotifyWebApi spotifyWebApi) {
2626
endpoint.getScopes(),
2727
false
2828
);
29-
reorderEndpoint.addPathParameter(endpoint.getRequiredPathParameters().get(0), true);
29+
reorderEndpoint.addPathParameter(endpoint.getRequiredPathParameters().getFirst(), true);
3030
endpoint.getOptionalBodyParameters().stream()
3131
.filter(param -> List.of("range_start", "insert_before", "range_length", "snapshot_id").contains(param.getName()))
3232
.forEach(param -> reorderEndpoint.addBodyParameter(param, List.of("range_start", "insert_before").contains(param.getName())));
@@ -42,7 +42,7 @@ public static void splitEndpoints(SpotifyWebApi spotifyWebApi) {
4242
endpoint.getScopes(),
4343
false
4444
);
45-
replaceEndpoint.addPathParameter(endpoint.getRequiredPathParameters().get(0), true);
45+
replaceEndpoint.addPathParameter(endpoint.getRequiredPathParameters().getFirst(), true);
4646
endpoint.getOptionalQueryParameters().stream()
4747
.filter(param -> "uris".equals(param.getName()))
4848
.forEach(param -> replaceEndpoint.addQueryParameter(param, false));

spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/ObjectGenerator.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -94,25 +94,24 @@ private String generateApiObject(String openApiName, Schema schema) {
9494
if (composedSchema.getAllOf() != null) {
9595
var allOf = composedSchema.getAllOf();
9696
if (allOf.size() == 1) {
97-
if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) {
97+
var ref = allOf.getFirst().get$ref();
98+
if (ref.equals("#/components/schemas/PagingObject")) {
9899
var itemsSchema = (ArraySchema) composedSchema.getProperties().get("items");
99100
var itemsSchemaName = OpenApiUtils.getSchemaName(itemsSchema.getItems().get$ref());
100101
var itemsObjectName = getObjectNameOrGenerate(itemsSchemaName, itemsSchema.getItems());
101102
return "Paging<" + itemsObjectName + ">";
102103
}
103104

104-
if (allOf.get(0).get$ref() != null) {
105-
var referencedSchemaName = OpenApiUtils.getSchemaName(allOf.get(0).get$ref());
106-
var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.get(0));
107-
var apiObject = ApiObject.builder()
108-
.name(objectName)
109-
.openApiName(openApiName)
110-
.superClassName(referencedObjectName)
111-
.description(composedSchema.getDescription())
112-
.build();
113-
this.schemaObjects.put(objectName, apiObject);
114-
return objectName;
115-
}
105+
var referencedSchemaName = OpenApiUtils.getSchemaName(ref);
106+
var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.getFirst());
107+
var apiObject = ApiObject.builder()
108+
.name(objectName)
109+
.openApiName(openApiName)
110+
.superClassName(referencedObjectName)
111+
.description(composedSchema.getDescription())
112+
.build();
113+
this.schemaObjects.put(objectName, apiObject);
114+
return objectName;
116115
}
117116
if (allOf.size() == 2) {
118117
if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) {
@@ -128,7 +127,7 @@ private String generateApiObject(String openApiName, Schema schema) {
128127
return "CursorPaging<" + itemsObjectName + ">";
129128
}
130129

131-
if (allOf.get(0).get$ref() != null && allOf.get(1) instanceof ObjectSchema objectSchema) {
130+
if (allOf.get(1) instanceof ObjectSchema objectSchema) {
132131
var referencedSchemaName = OpenApiUtils.getSchemaName(allOf.get(0).get$ref());
133132
var referencedObjectName = getObjectNameOrGenerate(referencedSchemaName, allOf.get(0));
134133

@@ -169,8 +168,8 @@ private ApiObject.Property generateApiObjectProperty(String objectName, String n
169168

170169
var resolvedSchema = generationContext.resolveSchema(schema);
171170
if (resolvedSchema instanceof ComposedSchema composedSchema && composedSchema.getAllOf() != null && composedSchema.getAllOf().size() == 1 && composedSchema.getProperties() == null) {
172-
var innerSchemaName = OpenApiUtils.getSchemaName(composedSchema.getAllOf().get(0).get$ref());
173-
var innerSchema = generationContext.resolveSchema(composedSchema.getAllOf().get(0).get$ref());
171+
var innerSchemaName = OpenApiUtils.getSchemaName(composedSchema.getAllOf().getFirst().get$ref());
172+
var innerSchema = generationContext.resolveSchema(composedSchema.getAllOf().getFirst().get$ref());
174173
var innerType = JavaUtils.getPrimitiveTypeOfSchema(innerSchema)
175174
.orElse(innerSchemaName.replace("Object", ""));
176175

@@ -253,7 +252,7 @@ private void fixContextForPaging(Map<String, Object> context) {
253252
context.put("className", context.get("className") + "<T>");
254253
@SuppressWarnings("unchecked")
255254
var properties = (List<Map<String, Object>>)context.get("properties");
256-
properties.add(0, Map.of(
255+
properties.addFirst(Map.of(
257256
"fieldName", "items",
258257
"hasDescription", true,
259258
"description", List.of("<p>The requested data.</p>"),

spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/generators/SpotifyWebApiGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void generate() {
2626
private Map<String, Object> createContext(OpenAPI openAPI, JavaPackage javaPackage) {
2727
var context = new HashMap<String, Object>();
2828
context.put("package", javaPackage.getName());
29-
context.put("endpointUrl", openAPI.getServers().get(0).getUrl());
29+
context.put("endpointUrl", openAPI.getServers().getFirst().getUrl());
3030

3131
var apis = openAPI.getPaths().values().stream()
3232
.flatMap(pathItem -> pathItem.readOperationsMap().values().stream())

spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaPackage.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ public static JavaPackage fromNames(String... packageNames) {
2323
public static JavaPackage fromPackage(String packageName) {
2424
Preconditions.checkArgument(packageName != null);
2525
var packageNames = packageName.split("\\.");
26-
Preconditions.checkArgument(isValidJavaPackageName(packageNames), "Invalid java package");
27-
return new JavaPackage(packageNames);
26+
return fromNames(packageNames);
2827
}
2928

3029
private static boolean isValidJavaPackageName(String[] packageNames) {

spotify-web-api-java-generator/src/main/java/de/sonallux/spotify/generator/java/util/JavaUtils.java

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -97,52 +97,57 @@ public static Optional<String> getTypeOfSchema(Schema<?> schema) {
9797
// if no format is present, use single precision floating point number, for compatability reasons
9898
return Optional.of("Float");
9999
}
100-
if (schema instanceof ArraySchema arraySchema) {
101-
return getTypeOfSchema(arraySchema.getItems())
100+
switch (schema) {
101+
case ArraySchema arraySchema -> {
102+
return getTypeOfSchema(arraySchema.getItems())
102103
.map(itemsType -> "java.util.List<" + itemsType + ">")
103104
.or(() -> Optional.of("java.util.List<java.util.Map<String, Object>>"));
104-
}
105-
if (schema instanceof ComposedSchema composedSchema) {
106-
var allOf = composedSchema.getAllOf();
107-
if (allOf != null) {
108-
if (allOf.size() == 1) {
109-
if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) {
110-
var itemsSchema = (ArraySchema) schema.getProperties().get("items");
111-
return getTypeOfSchema(itemsSchema.getItems())
105+
}
106+
case ComposedSchema composedSchema -> {
107+
var allOf = composedSchema.getAllOf();
108+
if (allOf != null) {
109+
if (allOf.size() == 1) {
110+
if (allOf.getFirst().get$ref().equals("#/components/schemas/PagingObject")) {
111+
var itemsSchema = (ArraySchema) schema.getProperties().get("items");
112+
return getTypeOfSchema(itemsSchema.getItems())
112113
.map(itemsType -> "Paging<" + itemsType + ">");
114+
}
113115
}
114-
}
115-
if (allOf.size() == 2) {
116-
if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) {
117-
var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items");
118-
return getTypeOfSchema(itemsSchema.getItems())
116+
if (allOf.size() == 2) {
117+
if (allOf.get(0).get$ref().equals("#/components/schemas/PagingObject")) {
118+
var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items");
119+
return getTypeOfSchema(itemsSchema.getItems())
119120
.map(itemsType -> "Paging<" + itemsType + ">");
120-
}
121-
if (allOf.get(0).get$ref().equals("#/components/schemas/CursorPagingObject")) {
122-
var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items");
123-
return getTypeOfSchema(itemsSchema.getItems())
121+
}
122+
if (allOf.get(0).get$ref().equals("#/components/schemas/CursorPagingObject")) {
123+
var itemsSchema = (ArraySchema) allOf.get(1).getProperties().get("items");
124+
return getTypeOfSchema(itemsSchema.getItems())
124125
.map(itemsType -> "CursorPaging<" + itemsType + ">");
126+
}
125127
}
126128
}
127-
}
128129

129-
var oneOf = composedSchema.getOneOf();
130-
if (oneOf != null) {
131-
var allBaseObjects = oneOf.stream().map(JavaUtils::getTypeOfSchema)
130+
var oneOf = composedSchema.getOneOf();
131+
if (oneOf != null) {
132+
var allBaseObjects = oneOf.stream().map(JavaUtils::getTypeOfSchema)
132133
.filter(Optional::isPresent)
133134
.map(Optional::get)
134135
.allMatch(BaseObjectGenerator.BASE_OBJECT_NAMES::contains);
135-
if (allBaseObjects) {
136-
return Optional.of("BaseObject");
136+
if (allBaseObjects) {
137+
return Optional.of("BaseObject");
138+
}
137139
}
138-
}
139140

140-
// Resolve type of other composed schema via reference name
141-
return Optional.empty();
142-
}
141+
// Resolve type of other composed schema via reference name
142+
return Optional.empty();
143143

144-
if (schema instanceof MapSchema) {
145-
return Optional.of("java.util.Map<String, Object>");
144+
// Resolve type of other composed schema via reference name
145+
}
146+
case MapSchema mapSchema -> {
147+
return Optional.of("java.util.Map<String, Object>");
148+
}
149+
default -> {
150+
}
146151
}
147152

148153
// Type can not be resolved just by schema

0 commit comments

Comments
 (0)