Skip to content

Commit 8dd54d6

Browse files
committed
Add type extensions to simplify getting class of generic type parameters
1 parent 1d58a39 commit 8dd54d6

File tree

5 files changed

+29
-2
lines changed

5 files changed

+29
-2
lines changed

src/SDK/Language/Android.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@ public function getFiles()
136136
'destination' => '/library/src/main/java/{{ sdk.namespace | caseSlash }}/extensions/JsonExtensions.kt',
137137
'template' => '/android/library/src/main/java/io/appwrite/extensions/JsonExtensions.kt.twig',
138138
],
139+
[
140+
'scope' => 'default',
141+
'destination' => '/library/src/main/java/{{ sdk.namespace | caseSlash }}/extensions/TypeExtensions.kt',
142+
'template' => '/android/library/src/main/java/io/appwrite/extensions/TypeExtensions.kt.twig',
143+
],
139144
[
140145
'scope' => 'default',
141146
'destination' => '/library/src/main/java/{{ sdk.namespace | caseSlash }}/extensions/CollectionExtensions.kt',

src/SDK/Language/Kotlin.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,12 @@ public function getFiles()
402402
'template' => '/kotlin/src/main/kotlin/io/appwrite/extensions/JsonExtensions.kt.twig',
403403
'minify' => false,
404404
],
405+
[
406+
'scope' => 'default',
407+
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/extensions/TypeExtensions.kt',
408+
'template' => '/kotlin/src/main/kotlin/io/appwrite/extensions/TypeExtensions.kt.twig',
409+
'minify' => false,
410+
],
405411
[
406412
'scope' => 'default',
407413
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/json/PreciseNumberAdapter.kt',
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package {{ sdk.namespace | caseDot }}.extensions
2+
3+
import kotlin.reflect.KClass
4+
import kotlin.reflect.typeOf
5+
6+
inline fun <reified T : Any> classOf(): Class<T> {
7+
return (typeOf<T>().classifier!! as KClass<T>).java
8+
}

templates/android/library/src/main/java/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ class {{ service.name | caseUcfirst }} : Service {
156156
headers,
157157
params,
158158
{%~ if method.responseModel | hasGenericType(spec) %}
159-
responseType = (typeOf<{{ method | returnType(spec, sdk.namespace | caseDot) | raw }}>().classifier!! as KClass<{{ method | returnType(spec, sdk.namespace | caseDot) | raw }}>).java,
159+
responseType = classOf(),
160160
{%~ else %}
161161
responseType = {{ method | returnType(spec, sdk.namespace | caseDot) | raw }}::class.java,
162162
{%~ endif %}
@@ -203,7 +203,7 @@ class {{ service.name | caseUcfirst }} : Service {
203203
{{ parameter.name | caseCamel }},
204204
{%~ endfor %}
205205
{%~ if method.responseModel | hasGenericType(spec) %}
206-
nestedType = (typeOf<Map<String, Any>>().classifier!! as KClass<Map<String, Any>>).java,
206+
nestedType = classOf(),
207207
{%~ endif %}
208208
{%~ if 'multipart/form-data' in method.consumes %}
209209
onProgress = onProgress
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package {{ sdk.namespace | caseDot }}.extensions
2+
3+
import kotlin.reflect.KClass
4+
import kotlin.reflect.typeOf
5+
6+
inline fun <reified T : Any> classOf(): Class<T> {
7+
return (typeOf<T>().classifier!! as KClass<T>).java
8+
}

0 commit comments

Comments
 (0)