Properly invalidate cache and load icons in Clan

Properly invalidate cache on plugin shutdown and load clan chat icons on
plugin startup.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-02-09 22:34:08 +01:00
parent 928fb268d2
commit cc124d6d58

View File

@@ -70,7 +70,30 @@ public class ClanChatPlugin extends Plugin
}; };
private LoadingCache<String, ClanMemberRank> clanRanksCache; private final LoadingCache<String, ClanMemberRank> clanRanksCache = CacheBuilder.newBuilder()
.maximumSize(100)
.expireAfterAccess(1, TimeUnit.MINUTES)
.build(new CacheLoader<String, ClanMemberRank>()
{
@Override
public ClanMemberRank load(String key) throws Exception
{
final ClanMember[] clanMembersArr = client.getClanMembers();
if (clanMembersArr == null || clanMembersArr.length == 0)
{
return ClanMemberRank.UNRANKED;
}
return Arrays.stream(clanMembersArr)
.filter(Objects::nonNull)
.filter(clanMember -> sanitize(clanMember.getUsername()).equals(sanitize(key)))
.map(ClanMember::getRank)
.findAny()
.orElse(ClanMemberRank.UNRANKED);
}
});
private int modIconsLength; private int modIconsLength;
@Inject @Inject
@@ -79,29 +102,16 @@ public class ClanChatPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
clanRanksCache = CacheBuilder.newBuilder() if (modIconsLength == 0 && client.getGameState().compareTo(GameState.LOGIN_SCREEN) >= 0)
.maximumSize(100) {
.expireAfterAccess(1, TimeUnit.MINUTES) loadClanChatIcons();
.build(new CacheLoader<String, ClanMemberRank>() }
{ }
@Override
public ClanMemberRank load(String key) throws Exception
{
final ClanMember[] clanMembersArr = client.getClanMembers();
if (clanMembersArr == null || clanMembersArr.length == 0) @Override
{ protected void shutDown()
return ClanMemberRank.UNRANKED; {
} clanRanksCache.invalidateAll();
return Arrays.stream(clanMembersArr)
.filter(Objects::nonNull)
.filter(clanMember -> sanitize(clanMember.getUsername()).equals(sanitize(key)))
.map(ClanMember::getRank)
.findAny()
.orElse(ClanMemberRank.UNRANKED);
}
});
} }
@Subscribe @Subscribe