Skip to content

Commit c8cb080

Browse files
committed
Merge remote-tracking branch 'origin/doc-updates' into feat-improve-java-interop
# Conflicts: # templates/kotlin/src/main/kotlin/io/appwrite/services/ServiceTemplate.kt.twig
2 parents 4862cc0 + 3f12296 commit c8cb080

File tree

11 files changed

+131
-182
lines changed

11 files changed

+131
-182
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ env:
2727
- SDK=FlutterStable
2828
- SDK=Go112
2929
- SDK=Go118
30-
- SDK=FlutterBeta
30+
# - SDK=FlutterBeta
3131
- SDK=KotlinJava8
3232
- SDK=KotlinJava11
3333
- SDK=KotlinJava17
Lines changed: 46 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,67 @@
1-
import androidx.appcompat.app.AppCompatActivity
2-
import android.os.Bundle
3-
import kotlinx.coroutines.GlobalScope
4-
import kotlinx.coroutines.launch
1+
{% import 'kotlin/base/utils.twig' as utils %}
52
import {{ sdk.namespace | caseDot }}.Client
63
{% if method.parameters.all | filter((param) => param.type == 'file') | length > 0 %}
74
import {{ sdk.namespace | caseDot }}.models.InputFile
85
{% endif %}
96
import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}
107

11-
public class MainActivity extends AppCompatActivity {
12-
13-
@Override
14-
protected void onCreate(Bundle savedInstanceState) {
15-
super.onCreate(savedInstanceState);
16-
setContentView(R.layout.activity_main);
17-
18-
Client client = new Client(getApplicationContext())
8+
Client client = Client(context)
199
{% if method.security|length > 0 %}
20-
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
10+
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
2111
{% for node in method.security %}
2212
{% for key,header in node|keys %}
23-
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}"){% if loop.last %};{% endif %} // {{node[header].description}}
24-
{% endfor %}
25-
{% endfor %}
26-
{% endif %}
13+
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}"){% if loop.last %};{% endif %} // {{node[header].description}}
14+
{% endfor %}{% endfor %}{% endif %}
2715

28-
{{ service.name | caseUcfirst }} {{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}(client);
16+
{{ service.name | caseUcfirst }} {{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}(client);
2917

30-
{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}new Continuation<Object>() {
31-
@NotNull
32-
@Override
33-
public CoroutineContext getContext() {
34-
return EmptyCoroutineContext.INSTANCE;
35-
}
18+
{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}new Continuation<{{ utils.resultTypeJava(sdk.namespace, method) }}>() {
19+
@NotNull
20+
@Override
21+
public CoroutineContext getContext() {
22+
return EmptyCoroutineContext.INSTANCE;
23+
}
3624

37-
@Override
38-
public void resumeWith(@NotNull Object o) {
39-
String json = "";
40-
try {
41-
if (o instanceof Result.Failure) {
42-
Result.Failure failure = (Result.Failure) o;
43-
throw failure.exception;
44-
}{% if method.type != "webAuth" %} else {
45-
Response response = (Response) o;
46-
json = response.body().string();
47-
}{% endif %}
48-
49-
}
50-
} catch (Throwable th) {
51-
Log.e("ERROR", th.toString());
52-
}
53-
}
54-
});{% endif %}
25+
@Override
26+
public void resumeWith(@NotNull Object o) {
27+
if (o instanceof Result.Failure) {
28+
Result.Failure failure = (Result.Failure) o;
29+
failure.exception.printStackTrace();
30+
return;
31+
}
32+
33+
{{ utils.resultTypeJava(sdk.namespace, method) }} response = ({{ utils.resultTypeJava(sdk.namespace, method) }}) o;
34+
}
35+
});{% endif %}
5536

56-
{% if method.type == "webAuth" %}
57-
this,
58-
{% endif %}
5937
{% for parameter in method.parameters.all %}
6038
{% if parameter.required %}
61-
{{ parameter | paramExample }}{% if not loop.last %}, {% endif %}
39+
{{ parameter | paramExample }}{% if not loop.last %},{% endif %}
6240

6341
{% endif %}
6442
{% if loop.last %}
65-
new Continuation<Object>() {
66-
@NotNull
67-
@Override
68-
public CoroutineContext getContext() {
69-
return EmptyCoroutineContext.INSTANCE;
70-
}
43+
new Continuation<{{ utils.resultTypeJava(sdk.namespace, method) }}>() {
44+
@NotNull
45+
@Override
46+
public CoroutineContext getContext() {
47+
return EmptyCoroutineContext.INSTANCE;
48+
}
7149

72-
@Override
73-
public void resumeWith(@NotNull Object o) {
74-
String json = "";
75-
try {
76-
if (o instanceof Result.Failure) {
77-
Result.Failure failure = (Result.Failure) o;
78-
throw failure.exception;
79-
}{% if method.type != "webAuth" %} else {
80-
Response response = (Response) o;
81-
json = response.body().string();
82-
}{% endif %}
83-
84-
} catch (Throwable th) {
85-
Log.e("ERROR", th.toString());
86-
}
87-
}
50+
@Override
51+
public void resumeWith(@NotNull Object o) {
52+
if (o instanceof Result.Failure) {
53+
Result.Failure failure = (Result.Failure) o;
54+
failure.exception.printStackTrace();
55+
return;
8856
}
89-
);
90-
{% endif %}
91-
{% endfor %}
57+
58+
{%~ if method.type != 'webAuth' %}
59+
{{ utils.resultTypeJava(sdk.namespace, method) }} response = ({{ utils.resultTypeJava(sdk.namespace, method) }}) o;
60+
{%~ else %}
61+
// Success
62+
{%~ endif %}
63+
}
9264
}
93-
}
65+
);
66+
{% endif %}
67+
{% endfor %}
Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,27 @@
1-
import androidx.appcompat.app.AppCompatActivity
2-
import android.os.Bundle
3-
import kotlinx.coroutines.GlobalScope
4-
import kotlinx.coroutines.launch
51
import {{ sdk.namespace | caseDot }}.Client
62
{% if method.parameters.all | filter((param) => param.type == 'file') | length > 0 %}
73
import {{ sdk.namespace | caseDot }}.models.InputFile
84
{% endif %}
95
import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}
106

11-
class MainActivity : AppCompatActivity() {
12-
override fun onCreate(savedInstanceState: Bundle?) {
13-
super.onCreate(savedInstanceState)
14-
setContentView(R.layout.activity_main)
15-
16-
val client = Client(applicationContext)
7+
val client = Client(context)
178
{% if method.security|length > 0 %}
18-
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
9+
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
1910
{% for node in method.security %}
2011
{% for key,header in node|keys %}
21-
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}") // {{node[header].description}}
22-
{% endfor %}
23-
{% endfor %}
24-
{% endif %}
12+
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}") // {{node[header].description}}
13+
{% endfor %}{% endfor %}{% endif %}
2514

26-
val {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client)
15+
val {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client)
2716

28-
GlobalScope.launch {
29-
{% if method.type == 'webAuth' %} {% elseif method.type == 'location' %} val result = {% else %} val response = {% endif %}{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}){% endif %}
17+
{% if method.type == 'webAuth' %}{% elseif method.type == 'location' %}val result = {% else %}val response = {% endif %}{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}){% endif %}
3018

31-
{% if method.type == "webAuth" %}
32-
activity = this@MainActivity,
33-
{% endif %}
3419
{% for parameter in method.parameters.all %}
3520
{% if parameter.required %}
36-
{{parameter.name}} = {{ parameter | paramExample }}{% if not loop.last %},{% endif %}
21+
{{parameter.name}} = {{ parameter | paramExample }}{% if not loop.last %},{% endif %}
3722

3823
{% endif %}
3924
{% if loop.last %}
40-
)
25+
)
4126
{% endif %}
42-
{% endfor %}
43-
{% if method.type == 'webAuth' %}{% elseif method.type == 'location' %} println(result); // Resource URL{% else %} val json = response.body?.string(){% endif %}
44-
45-
}
46-
}
47-
}
27+
{% endfor %}

templates/kotlin/base/requests/api.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
path,
55
headers,
66
params,
7-
responseType = {{ utils.resultType(sdk.namespace, method) }}::class.java,
7+
responseType = {{ utils.resultTypeKt(sdk.namespace, method) }}::class.java,
88
{% if method.responseModel %}
99
converter,
1010
{% endif %}

templates/kotlin/base/requests/file.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
path,
1111
headers,
1212
params,
13-
responseType = {{ utils.resultType(sdk.namespace, method) }}::class.java,
13+
responseType = {{ utils.resultTypeKt(sdk.namespace, method) }}::class.java,
1414
{% if method.responseModel %}
1515
converter,
1616
{% endif %}

templates/kotlin/base/requests/location.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
"{{ method.method | caseUpper }}",
44
path,
55
params = params,
6-
responseType = {{ utils.resultType(sdk.namespace, method) }}::class.java
6+
responseType = {{ utils.resultTypeKt(sdk.namespace, method) }}::class.java
77
)

templates/kotlin/base/utils.twig

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
{% macro methodNeedsSecurityParameters(method) %}
66
{% if (method.type == "webAuth" or method.type == "location") and method.security|length > 0 %}{{ true }}{% else %}{{false}}{% endif %}
77
{% endmacro %}
8-
{% macro resultType(namespace, method) %}
9-
{% if method.type == "webAuth" %}Bool{% elseif method.type == "location" %}ByteArray{% elseif not method.responseModel or method.responseModel == 'any' %}Any{% else %}{{ namespace | caseDot}}.models.{{method.responseModel | caseUcfirst}}{% endif %}
8+
{% macro resultTypeKt(namespace, method) %}
9+
{% if method.type == "webAuth" %}{% elseif method.type == "location" %}ByteArray{% elseif not method.responseModel or method.responseModel == 'any' %}Any{% else %}{{ namespace | caseDot}}.models.{{method.responseModel | caseUcfirst}}{% endif %}
10+
{% endmacro %}
11+
{% macro resultTypeJava(namespace, method) %}
12+
{% if method.type == "webAuth" %}Void{% elseif method.type == "location" %}byte[]{% elseif not method.responseModel or method.responseModel == 'any' %}Object{% else %}{{ namespace | caseDot}}.models.{{method.responseModel | caseUcfirst}}{% endif %}
1013
{% endmacro %}
Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,67 @@
1+
{% import 'kotlin/base/utils.twig' as utils %}
12
import {{ sdk.namespace | caseDot }}.Client
23
{% if method.parameters.all | filter((param) => param.type == 'file') | length > 0 %}
34
import {{ sdk.namespace | caseDot }}.models.InputFile
45
{% endif %}
56
import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}
67

7-
public void main() {
8-
Client client = Client(context)
8+
Client client = Client(context)
99
{% if method.security|length > 0 %}
10-
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
10+
.setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
1111
{% for node in method.security %}
1212
{% for key,header in node|keys %}
13-
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}"){% if loop.last %};{% endif %} // {{node[header].description}}
13+
.set{{header | caseUcfirst}}("{{node[header]['x-appwrite']['demo']}}"){% if loop.last %};{% endif %} // {{node[header].description}}
1414
{% endfor %}{% endfor %}{% endif %}
1515

16-
{{ service.name | caseUcfirst }} {{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}(client{% if service.globalParams | length %}{% for parameter in service.globalParams %}, {{ parameter | paramExample }}{% endfor %}{% endif %});
17-
{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}new Continuation<Response>() {
18-
@NotNull
19-
@Override
20-
public CoroutineContext getContext() {
21-
return EmptyCoroutineContext.INSTANCE;
22-
}
16+
{{ service.name | caseUcfirst }} {{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}(client);
2317

24-
@Override
25-
public void resumeWith(@NotNull Object o) {
26-
String json = "";
27-
try {
28-
if (o instanceof Result.Failure) {
29-
Result.Failure failure = (Result.Failure) o;
30-
throw failure.exception;
31-
} else {
32-
Response response = (Response) o;
33-
}
34-
} catch (Throwable th) {
35-
Log.e("ERROR", th.toString());
36-
}
18+
{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | length == 0 %}new Continuation<{{ utils.resultTypeJava(sdk.namespace, method) }}>() {
19+
@NotNull
20+
@Override
21+
public CoroutineContext getContext() {
22+
return EmptyCoroutineContext.INSTANCE;
23+
}
24+
25+
@Override
26+
public void resumeWith(@NotNull Object o) {
27+
if (o instanceof Result.Failure) {
28+
Result.Failure failure = (Result.Failure) o;
29+
failure.exception.printStackTrace();
30+
return;
3731
}
38-
});{% endif %}
32+
33+
{{ utils.resultTypeJava(sdk.namespace, method) }} response = ({{ utils.resultTypeJava(sdk.namespace, method) }}) o;
34+
}
35+
});{% endif %}
3936

4037
{% for parameter in method.parameters.all %}
4138
{% if parameter.required %}
42-
{{parameter.name}} = {{ parameter | paramExample }}{% if not loop.last %},{% endif %}
39+
{{ parameter | paramExample }}{% if not loop.last %},{% endif %}
4340

4441
{% endif %}
4542
{% if loop.last %}
46-
new Continuation<Response>() {
47-
@NotNull
48-
@Override
49-
public CoroutineContext getContext() {
50-
return EmptyCoroutineContext.INSTANCE;
51-
}
43+
new Continuation<{{ utils.resultTypeJava(sdk.namespace, method) }}>() {
44+
@NotNull
45+
@Override
46+
public CoroutineContext getContext() {
47+
return EmptyCoroutineContext.INSTANCE;
48+
}
5249

53-
@Override
54-
public void resumeWith(@NotNull Object o) {
55-
String json = "";
56-
try {
57-
if (o instanceof Result.Failure) {
58-
Result.Failure failure = (Result.Failure) o;
59-
throw failure.exception;
60-
} else {
61-
Response response = (Response) o;
62-
}
63-
} catch (Throwable th) {
64-
Log.e("ERROR", th.toString());
65-
}
50+
@Override
51+
public void resumeWith(@NotNull Object o) {
52+
if (o instanceof Result.Failure) {
53+
Result.Failure failure = (Result.Failure) o;
54+
failure.exception.printStackTrace();
55+
return;
6656
}
57+
58+
{%~ if method.type != 'webAuth' %}
59+
{{ utils.resultTypeJava(sdk.namespace, method) }} response = ({{ utils.resultTypeJava(sdk.namespace, method) }}) o;
60+
{%~ else %}
61+
// Success
62+
{%~ endif %}
6763
}
68-
);
64+
}
65+
);
6966
{% endif %}
70-
{% endfor %}
71-
}
67+
{% endfor %}

0 commit comments

Comments
 (0)