Browse Source

Fix some possibility of NPE.

master
Stanislav Usenkov 9 years ago
parent
commit
1436e0f21a
  1. 3
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  2. 13
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  3. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java

3
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -161,8 +161,7 @@ public class BukkitPermissionManager extends RestartableThread
{
Set<String> regionSet = rscp.regionListProvider.getPlayerRegions(player);
params.destRegions = regionSet.toArray(new String[regionSet.size()]);
} else
params.destRegions = new String[] {};
}
params.destWorld = player.getLocation().getWorld().getName();
params.expirience = player.getLevel();
final ResolutionResult result = rscp.internalCache.resolvePlayer(params);

13
src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -48,7 +48,6 @@ public class InternalCache extends InternalStorage
{
final ResolutionParams params = new ResolutionParams();
params.applicableIdentifiers = player;
params.destRegions = new String[] {};
return resolvePlayer(params);
}
public synchronized ResolutionResult resolvePlayer(ResolutionParams params)
@ -56,11 +55,11 @@ public class InternalCache extends InternalStorage
params.groupList = new LinkedList<>();
params.finalPerms = new TreeMap<>();
params.instantiator = "";
params.depth = 0;
params.branchDepth = 0;
if(params.destRegions == null)
params.destRegions = new String[] {};
if(implicit_u != null && implicit_u.permissions != null)
{
processPermissions(params, Arrays.asList(implicit_u.permissions));
}
final ArrayList<RowEntity> applicableEntities = new ArrayList<>();
final ArrayList<RowPermission> applicablePermissions = new ArrayList<>();
final ArrayList<RowInheritance> applicableInheritance = new ArrayList<>();
@ -116,7 +115,7 @@ public class InternalCache extends InternalStorage
final RowEntity currentParent = params.parentEntity;
final String instantiator = params.instantiator;
final ArrayList<ResolutionResult> intermediateResults = new ArrayList<>();
params.depth += 1;
params.branchDepth += 1;
for(RowInheritance row : params.parentEntity.inheritance)
if(isInheritanceApplicable(params, row))
{
@ -126,8 +125,8 @@ public class InternalCache extends InternalStorage
: row.instance;
intermediateResults.add(resolveParent(params));
}
params.depth -= 1;
params.groupList.add(depthPrefix(params.depth) + currentParent.entity
params.branchDepth -= 1;
params.groupList.add(depthPrefix(params.branchDepth) + currentParent.entity
+ ("".equals(instantiator) ? "" : Settings.INSTANCE_SEP + instantiator));
// Prefixes and suffixes
params.parentEntity = currentParent;

2
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionParams.java

@ -10,7 +10,7 @@ public class ResolutionParams
public String[] destRegions;
public String destWorld;
public int expirience;
protected transient int depth;
protected transient int branchDepth;
protected transient RowEntity parentEntity;
protected transient String instantiator;
protected transient Map<String, Boolean> finalPerms;

Loading…
Cancel
Save