From 39a5678543c6710c5bc27b9d633828777b8e8205 Mon Sep 17 00:00:00 2001 From: Valentin Afanasiev Date: Sun, 31 Jan 2021 22:05:52 +0300 Subject: [PATCH] add comments to BaseAbilityBot.java and static construction method to ReplyCollection.java --- .../abilitybots/api/bot/BaseAbilityBot.java | 6 ++--- .../api/objects/ReplyCollection.java | 15 +++++++++++ .../abilitybots/api/bot/DefaultBot.java | 26 +++++++------------ 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/BaseAbilityBot.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/BaseAbilityBot.java index aa2d8605..8dfa31ac 100644 --- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/BaseAbilityBot.java +++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/bot/BaseAbilityBot.java @@ -348,14 +348,14 @@ public abstract class BaseAbilityBot extends DefaultAbsSender implements Ability .flatMap(ext -> stream(ext.getClass().getMethods()) .filter(checkReturnType(Reply.class)) .map(returnReply(ext))) - .flatMap(Reply::stream); + .flatMap(Reply::stream); + // Extract all replies from extension instances methods, returning ReplyCollection Stream extensionCollectionReplies = extensions.stream() .flatMap(extension -> stream(extension.getClass().getMethods()) .filter(checkReturnType(ReplyCollection.class)) .map(returnReplyCollection(extension)) - .map(ReplyCollection::getReplies)) - .flatMap(Collection::stream); + .flatMap(ReplyCollection::stream)); // Replies can be standalone or attached to abilities, fetch those too Stream abilityReplies = abilities.values().stream() diff --git a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/ReplyCollection.java b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/ReplyCollection.java index 887925b8..dbfd91a1 100644 --- a/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/ReplyCollection.java +++ b/telegrambots-abilities/src/main/java/org/telegram/abilitybots/api/objects/ReplyCollection.java @@ -1,7 +1,15 @@ package org.telegram.abilitybots.api.objects; import java.util.Collection; +import java.util.stream.Stream; +import static com.google.common.collect.Lists.newArrayList; + +/** + * A wrapping object containing Replies. Return this in your bot class to get replies registered. + * + * @see Reply + */ public class ReplyCollection { public final Collection replies; @@ -14,4 +22,11 @@ public class ReplyCollection { return replies; } + public Stream stream(){ + return replies.stream(); + } + + public static ReplyCollection of(Reply... replies){ + return new ReplyCollection(newArrayList(replies)); + } } diff --git a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/DefaultBot.java b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/DefaultBot.java index 6d65e721..cf31224d 100644 --- a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/DefaultBot.java +++ b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/DefaultBot.java @@ -8,9 +8,6 @@ import org.telegram.abilitybots.api.objects.Reply; import org.telegram.abilitybots.api.objects.ReplyCollection; import org.telegram.abilitybots.api.toggle.AbilityToggle; -import java.util.ArrayList; -import java.util.List; - import static org.telegram.abilitybots.api.objects.Ability.builder; import static org.telegram.abilitybots.api.objects.Flag.CALLBACK_QUERY; import static org.telegram.abilitybots.api.objects.Flag.MESSAGE; @@ -86,21 +83,16 @@ public class DefaultBot extends AbilityBot { } public ReplyCollection createReplyCollection() { - List replyList = new ArrayList<>(); - replyList.add( - Reply.of( - upd -> silent.send("first reply answer", upd.getMessage().getChatId()), - update -> update.getMessage().getText().equalsIgnoreCase(FIRST_REPLY_KEY_MESSAGE) - ) + return ReplyCollection.of( + Reply.of( + upd -> silent.send("first reply answer", upd.getMessage().getChatId()), + update -> update.getMessage().getText().equalsIgnoreCase(FIRST_REPLY_KEY_MESSAGE) + ), + Reply.of( + upd -> silent.send("second reply answer", upd.getMessage().getChatId()), + update -> update.getMessage().getText().equalsIgnoreCase(SECOND_REPLY_KEY_MESSAGE) + ) ); - replyList.add( - Reply.of( - upd -> silent.send("second reply answer", upd.getMessage().getChatId()), - update -> update.getMessage().getText().equalsIgnoreCase(SECOND_REPLY_KEY_MESSAGE) - ) - - ); - return new ReplyCollection(replyList); } public Ability testAbility() {