@PreAuthorize("hasRole('" + StandardEntitlement.POLICY_CREATE + "')") public <T extends PolicyTO> T create(final PolicyType type, final T policyTO) { PolicyUtils policyUtils = policyUtilsFactory.getInstance(policyTO); if (policyUtils.getType() != type) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); throw sce; } return binder.getPolicyTO(policyDAO.save(binder.create(policyTO))); }
@PreAuthorize("hasRole('" + StandardEntitlement.POLICY_UPDATE + "')") public PolicyTO update(final PolicyType type, final PolicyTO policyTO) { Policy policy = policyDAO.find(policyTO.getKey()); PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); if (policyUtils.getType() != type) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); throw sce; } return binder.getPolicyTO(policyDAO.save(binder.update(policy, policyTO))); }
@PreAuthorize("hasRole('" + StandardEntitlement.POLICY_READ + "')") @Transactional(readOnly = true) public <T extends PolicyTO> T read(final PolicyType type, final String key) { Policy policy = policyDAO.find(key); if (policy == null) { throw new NotFoundException("Policy " + key + " not found"); } PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); if (type != null && policyUtils.getType() != type) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); throw sce; } return binder.getPolicyTO(policy); }
@PreAuthorize("hasRole('" + StandardEntitlement.POLICY_DELETE + "')") public <T extends PolicyTO> T delete(final PolicyType type, final String key) { Policy policy = policyDAO.find(key); if (policy == null) { throw new NotFoundException("Policy " + key + " not found"); } PolicyUtils policyUtils = policyUtilsFactory.getInstance(policy); if (type != null && policyUtils.getType() != type) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidRequest); sce.getElements().add("Found " + type + ", expected " + policyUtils.getType()); throw sce; } T deleted = binder.getPolicyTO(policy); policyDAO.delete(policy); return deleted; }
@Override protected PolicyTO resolveReference(final Method method, final Object... args) throws UnresolvedReferenceException { String key = null; if (ArrayUtils.isNotEmpty(args)) { for (int i = 0; key == null && i < args.length; i++) { if (args[i] instanceof String) { key = (String) args[i]; } else if (args[i] instanceof PolicyTO) { key = ((PolicyTO) args[i]).getKey(); } } } if (key != null) { try { return binder.getPolicyTO(policyDAO.find(key)); } catch (Throwable ignore) { LOG.debug("Unresolved reference", ignore); throw new UnresolvedReferenceException(ignore); } } throw new UnresolvedReferenceException(); } }