mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-13 07:10:03 +01:00
[Fix] Prevented NPE due in PluginData
This exception was caused by analysisData being null during PluginData analysis - This should not occur unless two analysis are being performed concurrently & first analysis finishes and clears the variable. Additional work is required for preventing two concurrent analysis. Affected issues: #711
This commit is contained in:
parent
93951f1f25
commit
a18dc2d3f2
@ -72,7 +72,8 @@ public class FactionsData extends PluginData {
|
||||
if (!factions.isEmpty()) {
|
||||
FactionsAccordion factionsAccordion = new FactionsAccordion(
|
||||
factions,
|
||||
analysisData.getValue(AnalysisKeys.PLAYERS_MUTATOR).orElse(new PlayersMutator(new ArrayList<>()))
|
||||
Optional.ofNullable(analysisData).flatMap(c -> c.getValue(AnalysisKeys.PLAYERS_MUTATOR))
|
||||
.orElse(new PlayersMutator(new ArrayList<>()))
|
||||
);
|
||||
analysisContainer.addHtml("factionAccordion", factionsAccordion.toHtml());
|
||||
|
||||
|
@ -62,7 +62,8 @@ public class KingdomsData extends PluginData {
|
||||
if (!kingdoms.isEmpty()) {
|
||||
KingdomsAccordion kingdomsAccordion = new KingdomsAccordion(
|
||||
kingdoms,
|
||||
analysisData.getValue(AnalysisKeys.PLAYERS_MUTATOR).orElse(new PlayersMutator(new ArrayList<>()))
|
||||
Optional.ofNullable(analysisData).flatMap(c -> c.getValue(AnalysisKeys.PLAYERS_MUTATOR))
|
||||
.orElse(new PlayersMutator(new ArrayList<>()))
|
||||
);
|
||||
|
||||
analysisContainer.addHtml("kingdomsAccordion", kingdomsAccordion.toHtml());
|
||||
|
@ -179,7 +179,8 @@ public class LiteBansData extends PluginData implements BanData {
|
||||
if (objects.isEmpty()) {
|
||||
table.addRow("No Data");
|
||||
} else {
|
||||
Map<UUID, String> playerNames = analysisData.getValue(AnalysisKeys.PLAYER_NAMES).orElse(new HashMap<>());
|
||||
Map<UUID, String> playerNames = Optional.ofNullable(analysisData)
|
||||
.flatMap(c -> c.getValue(AnalysisKeys.PLAYER_NAMES)).orElse(new HashMap<>());
|
||||
for (LiteBansDBObj object : objects) {
|
||||
UUID uuid = object.getUuid();
|
||||
String name = playerNames.getOrDefault(uuid, uuid.toString());
|
||||
|
@ -97,7 +97,8 @@ public class TownyData extends PluginData {
|
||||
|
||||
TownsAccordion townsAccordion = new TownsAccordion(
|
||||
towns,
|
||||
analysisData.getValue(AnalysisKeys.PLAYERS_MUTATOR).orElse(new PlayersMutator(new ArrayList<>()))
|
||||
Optional.ofNullable(analysisData).flatMap(c -> c.getValue(AnalysisKeys.PLAYERS_MUTATOR))
|
||||
.orElse(new PlayersMutator(new ArrayList<>()))
|
||||
);
|
||||
|
||||
analysisContainer.addHtml("townAccordion", townsAccordion.toHtml());
|
||||
|
@ -9,7 +9,6 @@ import com.djrapitops.plan.data.element.InspectContainer;
|
||||
import com.djrapitops.plan.data.plugin.ContainerSize;
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import com.djrapitops.plan.data.store.keys.AnalysisKeys;
|
||||
import com.djrapitops.plan.data.store.mutators.PlayersMutator;
|
||||
import com.djrapitops.plan.system.cache.DataCache;
|
||||
import com.djrapitops.plan.utilities.FormatUtils;
|
||||
import com.djrapitops.plan.utilities.html.icon.Color;
|
||||
@ -50,10 +49,11 @@ public class VaultEcoData extends PluginData {
|
||||
|
||||
@Override
|
||||
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) {
|
||||
List<FakeOfflinePlayer> offlinePlayers = analysisData.getValue(AnalysisKeys.PLAYERS_MUTATOR)
|
||||
.map(PlayersMutator::all).orElse(new ArrayList<>())
|
||||
.stream().map(FakeOfflinePlayer::new)
|
||||
.collect(Collectors.toList());
|
||||
List<FakeOfflinePlayer> offlinePlayers = Optional.ofNullable(analysisData)
|
||||
.flatMap(c -> c.getValue(AnalysisKeys.PLAYERS_MUTATOR))
|
||||
.map(mutator -> mutator.all().stream().map(FakeOfflinePlayer::new)
|
||||
.collect(Collectors.toList()))
|
||||
.orElse(new ArrayList<>());
|
||||
|
||||
Map<UUID, String> balances = new HashMap<>();
|
||||
double totalBalance = 0.0;
|
||||
|
@ -9,7 +9,6 @@ import com.djrapitops.plan.data.element.InspectContainer;
|
||||
import com.djrapitops.plan.data.plugin.ContainerSize;
|
||||
import com.djrapitops.plan.data.plugin.PluginData;
|
||||
import com.djrapitops.plan.data.store.keys.AnalysisKeys;
|
||||
import com.djrapitops.plan.data.store.mutators.PlayersMutator;
|
||||
import com.djrapitops.plan.system.cache.DataCache;
|
||||
import com.djrapitops.pluginbridge.plan.FakeOfflinePlayer;
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
@ -49,10 +48,11 @@ public class VaultPermData extends PluginData {
|
||||
|
||||
@Override
|
||||
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) {
|
||||
List<FakeOfflinePlayer> offlinePlayers = analysisData.getValue(AnalysisKeys.PLAYERS_MUTATOR)
|
||||
.map(PlayersMutator::all).orElse(new ArrayList<>())
|
||||
.stream().map(FakeOfflinePlayer::new)
|
||||
.collect(Collectors.toList());
|
||||
List<FakeOfflinePlayer> offlinePlayers = Optional.ofNullable(analysisData)
|
||||
.flatMap(c -> c.getValue(AnalysisKeys.PLAYERS_MUTATOR))
|
||||
.map(mutator -> mutator.all().stream().map(FakeOfflinePlayer::new)
|
||||
.collect(Collectors.toList()))
|
||||
.orElse(new ArrayList<>());
|
||||
|
||||
Map<UUID, String> groups = new HashMap<>();
|
||||
for (FakeOfflinePlayer p : offlinePlayers) {
|
||||
|
Loading…
Reference in New Issue
Block a user