Skip to content

Commit 0945092

Browse files
committed
Fix generics in request and callbacks
1 parent c54cb6e commit 0945092

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

src/main/java/com/pengrad/telegrambot/Callback.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.pengrad.telegrambot;
22

33
import com.pengrad.telegrambot.request.BaseRequest;
4+
import com.pengrad.telegrambot.response.BaseResponse;
45

56
import java.io.IOException;
67

78
/**
89
* stas
910
* 5/3/16.
1011
*/
11-
public interface Callback<T extends BaseRequest, R> {
12+
public interface Callback<T extends BaseRequest, R extends BaseResponse> {
1213

1314
void onResponse(T request, R response);
1415

src/main/java/com/pengrad/telegrambot/OldTelegramBot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public abstract class OldTelegramBot {
1818
this.fileApi = file;
1919
}
2020

21-
abstract public <T extends BaseRequest, R> R execute(BaseRequest<T, R> request);
21+
abstract public <T extends BaseRequest, R extends BaseResponse> R execute(BaseRequest<T, R> request);
2222

2323
@Deprecated
2424
public GetFileResponse getFile(String fileId) {

src/main/java/com/pengrad/telegrambot/TelegramBot.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.pengrad.telegrambot.impl.TelegramBotClient;
55
import com.pengrad.telegrambot.model.File;
66
import com.pengrad.telegrambot.request.BaseRequest;
7+
import com.pengrad.telegrambot.response.BaseResponse;
78

89
/**
910
* Stas Parshin
@@ -25,11 +26,11 @@ public String getFullFilePath(File file) {
2526
}
2627

2728
@Override
28-
public <T extends BaseRequest, R> R execute(BaseRequest<T, R> request) {
29+
public <T extends BaseRequest, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
2930
return api.send(request);
3031
}
3132

32-
public <T extends BaseRequest<T, R>, R> void execute(T request, Callback<T, R> callback) {
33+
public <T extends BaseRequest<T, R>, R extends BaseResponse> void execute(T request, Callback<T, R> callback) {
3334
api.send(request, callback);
3435
}
3536
}

src/main/java/com/pengrad/telegrambot/impl/TelegramBotClient.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.gson.Gson;
44
import com.pengrad.telegrambot.Callback;
55
import com.pengrad.telegrambot.request.BaseRequest;
6+
import com.pengrad.telegrambot.response.BaseResponse;
67
import okhttp3.*;
78

89
import java.io.File;
@@ -25,7 +26,7 @@ public TelegramBotClient(OkHttpClient client, Gson gson, String baseUrl) {
2526
this.baseUrl = baseUrl;
2627
}
2728

28-
public <T extends BaseRequest<T, R>, R> void send(final T request, final Callback<T, R> callback) {
29+
public <T extends BaseRequest, R extends BaseResponse> void send(final T request, final Callback<T, R> callback) {
2930
client.newCall(createRequest(request)).enqueue(new okhttp3.Callback() {
3031
@Override
3132
public void onResponse(Call call, Response response) {
@@ -44,7 +45,7 @@ public void onFailure(Call call, IOException e) {
4445
});
4546
}
4647

47-
public <T extends BaseRequest, R> R send(final BaseRequest<T, R> request) {
48+
public <T extends BaseRequest, R extends BaseResponse> R send(final BaseRequest<T, R> request) {
4849
try {
4950
Response response = client.newCall(createRequest(request)).execute();
5051
return gson.fromJson(response.body().string(), request.getResponseType());
@@ -53,14 +54,14 @@ public <T extends BaseRequest, R> R send(final BaseRequest<T, R> request) {
5354
}
5455
}
5556

56-
private <R> Request createRequest(BaseRequest<?, R> request) {
57+
private Request createRequest(BaseRequest request) {
5758
return new Request.Builder()
5859
.url(baseUrl + request.getMethod())
5960
.post(createRequestBody(request))
6061
.build();
6162
}
6263

63-
private <R> RequestBody createRequestBody(BaseRequest<?, R> request) {
64+
private RequestBody createRequestBody(BaseRequest<?, ?> request) {
6465
if (request.isMultipart()) {
6566
MediaType contentType = MediaType.parse(request.getContentType());
6667

src/main/java/com/pengrad/telegrambot/request/BaseRequest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.pengrad.telegrambot.request;
22

3+
import com.pengrad.telegrambot.response.BaseResponse;
4+
35
import java.lang.reflect.Type;
46
import java.util.HashMap;
57
import java.util.Map;
@@ -8,15 +10,15 @@
810
* stas
911
* 5/1/16.
1012
*/
11-
abstract public class BaseRequest<T extends BaseRequest, R> {
13+
abstract public class BaseRequest<T extends BaseRequest, R extends BaseResponse> {
1214

1315
@SuppressWarnings("unchecked")
1416
private final T thisAsT = (T) this;
1517

16-
private final Class responseClass;
18+
private final Class<? extends R> responseClass;
1719
private final Map<String, Object> parameters;
1820

19-
public BaseRequest(Class responseClass) {
21+
public BaseRequest(Class<? extends R> responseClass) {
2022
this.responseClass = responseClass;
2123
this.parameters = new HashMap<String, Object>();
2224
}

0 commit comments

Comments
 (0)