Skip to content

Commit

Permalink
Add a lot null-pointer checks and console errors about loading null-v…
Browse files Browse the repository at this point in the history
…alue element from database.
  • Loading branch information
BONNe committed Jun 3, 2019
1 parent 7914f31 commit a9abe32
Showing 1 changed file with 68 additions and 15 deletions.
83 changes: 68 additions & 15 deletions src/main/java/world/bentobox/challenges/ChallengesManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ public void reload()
* @param challenge Challenge that must be loaded.
* @return true if successful
*/
private void loadChallenge(Challenge challenge)
private void loadChallenge(@NonNull Challenge challenge)
{
this.loadChallenge(challenge, true, null, true);
}
Expand All @@ -190,11 +190,17 @@ private void loadChallenge(Challenge challenge)
* @param silent - if true, no messages are sent to user
* @return - true if imported
*/
public boolean loadChallenge(Challenge challenge,
public boolean loadChallenge(@NonNull Challenge challenge,
boolean overwrite,
User user,
boolean silent)
{
if (challenge == null)
{
this.addon.logError("Tried to load NULL element from Database. One challenge is broken and will not work.");
return false;
}

if (this.challengeCacheData.containsKey(challenge.getUniqueId()))
{
if (!overwrite)
Expand Down Expand Up @@ -235,7 +241,7 @@ public boolean loadChallenge(Challenge challenge,
*
* @param level the challenge level
*/
private void loadLevel(ChallengeLevel level)
private void loadLevel(@NonNull ChallengeLevel level)
{
this.loadLevel(level, true, null, true);
}
Expand All @@ -250,8 +256,14 @@ private void loadLevel(ChallengeLevel level)
* @param silent of type boolean that indicate if message to user must be sent.
* @return boolean that indicate about load status.
*/
public boolean loadLevel(ChallengeLevel level, boolean overwrite, User user, boolean silent)
public boolean loadLevel(@NonNull ChallengeLevel level, boolean overwrite, User user, boolean silent)
{
if (level == null)
{
this.addon.logError("Tried to load NULL element from Database. One level is broken and will not work.");
return false;
}

if (!this.isValidLevel(level))
{
if (user != null)
Expand Down Expand Up @@ -306,7 +318,7 @@ public boolean loadLevel(ChallengeLevel level, boolean overwrite, User user, boo
* This method stores PlayerData into local cache.
* @param playerData ChallengesPlayerData that must be loaded.
*/
private void loadPlayerData(ChallengesPlayerData playerData)
private void loadPlayerData(@NonNull ChallengesPlayerData playerData)
{
try
{
Expand Down Expand Up @@ -352,7 +364,7 @@ public void removeFromCache(UUID playerID)
* @param level that must be validated
* @return true ir level is valid, otherwise false.
*/
private boolean isValidLevel(ChallengeLevel level)
private boolean isValidLevel(@NonNull ChallengeLevel level)
{
if (!this.addon.getPlugin().getIWM().inWorld(Bukkit.getWorld(level.getWorld())))
{
Expand All @@ -369,6 +381,7 @@ private boolean isValidLevel(ChallengeLevel level)
}
else
{
this.addon.logError("Cannot find " + uniqueID + " challenge for " + level.getUniqueId());
return false;
}
}
Expand Down Expand Up @@ -398,7 +411,15 @@ private void addPlayerData(@NonNull String uniqueID)
// Load player from database
ChallengesPlayerData data = this.playersDatabase.loadObject(uniqueID);
// Store in cache
this.playerCacheData.put(uniqueID, data);

if (data != null)
{
this.playerCacheData.put(uniqueID, data);
}
else
{
this.addon.logError("Could not load NULL player data object.");
}
}
else
{
Expand Down Expand Up @@ -1194,8 +1215,16 @@ public Challenge getChallenge(String name)
if (this.challengeDatabase.objectExists(name))
{
Challenge challenge = this.challengeDatabase.loadObject(name);
this.challengeCacheData.put(name, challenge);
return challenge;

if (challenge != null)
{
this.challengeCacheData.put(name, challenge);
return challenge;
}
else
{
this.addon.logError("Tried to load NULL challenge object!");
}
}
}

Expand All @@ -1221,8 +1250,16 @@ public boolean containsChallenge(String name)
if (this.challengeDatabase.objectExists(name))
{
Challenge challenge = this.challengeDatabase.loadObject(name);
this.challengeCacheData.put(name, challenge);
return true;

if (challenge != null)
{
this.challengeCacheData.put(name, challenge);
return true;
}
else
{
this.addon.logError("Tried to load NULL challenge object!");
}
}
}

Expand Down Expand Up @@ -1342,8 +1379,16 @@ public ChallengeLevel getLevel(String name)
if (this.levelDatabase.objectExists(name))
{
ChallengeLevel level = this.levelDatabase.loadObject(name);
this.levelCacheData.put(name, level);
return level;

if (level != null)
{
this.levelCacheData.put(name, level);
return level;
}
else
{
this.addon.logError("Tried to load NULL level.");
}
}
}

Expand All @@ -1369,8 +1414,16 @@ public boolean containsLevel(String name)
if (this.levelDatabase.objectExists(name))
{
ChallengeLevel level = this.levelDatabase.loadObject(name);
this.levelCacheData.put(name, level);
return true;

if (level != null)
{
this.levelCacheData.put(name, level);
return true;
}
else
{
this.addon.logError("Tried to load NULL level.");
}
}
}

Expand Down

0 comments on commit a9abe32

Please sign in to comment.