- boolean pass = true;
- for(int i=1;pass && i<skeys.length;++i) { // We start at 1, because the first one, being ":" is always ""
- if(ASTERIX.equals(skeys[i]))continue; // Server data accepts all for this key spot
- pass = false;
- for(String sItem : Split.split(LIST_SEP,skeys[i])) { // allow for "," definition in Action
- if(pkeys[i].length()==0) {
- if(pass=sItem.length()==0) {
- break; // Both Empty, keep checking
- }
- } else if(sItem.charAt(0)==START_REGEX_CHAR) { // Check Server side when wildcarding like *
- if(pass=pkeys[i].matches(sItem.substring(1))) {
- break; // Matches, keep checking
- }
- } else if(skeys[i].endsWith(ASTERIX)) {
- if(pass=endAsterixCompare(skeys[i],pkeys[i])) {
- break;
- }
- } else if(pass=sItem.equals(pkeys[i])) {
- break; // Equal, keep checking
- }
- }
- }
- return pass; // return whether passed all key checks
- }
- return false; // if first chars aren't the same, further String compare not necessary
- default: // Evaluate as String Compare
- for(String sItem : Split.split(LIST_SEP,sInst)) { // allow for "," separator //TODO is this only for actions?
- if((sItem.endsWith(ASTERIX)) && (endAsterixCompare(sInst, pInst))) {
- return true;
- } else if(sItem.equals(pInst)) {
- return true;
- }
- }
- return false;
- }
- }
+ boolean pass = true;
+ for (int i=1;pass && i<skeys.length;++i) { // We start at 1, because the first one, being ":" is always ""
+ if (ASTERIX.equals(skeys[i])) {
+ if(i==skeys.length-1) {
+ // accept all after
+ return true;
+ }
+ continue; // Server data accepts all for this key spot
+ }
+ pass = false;
+ for (String sItem : Split.split(LIST_SEP,skeys[i])) { // allow for "," definition in Action
+ if (pkeys[i].length()==0) {
+ if (pass=sItem.length()==0) {
+ break; // Both Empty, keep checking
+ }
+ } else if (sItem.length()>0 && sItem.charAt(0)==START_REGEX_CHAR) { // Check Server side when wildcarding like *
+ if (pass=pkeys[i].matches(sItem.substring(1))) {
+ break; // Matches, keep checking
+ }
+ } else if (skeys[i].endsWith(ASTERIX)) {
+ if (pass=endAsterixCompare(skeys[i],pkeys[i])) {
+ break;
+ }
+ } else if (pass=sItem.equals(pkeys[i])) {
+ break; // Equal, keep checking
+ }
+ }
+ }
+ return pass; // return whether passed all key checks
+ }
+ return false; // if first chars aren't the same, further String compare not necessary
+ default: // Evaluate as String Compare
+ for (String sItem : Split.split(LIST_SEP,sInst)) { // allow for "," separator //TODO is this only for actions?
+ if ((sItem.endsWith(ASTERIX)) && (endAsterixCompare(sInst, pInst))) {
+ return true;
+ } else if (sItem.equals(pInst)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }