PermissionPolicy: Rename to/from config. Clarify defaults.

This commit is contained in:
asofold 2018-02-02 22:43:53 +01:00
parent 97d59045ae
commit 08aaa5fb1c
3 changed files with 31 additions and 14 deletions

View File

@ -142,7 +142,7 @@ public class PermissionPolicy {
* @throws IllegalArgumentException
* on errors.
*/
public PermissionPolicy setFromConfigString(final String input) {
public PermissionPolicy setPolicyFromConfigLine(final String input) {
final List<String> split = StringUtil.getNonEmpty(StringUtil.splitChars(input.trim(), ' ', ':', ','), true);
FetchingPolicy fetchingPolicy;
long interval = 0;
@ -211,7 +211,24 @@ public class PermissionPolicy {
return this;
}
public String toConfigString() {
/**
* Minimized config line, skipping some defaults.
*
* @return
*/
public String policyToConfigLine() {
return policyToConfigLine(true);
}
/**
*
* @param skipDefaults
* Only applies to extras like invalidation policy. The fetching
* policy and in case of INTERVAL the interval, are always
* included.
* @return
*/
public String policyToConfigLine(final boolean skipDefaults) {
final StringBuilder builder = new StringBuilder(124);
builder.append(fetchingPolicy.name());
if (fetchingPolicy == FetchingPolicy.INTERVAL) {
@ -219,11 +236,11 @@ public class PermissionPolicy {
builder.append(((double) fetchingInterval) / 1000.0);
}
// Only add flags set to false.
if (!invalidationOffline()) {
builder.append(",-offline");
if (!skipDefaults || !invalidationOffline()) {
builder.append("," + (invalidationOffline() ? "+" : "-") + "offline");
}
if (!invalidationWorld()) {
builder.append(",-world");
if (!skipDefaults || !invalidationWorld()) {
builder.append("," + (invalidationWorld() ? "+" : "-") + "world");
}
return builder.toString();
}

View File

@ -163,7 +163,7 @@ public class PermissionSettings {
final String pathDefaultPolicy, final String pathRules) {
final PermissionPolicy defaultPolicy = new PermissionPolicy();
try {
defaultPolicy.setFromConfigString(config.getString(pathDefaultPolicy));
defaultPolicy.setPolicyFromConfigLine(config.getString(pathDefaultPolicy));
}
catch (Exception e) {
throw new RuntimeException("Bad default policy definition.", e);
@ -175,7 +175,7 @@ public class PermissionSettings {
String policyDef = null;
try {
policyDef = section.getString(ruleDef);
final PermissionPolicy policy = new PermissionPolicy().setFromConfigString(policyDef);
final PermissionPolicy policy = new PermissionPolicy().setPolicyFromConfigLine(policyDef);
ruleDef = RegisteredPermission.toLowerCaseStringRepresentation(ruleDef.trim()).replace('#', '.');
final PermissionRule rule = getMatchingRule(ruleDef, policy);
if (rule == null) {

View File

@ -9,8 +9,8 @@ import fr.neatmonster.nocheatplus.permissions.PermissionPolicy;
public class TestPermissionPolicy {
private void testToConfigString(PermissionPolicy policy, String expected) {
if (!policy.toConfigString().equals(expected)) {
fail("Expect toConfigString() to result in '" + expected + "', got instead: '" + policy.toConfigString() + "'");
if (!policy.policyToConfigLine().equals(expected)) {
fail("Expect toConfigString() to result in '" + expected + "', got instead: '" + policy.policyToConfigLine() + "'");
}
}
@ -27,9 +27,9 @@ public class TestPermissionPolicy {
}
private void testFromConfigString(PermissionPolicy policy) {
String to = policy.toConfigString();
String to = policy.policyToConfigLine();
PermissionPolicy policy2 = new PermissionPolicy();
policy2.setFromConfigString(to);
policy2.setPolicyFromConfigLine(to);
if (!policy.isPolicyEquivalent(policy2)) {
fail("to+from config string yields non equivalent policy.");
}
@ -38,9 +38,9 @@ public class TestPermissionPolicy {
private void testFromConfigString(PermissionPolicy equivalent, String... inputs) {
for (String input : inputs) {
PermissionPolicy policy2 = new PermissionPolicy();
policy2.setFromConfigString(input);
policy2.setPolicyFromConfigLine(input);
if (!equivalent.isPolicyEquivalent(policy2)) {
fail("Expect equivalent policy to '" + equivalent.toConfigString() + "', got instead: " + policy2.toConfigString());
fail("Expect equivalent policy to '" + equivalent.policyToConfigLine() + "', got instead: " + policy2.policyToConfigLine());
}
}
}