Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.pengrad.telegrambot;

/**
* Stas Parshin
* 14 June 2019
*/
public interface ExceptionHandler {

void onException(TelegramException e);

}
10 changes: 9 additions & 1 deletion library/src/main/java/com/pengrad/telegrambot/TelegramBot.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,15 @@ public void setUpdatesListener(UpdatesListener listener) {
}

public void setUpdatesListener(UpdatesListener listener, GetUpdates request) {
updatesHandler.start(this, listener, request);
setUpdatesListener(listener, null, request);
}

public void setUpdatesListener(UpdatesListener listener, ExceptionHandler exceptionHandler) {
setUpdatesListener(listener, exceptionHandler, new GetUpdates());
}

public void setUpdatesListener(UpdatesListener listener, ExceptionHandler exceptionHandler, GetUpdates request) {
updatesHandler.start(this, listener, exceptionHandler, request);
}

public void removeGetUpdatesListener() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.pengrad.telegrambot;

import com.pengrad.telegrambot.response.BaseResponse;

/**
* Stas Parshin
* 17 June 2019
*/
public class TelegramException extends Exception {
private BaseResponse response;

public TelegramException(String message, BaseResponse response) {
super(message);
this.response = response;
}

public TelegramException(Exception e) {
super(e);
}

public BaseResponse response() {
return response;
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.pengrad.telegrambot.impl;

import com.pengrad.telegrambot.Callback;
import com.pengrad.telegrambot.TelegramBot;
import com.pengrad.telegrambot.UpdatesListener;
import com.pengrad.telegrambot.*;
import com.pengrad.telegrambot.model.Update;
import com.pengrad.telegrambot.request.GetUpdates;
import com.pengrad.telegrambot.response.GetUpdatesResponse;
Expand All @@ -22,22 +20,25 @@ public class UpdatesHandler {

private TelegramBot bot;
private UpdatesListener listener;
private ExceptionHandler exceptionHandler;

private final long sleepTimeout;

public UpdatesHandler(long sleepTimeout) {
this.sleepTimeout = sleepTimeout;
}

public void start(TelegramBot bot, UpdatesListener listener, GetUpdates request) {
public void start(TelegramBot bot, UpdatesListener listener, ExceptionHandler exceptionHandler, GetUpdates request) {
this.bot = bot;
this.listener = listener;
this.exceptionHandler = exceptionHandler;
getUpdates(request);
}

public void stop() {
bot = null;
listener = null;
exceptionHandler = null;
}

private void getUpdates(GetUpdates request) {
Expand All @@ -50,9 +51,15 @@ public void onResponse(GetUpdates request, GetUpdatesResponse response) {

if (!response.isOk() || response.updates() == null || response.updates().size() <= 0) {
if (!response.isOk()) {
Platform.get().log(Platform.INFO,
"Update listener error for request " + request.toWebhookResponse() +
" with response " + response.errorCode() + " " + response.description(), null);
if (exceptionHandler != null) {
String message = "GetUpdates failed with error_code " +
response.errorCode() + " " + response.description();
exceptionHandler.onException(new TelegramException(message, response));
} else {
Platform.get().log(Platform.INFO,
"Update listener error for request " + request.toWebhookResponse() +
" with response " + response.errorCode() + " " + response.description(), null);
}
}
sleep();
getUpdates(request);
Expand All @@ -73,7 +80,11 @@ public void onResponse(GetUpdates request, GetUpdatesResponse response) {

@Override
public void onFailure(GetUpdates request, IOException e) {
Platform.get().log(Platform.INFO, "Update listener failure", e);
if (exceptionHandler != null) {
exceptionHandler.onException(new TelegramException(e));
} else {
Platform.get().log(Platform.INFO, "Update listener failure", e);
}
sleep();
getUpdates(request);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1355,7 +1355,7 @@ public void onFailure(GetMe request, IOException e) {
throw new RuntimeException(e);
}
});
latch.await(10, TimeUnit.SECONDS);
assertTrue(latch.await(5, TimeUnit.SECONDS));
}

@Test
Expand All @@ -1372,7 +1372,7 @@ public void onFailure(GetMe request, IOException e) {
latch.countDown();
}
});
latch.await(10, TimeUnit.SECONDS);
assertTrue(latch.await(5, TimeUnit.SECONDS));
}

@Test
Expand Down

This file was deleted.

This file was deleted.

Loading