Skip to content

Commit 3619841

Browse files
committed
add spring boot 4.x server support and tests
1 parent 738e3a1 commit 3619841

22 files changed

Lines changed: 3149 additions & 0 deletions

File tree

openapi-codegen-maven-plugin-sb4-test/pom.xml

Lines changed: 728 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.davidmoten.oa3.codegen.test;
2+
3+
import java.util.List;
4+
5+
import org.davidmoten.oa3.codegen.http.service.ApacheHttpClientHttpService;
6+
import org.davidmoten.oa3.codegen.http.service.DefaultHttpService;
7+
import org.davidmoten.oa3.codegen.http.service.HttpService;
8+
9+
import com.github.davidmoten.guavamini.Lists;
10+
11+
public final class Helper {
12+
13+
private Helper() {
14+
// prevent instantiation
15+
}
16+
17+
public static List<HttpService> httpServices() {
18+
return Lists.of(DefaultHttpService.INSTANCE, ApacheHttpClientHttpService.INSTANCE);
19+
}
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.davidmoten.oa3.codegen.test;
2+
3+
public class Structure {
4+
5+
Thing a;
6+
7+
Thing.More b;
8+
9+
public static class Thing {
10+
11+
public static class More {
12+
13+
}
14+
15+
}
16+
17+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.davidmoten.oa3.codegen.test;
2+
3+
public class Thing {
4+
5+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.davidmoten.oa3.codegen.test.library;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
6+
7+
@EnableConfigurationProperties
8+
@SpringBootApplication
9+
public class LibraryApplication {
10+
11+
public static void main(String[] args) {
12+
SpringApplication.run(LibraryApplication.class, args);
13+
}
14+
15+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.davidmoten.oa3.codegen.test.library;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.List;
6+
import java.util.Optional;
7+
8+
import org.davidmoten.oa3.codegen.http.BearerAuthenticator;
9+
import org.davidmoten.oa3.codegen.http.service.HttpService;
10+
import org.davidmoten.oa3.codegen.test.Helper;
11+
import org.davidmoten.oa3.codegen.test.library.client.Client;
12+
import org.davidmoten.oa3.codegen.test.library.schema.UsersPage;
13+
import org.junit.jupiter.params.ParameterizedTest;
14+
import org.junit.jupiter.params.provider.MethodSource;
15+
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
16+
import org.springframework.boot.test.context.SpringBootTest;
17+
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
18+
import org.springframework.boot.test.web.server.LocalServerPort;
19+
20+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
21+
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
22+
23+
@SpringBootTest(classes = { LibraryApplication.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
24+
@AutoConfigureWebTestClient
25+
public class LibraryServerTest {
26+
27+
@LocalServerPort
28+
int serverPort;
29+
30+
31+
@ParameterizedTest
32+
@MethodSource("httpServices")
33+
public void testClientServerAllOf(HttpService httpService) {
34+
BearerAuthenticator authenticator = () -> "tokenthingy";
35+
Client client = Client //
36+
.basePath("http://localhost:" + serverPort) //
37+
.interceptor(authenticator) //
38+
.httpService(httpService) //
39+
.build();
40+
UsersPage page = client.getUsers(Optional.empty(), Optional.empty()).get();
41+
assertEquals(20, page.users().value().size());
42+
assertEquals("User19", page.users().value().get(18).firstName());
43+
}
44+
45+
static List<HttpService> httpServices() {
46+
return Helper.httpServices();
47+
}
48+
49+
public static final class Thing {
50+
51+
@JsonAutoDetect(fieldVisibility = Visibility.ANY, creatorVisibility = Visibility.ANY, setterVisibility = Visibility.ANY)
52+
public static final class Visibility2 {
53+
}
54+
}
55+
56+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package org.davidmoten.oa3.codegen.test.library;
2+
3+
import java.util.Optional;
4+
import java.util.stream.Collectors;
5+
import java.util.stream.IntStream;
6+
7+
import org.davidmoten.oa3.codegen.spring.runtime.ServiceException;
8+
import org.davidmoten.oa3.codegen.test.library.schema.Item;
9+
import org.davidmoten.oa3.codegen.test.library.schema.User;
10+
import org.davidmoten.oa3.codegen.test.library.schema.UserId;
11+
import org.davidmoten.oa3.codegen.test.library.schema.UserIdWrapped;
12+
import org.davidmoten.oa3.codegen.test.library.schema.UserWithId;
13+
import org.davidmoten.oa3.codegen.test.library.schema.UsersPage;
14+
import org.davidmoten.oa3.codegen.test.library.schema.UsersPage.Users;
15+
import org.davidmoten.oa3.codegen.test.library.service.Service;
16+
import org.springframework.stereotype.Component;
17+
18+
@Component
19+
public class LibraryService implements Service {
20+
21+
@Override
22+
public UsersPage getUsers(Optional<String> search, Optional<String> continuationToken) throws ServiceException {
23+
Users users = new Users(IntStream.range(1, 21).mapToObj(i -> createUser(i)).collect(Collectors.toList()));
24+
return new UsersPage(users, Optional.empty());
25+
}
26+
27+
private UserWithId createUser(int i) {
28+
return new UserWithId(User.builder() //
29+
.firstName("User" + i) //
30+
.lastName("Gomez") //
31+
.email("user" + i + ".gomez@gmail.com") //
32+
.build(), //
33+
UserIdWrapped.userId(UserId.of(i + "")));
34+
}
35+
36+
@Override
37+
public void createUser(User requestBody) throws ServiceException {
38+
Service.super.createUser(requestBody);
39+
}
40+
41+
@Override
42+
public User getUser(String id) throws ServiceException {
43+
return Service.super.getUser(id);
44+
}
45+
46+
@Override
47+
public void updateUser(String id, User requestBody) throws ServiceException {
48+
Service.super.updateUser(id, requestBody);
49+
}
50+
51+
@Override
52+
public void deleteUser(String id) throws ServiceException {
53+
Service.super.deleteUser(id);
54+
}
55+
56+
@Override
57+
public Item getItem(String itemId) throws ServiceException {
58+
return Service.super.getItem(itemId);
59+
}
60+
61+
}

0 commit comments

Comments
 (0)