void add(ConditionalPermissionInfo pInfo) { granted.put(pInfo.getName(), pInfo); }
private int find(String name) { for (int i = 0; i < cpiTable.size(); i++) { if (((ConditionalPermissionInfo)cpiTable.get(i)).getName().equals(name)) { return i; } } return -1; }
private static int getNextUserPermId(final String user, final List<ConditionalPermissionInfo> perms) { final String prefix= "user_" + user; int next = 0; for (ConditionalPermissionInfo info : perms) { final String name = info.getName(); if (name == null || !name.startsWith(prefix) || name.equals(prefix)) continue; final String suffix = name.substring(prefix.length()); try { final int cnt = Integer.parseInt(suffix); if (cnt >= next) next = cnt + 1; } catch (NumberFormatException e) {} } return next; }
/** * Delete all permissions from locally installed bundles */ private void deleteUserBundlePermissions() { Enumeration<ConditionalPermissionInfo> cpis = cpa.getConditionalPermissionInfos(); while (cpis.hasMoreElements()) { ConditionalPermissionInfo cpi = cpis.nextElement(); if (!NON_USER_CPI_NAMES.contains(cpi.getName())) { cpi.delete(); } } }
/** * */ @Override public final boolean equals(Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } final ConditionalPermissionInfo cpi = (ConditionalPermissionInfo)obj; if (name == null ? cpi.getName() != null : !name.equals(cpi.getName())) { return false; } // NYI, we should allow permuted arrays, also affects hashCode. if (!Arrays.equals(permissionInfos, cpi.getPermissionInfos())) { return false; } if (!Arrays.equals(conditionInfos, cpi.getConditionInfos())) { return false; } return access == cpi.getAccessDecision(); }
void removeGranted(String name) { // First get the permissions table ConditionalPermissionUpdate cpu = cpa.newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> piList = cpu.getConditionalPermissionInfos(); for (ConditionalPermissionInfo tmpcpi : piList) { // If a permission info exists in the table remove it if (tmpcpi.getName().equals(name)) { if (Configuration.DEBUG) log.info("Removed Policy: " + tmpcpi.getEncoded()); piList.remove(tmpcpi); break; } } cpu.commit(); }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); @SuppressWarnings("unchecked") List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
void delete(SecurityRow securityRow, boolean firstTry) { ConditionalPermissionUpdate update = newConditionalPermissionUpdate(); @SuppressWarnings("unchecked") List<ConditionalPermissionInfo> rows = update.getConditionalPermissionInfos(); for (Iterator<ConditionalPermissionInfo> iRows = rows.iterator(); iRows.hasNext();) { ConditionalPermissionInfo info = iRows.next(); if (securityRow.getName().equals(info.getName())) { iRows.remove(); synchronized (lock) { if (!update.commit()) { if (firstTry) // try again delete(securityRow, false); } } break; } } }
@Descriptor("removes a policy by name") public boolean removePolicy(String name) { ConditionalPermissionUpdate cpu = cpa.newConditionalPermissionUpdate(); for (ConditionalPermissionInfo cpi : cpu.getConditionalPermissionInfos()) { if (cpi.getName().equals(name)) { boolean removed = cpu.getConditionalPermissionInfos().remove(cpi); if (removed) { return cpu.commit(); } return removed; } } return false; }
boolean commit(List<ConditionalPermissionInfo> rows, long updateStamp) { checkAllPermission(); synchronized (lock) { if (updateStamp != timeStamp) return false; SecurityRow[] newRows = new SecurityRow[rows.size()]; Collection<String> names = new ArrayList<String>(); for (int i = 0; i < newRows.length; i++) { Object rowObj = rows.get(i); if (!(rowObj instanceof ConditionalPermissionInfo)) throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj; String name = infoBaseRow.getName(); if (name == null) name = generateName(); if (names.contains(name)) throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ names.add(name); newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision()); } condAdminTable = new SecurityTable(this, newRows); permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows()); timeStamp += 1; return true; } }
boolean commit(List<ConditionalPermissionInfo> rows, long updateStamp) { checkAllPermission(); synchronized (lock) { if (updateStamp != timeStamp) return false; SecurityRow[] newRows = new SecurityRow[rows.size()]; Collection<String> names = new ArrayList<String>(); for (int i = 0; i < newRows.length; i++) { Object rowObj = rows.get(i); if (!(rowObj instanceof ConditionalPermissionInfo)) throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj; String name = infoBaseRow.getName(); if (name == null) name = generateName(); if (names.contains(name)) throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ names.add(name); newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision()); } condAdminTable = new SecurityTable(this, newRows); permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows()); timeStamp += 1; return true; } }
boolean commit(List<ConditionalPermissionInfo> rows, long updateStamp) { checkAllPermission(); synchronized (lock) { if (updateStamp != timeStamp) return false; SecurityRow[] newRows = new SecurityRow[rows.size()]; Collection<String> names = new ArrayList<>(); for (int i = 0; i < newRows.length; i++) { Object rowObj = rows.get(i); if (!(rowObj instanceof ConditionalPermissionInfo)) throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj; String name = infoBaseRow.getName(); if (name == null) name = generateName(); if (names.contains(name)) throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ names.add(name); newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision()); } condAdminTable = new SecurityTable(this, newRows); permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows()); timeStamp += 1; return true; } }
boolean commit(List<ConditionalPermissionInfo> rows, long updateStamp) { checkAllPermission(); synchronized (lock) { if (updateStamp != timeStamp) return false; SecurityRow[] newRows = new SecurityRow[rows.size()]; Collection<String> names = new ArrayList<>(); for (int i = 0; i < newRows.length; i++) { Object rowObj = rows.get(i); if (!(rowObj instanceof ConditionalPermissionInfo)) throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj; String name = infoBaseRow.getName(); if (name == null) name = generateName(); if (names.contains(name)) throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ names.add(name); newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision()); } condAdminTable = new SecurityTable(this, newRows); permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows()); timeStamp += 1; return true; } }
boolean commit(List<ConditionalPermissionInfo> rows, long updateStamp) { checkAllPermission(); synchronized (lock) { if (updateStamp != timeStamp) return false; SecurityRow[] newRows = new SecurityRow[rows.size()]; Collection<String> names = new ArrayList<String>(); for (int i = 0; i < newRows.length; i++) { Object rowObj = rows.get(i); if (!(rowObj instanceof ConditionalPermissionInfo)) throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj; String name = infoBaseRow.getName(); if (name == null) name = generateName(); if (names.contains(name)) throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$ names.add(name); newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision()); } condAdminTable = new SecurityTable(this, newRows); permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows()); timeStamp += 1; return true; } }