@Override public Collection<? extends REL> getRelationships(final String otherEndKey) { return getRelationships().stream().filter(relationship -> otherEndKey != null && otherEndKey.equals(relationship.getRightEnd().getKey())). collect(Collectors.toList()); } }
protected void doHandle( final List<? extends Any<?>> anys, final SyncopePushResultHandler handler, final ExternalResource resource) throws JobExecutionException { for (int i = 0; i < anys.size() && !interrupt; i++) { try { handler.handle(anys.get(i).getKey()); reportHandled( anys.get(i).getType().getKey(), (anys.get(i) instanceof User ? ((User) anys.get(i)).getUsername() : anys.get(i) instanceof Group ? ((Group) anys.get(i)).getName() : ((AnyObject) anys.get(i)).getName())); } catch (Exception e) { LOG.warn("Failure pushing '{}' on '{}'", anys.get(i), resource, e); throw new JobExecutionException("While pushing " + anys.get(i) + " on " + resource, e); } } }
@Transactional @Override public void refreshDynMemberships(final Any<?> any) { findAll().forEach(dynRealm -> { Optional<? extends DynRealmMembership> memb = dynRealm.getDynMembership(any.getType()); if (memb.isPresent()) { Query delete = entityManager().createNativeQuery( "DELETE FROM " + DYNMEMB_TABLE + " WHERE dynRealm_id=? AND any_id=?"); delete.setParameter(1, dynRealm.getKey()); delete.setParameter(2, any.getKey()); delete.executeUpdate(); if (jpaAnySearchDAO().matches(any, SearchCondConverter.convert(memb.get().getFIQLCond()))) { Query insert = entityManager().createNativeQuery("INSERT INTO " + DYNMEMB_TABLE + " VALUES(?, ?)"); insert.setParameter(1, any.getKey()); insert.setParameter(2, dynRealm.getKey()); insert.executeUpdate(); } } }); }
private void populateTransitiveResources( final Group group, final Any<?> any, final Map<String, PropagationByResource> result) { PropagationByResource propByRes = new PropagationByResource(); group.getResources().forEach(resource -> { if (!any.getResources().contains(resource)) { propByRes.add(ResourceOperation.DELETE, resource.getKey()); } if (!propByRes.isEmpty()) { result.put(any.getKey(), propByRes); } }); }
protected String check(final MemberCond cond) { String memberKey; if (SyncopeConstants.UUID_PATTERN.matcher(cond.getMember()).matches()) { memberKey = cond.getMember(); } else { Any<?> member = userDAO.findByUsername(cond.getMember()); if (member == null) { member = anyObjectDAO.findByName(cond.getMember()); } memberKey = member == null ? null : member.getKey(); } if (memberKey == null) { LOG.error("Could not find user or any object for '" + cond.getMember() + "'"); throw new IllegalArgumentException(); } return memberKey; }
protected Map<String, String> getConnObjectKeys(final Any<?> any, final AnyUtils anyUtils) { Map<String, String> connObjectKeys = new HashMap<>(); anyUtils.getAllResources(any). forEach(resource -> resource.getProvision(any.getType()). filter(provision -> provision.getMapping() != null). ifPresent(provision -> { MappingItem connObjectKeyItem = MappingUtils.getConnObjectKeyItem(provision). orElseThrow(() -> new NotFoundException( "ConnObjectKey mapping for " + any.getType().getKey() + " " + any.getKey() + " on resource '" + resource.getKey() + "'")); mappingManager.getConnObjectKeyValue(any, provision). ifPresent(value -> connObjectKeys.put(resource.getKey(), value)); })); return connObjectKeys; } }
@Override public DynRealm saveAndRefreshDynMemberships(final DynRealm dynRealm) { DynRealm merged = save(dynRealm); // refresh dynamic memberships clearDynMembers(merged); merged.getDynMemberships().stream().map(memb -> jpaAnySearchDAO().search( SearchCondConverter.convert(memb.getFIQLCond()), memb.getAnyType().getKind())). forEachOrdered(matching -> { matching.forEach(any -> { Query insert = entityManager().createNativeQuery( "INSERT INTO " + DYNMEMB_TABLE + " VALUES(?, ?)"); insert.setParameter(1, any.getKey()); insert.setParameter(2, merged.getKey()); insert.executeUpdate(); publisher.publishEvent(new AnyCreatedUpdatedEvent<>(this, any, AuthContextUtils.getDomain())); }); }); return merged; }
protected void provision(final Any<?> any, final Boolean enable, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); List<PropagationTaskInfo> taskInfos = propagationManager.getCreateTasks( any.getType().getKind(), any.getKey(), enable, propByRes, before.getVirAttrs(), noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.ofNullable(null)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
if (ownedResources.contains(schema.getProvision().getResource())) { VirAttrCacheValue virAttrCacheValue = virAttrCache.get(any.getType().getKey(), any.getKey(), schema.getKey()); virAttrCacheValue.setValues(attr.getValue()); virAttrCache.put( any.getType().getKey(), any.getKey(), schema.getKey(), virAttrCacheValue); LOG.debug("Values for {} set in cache: {}", schema, virAttrCacheValue);
@Override public <T extends Any<?>> boolean matches(final T any, final SearchCond cond) { AnyCond keycond = new AnyCond(AttributeCond.Type.EQ); keycond.setSchema("key"); keycond.setExpression(any.getKey()); return !search(SearchCond.getAndCond(SearchCond.getLeafCond(keycond), cond), any.getType().getKind()).isEmpty(); } }
case key: type = ReportXMLConst.XSD_STRING; value = any.getKey(); break;
protected void deprovision(final Any<?> any, final ConnectorObject beforeObj, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.DELETE, profile.getTask().getResource().getKey()); propByRes.addOldConnObjectKey(profile.getTask().getResource().getKey(), beforeObj.getUid().getUidValue()); List<PropagationTaskInfo> taskInfos = propagationManager.getDeleteTasks( any.getType().getKind(), any.getKey(), propByRes, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.of(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
protected void update( final Any<?> any, final Boolean enable, final ConnectorObject beforeObj, final ProvisioningReport result) { boolean changepwd = any instanceof User; List<String> ownedResources = getAnyUtils().getAllResources(any).stream(). map(Entity::getKey).collect(Collectors.toList()); List<String> noPropResources = new ArrayList<>(ownedResources); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.UPDATE, profile.getTask().getResource().getKey()); propByRes.addOldConnObjectKey(profile.getTask().getResource().getKey(), beforeObj.getUid().getUidValue()); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( any.getType().getKind(), any.getKey(), changepwd, enable, propByRes, null, noPropResources); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.of(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); taskExecutor.execute(taskInfos.get(0), reporter); reportPropagation(result, reporter); } }
protected void link(final Any<?> any, final boolean unlink, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(unlink ? PatchOperation.DELETE : PatchOperation.ADD_REPLACE). value(profile.getTask().getResource().getKey()).build()); update(patch); result.setStatus(ProvisioningReport.Status.SUCCESS); }
protected void assign(final Any<?> any, final Boolean enabled, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(PatchOperation.ADD_REPLACE). value(profile.getTask().getResource().getKey()).build()); update(patch); provision(any, enabled, result); }
protected void unassign(final Any<?> any, final ConnectorObject beforeObj, final ProvisioningReport result) { AnyPatch patch = getAnyUtils().newAnyPatch(any.getKey()); patch.getResources().add(new StringPatchItem.Builder(). operation(PatchOperation.DELETE). value(profile.getTask().getResource().getKey()).build()); update(patch); deprovision(any, beforeObj, result); }
virtualResources.addAll(propByRes.get(ResourceOperation.CREATE)); virtualResources.addAll(propByRes.get(ResourceOperation.UPDATE)); virtualResources.addAll(dao(any.getType().getKind()).findAllResourceKeys(any.getKey())); task.setAnyType(any.getType().getKey()); if (!deleteOnResource) { task.setEntityKey(any.getKey());
@Override protected void provision(final Any<?> any, final Boolean enabled, final ProvisioningReport result) { AnyTO before = getAnyTO(any.getKey()); List<String> noPropResources = new ArrayList<>(before.getResources()); noPropResources.remove(profile.getTask().getResource().getKey()); PropagationByResource propByRes = new PropagationByResource(); propByRes.add(ResourceOperation.CREATE, profile.getTask().getResource().getKey()); PropagationReporter reporter = taskExecutor.execute(propagationManager.getUserCreateTasks( before.getKey(), null, enabled, propByRes, before.getVirAttrs(), noPropResources), false); reportPropagation(result, reporter); }
task.setNotification(notification); if (any != null) { task.setEntityKey(any.getKey()); task.setAnyTypeKind(any.getType().getKind());
map(relationship -> getRelationshipTO( relationship.getType().getKey(), relationship.getLeftEnd().getKey().equals(anyObject.getKey()) ? relationship.getRightEnd() : anyObject)).