* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
private final Pattern actionChars;
private final Pattern instChars;
private StringBuilder msgs;
-
+ public static final String PERM_TYPE = "Perm Type [";
+ public static final String IS_INVALID = "] is invalid.";
+ public static final String ROLE_STR = "Role [";
static {
nsKeywords = new ArrayList<>();
nsKeywords.add(".access");
actionChars = ACTION_CHARS;
instChars = INST_CHARS;
}
-
+
public final String errs() {
return msgs.toString();
}
}
protected final boolean noMatch(String str, Pattern p) {
- return !p.matcher(str).matches();
+ return str==null || !p.matcher(str).matches();
+ }
+
+ protected final void match(String text, String str, Pattern p) {
+ if(str==null || !p.matcher(str).matches()) {
+ msg(text);
+ }
}
+
protected final boolean nob(String str, Pattern p) {
- return str==null || !p.matcher(str).matches();
+ return str==null || !p.matcher(str).matches();
}
protected final void msg(String ... strs) {
public final Validator permType(String type) {
if (nob(type,NAME_CHARS)) {
- msg("Perm Type [" +type + "] is invalid.");
+ msg(PERM_TYPE +type + IS_INVALID);
+ }
+ return this;
+ }
+
+ public final Validator permTypeWithUser(String user, String type) {
+ if (type==null) {
+ msg("Perm Type is null");
+ } else if (user==null) {
+ msg("User is null");
+ } else {
+ if(!(type.startsWith(user) && type.endsWith(":id"))) {
+ if(nob(type,NAME_CHARS)) {
+ msg(PERM_TYPE + type + IS_INVALID);
+ }
+ }
}
return this;
}
} else if (ns==null) {
msg("Perm NS is null");
} else if (nob(type,NAME_CHARS)) {
- msg("Perm Type [" + (ns+(type.length()==0?"":'.')) + type + "] is invalid.");
+ msg(PERM_TYPE + (ns+(type.length()==0?"":'.')) + type + IS_INVALID);
}
return this;
}
public final Validator permInstance(String instance) {
- if (nob(instance,instChars)) {
- msg("Perm Instance [" + instance + "] is invalid.");
+ if(!"/".equals(instance) && nob(instance,instChars)) {
+ msg("Perm Instance [" + instance + IS_INVALID);
}
return this;
}
public final Validator permAction(String action) {
// TODO check for correct Splits? Type|Instance|Action ?
if (nob(action, actionChars)) {
- msg("Perm Action [" + action + "] is invalid.");
+ msg("Perm Action [" + action + IS_INVALID);
+ }
+ return this;
+ }
+
+ public final Validator role(String user, String role) {
+ boolean quit = false;
+ if(role==null) {
+ msg("Role is null");
+ quit = true;
+ }
+ if(user==null) {
+ msg("User is null");
+ quit = true;
+ }
+ if(!quit) {
+ if(role.startsWith(user) && role.endsWith(":user")) {
+ if(!(role.length() == user.length() + 5)) {
+ msg(ROLE_STR + role + IS_INVALID);
+ }
+ } else if (nob(role, NAME_CHARS)) {
+ msg(ROLE_STR + role + IS_INVALID);
+ }
}
return this;
}
+
public final Validator role(String role) {
if (nob(role, NAME_CHARS)) {
- msg("Role [" + role + "] is invalid.");
+ msg(ROLE_STR + role + IS_INVALID);
}
return this;
}
msg("NS is null");
return this;
} else if (nob(ns,NAME_CHARS)) {
- msg("NS [" + ns + "] is invalid.");
- }
+ msg("NS [" + ns + IS_INVALID);
+ }
for (String s : nsKeywords) {
if (ns.endsWith(s)) {
msg("NS [" + ns + "] may not be named with NS keywords");