package com.mossle.security.perm; public class PermissionMatcher { private boolean readOnly; public boolean match(String want, String have) { Permission wantPermission = new Permission(want); Permission havePermission = new Permission(have); // if this.resource is *, it will match all of required resource // else this.resource must equal to required resource if (!checkPart(wantPermission.getResource(), havePermission.getResource())) { return false; } // if this.operation is *, it will match all of required operation // else this.operation must equal to required operation String haveOperation = readOnly ? "read" : havePermission .getOperation(); if (checkPart(wantPermission.getOperation(), haveOperation)) { return true; } return false; } private boolean checkPart(String want, String have) { if ("*".equals(want) || "*".equals(have)) { return true; } return want.equals(have); } public void setReadOnly(boolean readOnly) { this.readOnly = readOnly; } public boolean isReadOnly() { return readOnly; } }