Skip to content

Commit f2f9f56

Browse files
authored
fix mapPackagesToNamespaces in AxiosClientExtension (#883)
1 parent 4db9833 commit f2f9f56

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/ext/AxiosClientExtension.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ public void emitElements(Writer writer, Settings settings, boolean exportKeyword
4545
for (TsBeanModel bean : model.getBeans()) {
4646
if (bean.isJaxrsApplicationClientBean()) {
4747
final String clientName = bean.getName().getSimpleName();
48-
emitClient(writer, settings, exportKeyword, clientName);
48+
final String clientFullName = settings.mapPackagesToNamespaces ? bean.getName().getFullName(): bean.getName().getSimpleName();
49+
emitClient(writer, settings, exportKeyword, clientName, clientFullName);
4950
}
5051
}
5152
}
@@ -55,12 +56,13 @@ private void emitSharedPart(Writer writer, Settings settings) {
5556
Emitter.writeTemplate(writer, settings, template, null);
5657
}
5758

58-
private void emitClient(Writer writer, Settings settings, boolean exportKeyword, String clientName) {
59+
private void emitClient(Writer writer, Settings settings, boolean exportKeyword, String clientName, String clientFullName) {
5960
final List<String> template = Utils.readLines(getClass().getResourceAsStream("AxiosClientExtension-client.template.ts"));
6061
final Map<String, String> replacements = new LinkedHashMap<>();
6162
replacements.put("\"", settings.quotes);
6263
replacements.put("/*export*/ ", exportKeyword ? "export " : "");
6364
replacements.put("$$RestApplicationClient$$", clientName);
65+
replacements.put("$$RestApplicationClientFullName$$", clientFullName);
6466
replacements.put("$$AxiosRestApplicationClient$$", "Axios" + clientName);
6567
Emitter.writeTemplate(writer, settings, template, replacements);
6668
}

typescript-generator-core/src/main/resources/cz/habarta/typescript/generator/ext/AxiosClientExtension-client.template.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
/*export*/ class $$AxiosRestApplicationClient$$ extends $$RestApplicationClient$$<Axios.AxiosRequestConfig> {
2+
/*export*/ class $$AxiosRestApplicationClient$$ extends $$RestApplicationClientFullName$$<Axios.AxiosRequestConfig> {
33

44
constructor(baseURL: string, axiosInstance: Axios.AxiosInstance = axios.create()) {
55
axiosInstance.defaults.baseURL = baseURL;

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/ext/AxiosClientExtensionTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,31 @@ public void test() {
4242
Assertions.assertTrue(output.contains("constructor(baseURL: string, axiosInstance: Axios.AxiosInstance = axios.create())"), errorMessage);
4343
}
4444

45+
@Test
46+
public void mapPackagesToNamespaces() {
47+
final Settings settings = TestUtils.settings();
48+
settings.outputFileType = TypeScriptFileType.implementationFile;
49+
settings.outputKind = TypeScriptOutputKind.module;
50+
settings.generateJaxrsApplicationClient = true;
51+
settings.restNamespacing = RestNamespacing.perResource;
52+
settings.mapPackagesToNamespaces = true;
53+
settings.extensions.add(new AxiosClientExtension());
54+
final String output = new TypeScriptGenerator(settings).generateTypeScript(Input.from(JaxrsApplicationTest.OrganizationApplication.class));
55+
final String errorMessage = "Unexpected output: " + output;
56+
57+
Assertions.assertTrue(output.contains("interface Organization"), errorMessage);
58+
Assertions.assertTrue(output.contains("interface Address"), errorMessage);
59+
Assertions.assertTrue(output.contains("interface Person"), errorMessage);
60+
Assertions.assertTrue(output.contains("interface HttpClient"), errorMessage);
61+
62+
Assertions.assertTrue(output.contains("class OrganizationsResourceClient<O>"), errorMessage);
63+
Assertions.assertTrue(output.contains("class PersonResourceClient<O>"), errorMessage);
64+
Assertions.assertTrue(output.contains("type RestResponse<R> = Promise<Axios.GenericAxiosResponse<R>>"), errorMessage);
65+
66+
Assertions.assertTrue(output.contains("class AxiosHttpClient implements HttpClient<Axios.AxiosRequestConfig>"), errorMessage);
67+
Assertions.assertTrue(output.contains("request<R>(requestConfig: { method: string; url: string; queryParams?: any; data?: any; copyFn?: (data: R) => R; options?: Axios.AxiosRequestConfig; }): RestResponse<R>"), errorMessage);
68+
Assertions.assertTrue(output.contains("export class AxiosOrganizationsResourceClient extends cz.habarta.typescript.generator.JaxrsApplicationTest.OrganizationsResourceClient<Axios.AxiosRequestConfig>"), errorMessage);
69+
Assertions.assertTrue(output.contains("class AxiosPersonResourceClient extends cz.habarta.typescript.generator.JaxrsApplicationTest.PersonResourceClient<Axios.AxiosRequestConfig>"), errorMessage);
70+
Assertions.assertTrue(output.contains("constructor(baseURL: string, axiosInstance: Axios.AxiosInstance = axios.create())"), errorMessage);
71+
}
4572
}

0 commit comments

Comments
 (0)