@Override public ConnInstance save(final ConnInstance connector) { final ConnInstance merged = entityManager().merge(connector); merged.getResources().forEach(resource -> { try { connRegistry.registerConnector(resource); } catch (NotFoundException e) { LOG.error("While registering connector for resource", e); } }); return merged; }
@Override public void delete(final String key) { ConnInstance connInstance = find(key); if (connInstance == null) { return; } connInstance.getResources().stream(). map(Entity::getKey).collect(Collectors.toList()). forEach(resource -> resourceDAO.delete(resource)); connInstanceHistoryConfDAO.deleteByEntity(connInstance); entityManager().remove(connInstance); connRegistry.unregisterConnector(key); } }
@PreAuthorize("hasRole('" + StandardEntitlement.CONNECTOR_DELETE + "')") public ConnInstanceTO delete(final String key) { ConnInstance connInstance = connInstanceDAO.authFind(key); if (connInstance == null) { throw new NotFoundException("Connector '" + key + "'"); } Set<String> effectiveRealms = RealmUtils.getEffective( AuthContextUtils.getAuthorizations().get(StandardEntitlement.CONNECTOR_DELETE), connInstance.getAdminRealm().getFullPath()); securityChecks(effectiveRealms, connInstance.getAdminRealm().getFullPath(), connInstance.getKey()); if (!connInstance.getResources().isEmpty()) { SyncopeClientException associatedResources = SyncopeClientException.build( ClientExceptionType.AssociatedResources); connInstance.getResources().forEach(resource -> { associatedResources.getElements().add(resource.getKey()); }); throw associatedResources; } ConnInstanceTO deleted = binder.getConnInstanceTO(connInstance); connInstanceDAO.delete(key); return deleted; }
if (resource.getConnector() != null && resource.getConnector().getResources() != null && !resource.getConnector().getResources().isEmpty()) { resource.getConnector().getResources().remove(resource);
resource.setConnector(connector); if (!connector.getResources().contains(resource)) { connector.add(resource);