Browse Source

I've searched that bug for a several hours!

master
Stanislav Usenkov 9 years ago
parent
commit
c5afa4074f
  1. 23
      src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java
  2. 4
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java
  3. 7
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

23
src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java

@ -12,13 +12,9 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
public transient RowEntity entityParent;
public void deriveInstance()
{
if(parent != null)
{
final String[] splitted = splitIntoNameAndInstance(parent);
parent = splitted[0];
instance = splitted[1];
}
instance = "";
final String[] splitted = splitIntoNameAndInstance(parent);
parent = splitted[0];
instance = splitted[1];
}
public static String[] splitIntoNameAndInstance(String parent)
{
@ -28,7 +24,8 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
final String[] splitted = parent.split(Settings.REGEXP_INSTANCE);
if(splitted.length > 1)
{
result[0] = GenericChatCodes.glue(Arrays.copyOf(splitted, splitted.length - 1), Settings.INSTANCE_SEP);
final String[] prevTokens = Arrays.copyOf(splitted, splitted.length - 1);
result[0] = GenericChatCodes.glue(prevTokens, Settings.INSTANCE_SEP);
result[1] = splitted[splitted.length - 1];
} else {
result[0] = parent;
@ -38,14 +35,14 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
}
public static String mergeNameAndInstance(String parent, String instance)
{
return parent
+ (instance != null && !"".equals(instance)
? Settings.INSTANCE_SEP + instance
: "");
final StringBuilder sb = new StringBuilder(parent);
if(instance != null && !"".equals(instance))
sb.append(Settings.INSTANCE_SEP).append(instance);
return sb.toString();
}
public String getParentWithInstance()
{
return this.parent + (instance.isEmpty() ? "" : "." + instance);
return mergeNameAndInstance(parent, instance);
}
@Override
public RowInheritance clone() throws CloneNotSupportedException

4
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java

@ -151,10 +151,10 @@ public class DatabaseContents
final ArrayList<RowInheritance> li = new ArrayList<>();
// Permissions
for(RowPermission row : permissions)
if(row.destination.isServerIdApplicable(serverId))
if(row.destination != null && row.destination.isServerIdApplicable(serverId))
lp.add(row);
for(RowInheritance row : inheritance)
if(row.destination.isServerIdApplicable(serverId))
if(row.destination != null && row.destination.isServerIdApplicable(serverId))
li.add(row);
permissions = lp.toArray(new RowPermission[lp.size()]);
inheritance = li.toArray(new RowInheritance[li.size()]);

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

@ -139,8 +139,11 @@ public class InternalCache extends InternalStorage
intermediateResults.add(resolveParent(params));
}
params.branchDepth -= 1;
params.groupList.add(depthPrefix(params.branchDepth) + currentParent.entity
+ ("".equals(instantiator) ? "" : Settings.INSTANCE_SEP + instantiator));
params.groupList.add(depthPrefix(params.branchDepth)
+ currentParent.entity
+ ("".equals(instantiator)
? ""
: Settings.INSTANCE_SEP + instantiator));
// Prefixes and suffixes
params.parentEntity = currentParent;
params.instantiator = instantiator;

Loading…
Cancel
Save