Browse Source

I've searched that bug for a several hours!

master
Stanislav Usenkov 9 years ago
parent
commit
c5afa4074f
  1. 17
      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

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

@ -11,15 +11,11 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
public transient RowEntity entityChild; public transient RowEntity entityChild;
public transient RowEntity entityParent; public transient RowEntity entityParent;
public void deriveInstance() public void deriveInstance()
{
if(parent != null)
{ {
final String[] splitted = splitIntoNameAndInstance(parent); final String[] splitted = splitIntoNameAndInstance(parent);
parent = splitted[0]; parent = splitted[0];
instance = splitted[1]; instance = splitted[1];
} }
instance = "";
}
public static String[] splitIntoNameAndInstance(String parent) public static String[] splitIntoNameAndInstance(String parent)
{ {
if(parent == null) if(parent == null)
@ -28,7 +24,8 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
final String[] splitted = parent.split(Settings.REGEXP_INSTANCE); final String[] splitted = parent.split(Settings.REGEXP_INSTANCE);
if(splitted.length > 1) 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]; result[1] = splitted[splitted.length - 1];
} else { } else {
result[0] = parent; result[0] = parent;
@ -38,14 +35,14 @@ public final class RowInheritance extends ConditionalRow implements Cloneable, C
} }
public static String mergeNameAndInstance(String parent, String instance) public static String mergeNameAndInstance(String parent, String instance)
{ {
return parent final StringBuilder sb = new StringBuilder(parent);
+ (instance != null && !"".equals(instance) if(instance != null && !"".equals(instance))
? Settings.INSTANCE_SEP + instance sb.append(Settings.INSTANCE_SEP).append(instance);
: ""); return sb.toString();
} }
public String getParentWithInstance() public String getParentWithInstance()
{ {
return this.parent + (instance.isEmpty() ? "" : "." + instance); return mergeNameAndInstance(parent, instance);
} }
@Override @Override
public RowInheritance clone() throws CloneNotSupportedException 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<>(); final ArrayList<RowInheritance> li = new ArrayList<>();
// Permissions // Permissions
for(RowPermission row : permissions) for(RowPermission row : permissions)
if(row.destination.isServerIdApplicable(serverId)) if(row.destination != null && row.destination.isServerIdApplicable(serverId))
lp.add(row); lp.add(row);
for(RowInheritance row : inheritance) for(RowInheritance row : inheritance)
if(row.destination.isServerIdApplicable(serverId)) if(row.destination != null && row.destination.isServerIdApplicable(serverId))
li.add(row); li.add(row);
permissions = lp.toArray(new RowPermission[lp.size()]); permissions = lp.toArray(new RowPermission[lp.size()]);
inheritance = li.toArray(new RowInheritance[li.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)); intermediateResults.add(resolveParent(params));
} }
params.branchDepth -= 1; params.branchDepth -= 1;
params.groupList.add(depthPrefix(params.branchDepth) + currentParent.entity params.groupList.add(depthPrefix(params.branchDepth)
+ ("".equals(instantiator) ? "" : Settings.INSTANCE_SEP + instantiator)); + currentParent.entity
+ ("".equals(instantiator)
? ""
: Settings.INSTANCE_SEP + instantiator));
// Prefixes and suffixes // Prefixes and suffixes
params.parentEntity = currentParent; params.parentEntity = currentParent;
params.instantiator = instantiator; params.instantiator = instantiator;

Loading…
Cancel
Save