@Override public void onClick(final AjaxRequestTarget target, final AnyObjectTO ignore) { try { restClient.delete(model.getObject().getETagValue(), model.getObject().getKey()); SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED)); target.add(container); } catch (SyncopeClientException e) { LOG.error("While deleting object {}", model.getObject().getKey(), e); SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage()); } ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); }
@Override public Response update(final AnyObjectTO anyObjectTO) { anyObjectTO.setKey(getActualKey(getAnyDAO(), anyObjectTO.getKey())); AnyObjectTO before = logic.read(anyObjectTO.getKey()); checkETag(before.getETagValue()); ProvisioningResult<AnyObjectTO> updated = logic.update(AnyOperations.diff(anyObjectTO, before, false), isNullPriorityAsync()); return modificationResponse(updated); }
@Override protected Serializable onApplyInternal(final AnyWrapper<AnyObjectTO> modelObject) { final AnyObjectTO inner = modelObject.getInnerObject(); ProvisioningResult<AnyObjectTO> result; if (inner.getKey() == null) { AnyObjectCR req = new AnyObjectCR(); EntityTOUtils.toAnyCR(inner, req); result = anyObjectRestClient.create(req); } else { fixPlainAndVirAttrs(inner, getOriginalItem().getInnerObject()); AnyObjectUR req = AnyOperations.diff(inner, getOriginalItem().getInnerObject(), false); // update just if it is changed if (req.isEmpty()) { result = new ProvisioningResult<>(); result.setEntity(inner); } else { result = anyObjectRestClient.update(getOriginalItem().getInnerObject().getETagValue(), req); } } return result; }