@SuppressWarnings("rawtypes") private Collection<? extends ItemDelta> createShadowResultModification(Change change, OperationResult shadowResult) { PrismObjectDefinition<ShadowType> shadowDefinition = getResourceObjectShadowDefinition(); Collection<ItemDelta> modifications = new ArrayList<>(); PropertyDelta resultDelta = prismContext.deltaFactory().property().createModificationReplaceProperty(ShadowType.F_RESULT, shadowDefinition, shadowResult.createOperationResultType()); modifications.add(resultDelta); if (change.getObjectDelta() != null && change.getObjectDelta().getChangeType() == ChangeType.DELETE) { PropertyDelta failedOperationTypeDelta = prismContext.deltaFactory().property().createModificationReplaceProperty( ShadowType.F_FAILED_OPERATION_TYPE, shadowDefinition, FailedOperationTypeType.DELETE); modifications.add(failedOperationTypeDelta); } return modifications; }
private String getOidFromChange(Change change) { String shadowOid = null; if (change.getObjectDelta() != null && change.getObjectDelta().getOid() != null) { shadowOid = change.getObjectDelta().getOid(); } else { if (change.getCurrentShadow().getOid() != null) { shadowOid = change.getCurrentShadow().getOid(); } else { if (change.getOldShadow().getOid() != null) { shadowOid = change.getOldShadow().getOid(); } else { throw new IllegalArgumentException("No oid value defined for the object to synchronize."); } } } return shadowOid; }
if (change.getObjectDelta() != null) { if (change.getObjectDelta().isAdd()) { shadow = (PrismObject<ShadowType>) change.getObjectDelta().getObjectToAdd(); } else if (change.getObjectDelta().isDelete()) {
if ((change.getObjectDelta() != null && change.getObjectDelta().getChangeType() == ChangeType.DELETE)) { if (accountList.isEmpty()) { String oid = repositoryService.addObject(foundShadow, null, parentResult); foundShadow.setOid(oid); if (change.getObjectDelta() != null && change.getObjectDelta().getOid() == null) { change.getObjectDelta().setOid(oid);
private void deleteShadowFromRepoIfNeeded(Change change, OperationResult parentResult) throws ObjectNotFoundException { if (change.getObjectDelta() != null && change.getObjectDelta().getChangeType() == ChangeType.DELETE && change.getOldShadow() != null) { LOGGER.trace("Deleting detected shadow object form repository."); try { repositoryService.deleteObject(ShadowType.class, change.getOldShadow().getOid(), parentResult); LOGGER.debug("Shadow object successfully deleted form repository."); } catch (ObjectNotFoundException ex) { // What we want to delete is already deleted. Not a big problem. LOGGER.debug("Shadow object {} already deleted from repository ({})", change.getOldShadow(), ex); parentResult.recordHandledError( "Shadow object " + change.getOldShadow() + " already deleted from repository", ex); } } }
if ((change.getObjectDelta() != null && change.getObjectDelta().getChangeType() == ChangeType.DELETE)) { if (accountList.isEmpty()) { String oid = repositoryService.addObject(newShadow, null, parentResult); newShadow.setOid(oid); if (change.getObjectDelta() != null && change.getObjectDelta().getOid() == null) { change.getObjectDelta().setOid(oid); if (change.getObjectDelta() != null && change.getObjectDelta().getChangeType() == ChangeType.DELETE) { List<ItemDelta<?, ?>> deadDeltas = prismContext.deltaFor(ShadowType.class) .item(ShadowType.F_DEAD).replace(true)
if (change.getObjectDelta() != null && change.getObjectDelta().getOid() == null) { change.getObjectDelta().setOid(oldShadow.getOid()); if (change.getObjectDelta() != null && change.getObjectDelta().isDelete()) { PrismObject<ShadowType> currentShadow = change.getCurrentShadow(); if (currentShadow == null) {
@SuppressWarnings("unchecked") private ResourceObjectShadowChangeDescription createResourceShadowChangeDescription( Change change, ResourceType resourceType, String channel) { ResourceObjectShadowChangeDescription shadowChangeDescription = new ResourceObjectShadowChangeDescription(); shadowChangeDescription.setObjectDelta(change.getObjectDelta()); shadowChangeDescription.setResource(resourceType.asPrismObject()); shadowChangeDescription.setOldShadow(change.getOldShadow()); shadowChangeDescription.setCurrentShadow(change.getCurrentShadow()); if (null == channel) { shadowChangeDescription .setSourceChannel(QNameUtil.qNameToUri(SchemaConstants.CHANGE_CHANNEL_LIVE_SYNC)); } else { shadowChangeDescription.setSourceChannel(channel); } return shadowChangeDescription; }
@Test public void test200FetchChanges() throws Exception { final String TEST_NAME = "test200FetchChanges"; TestUtil.displayTestTitle(this, TEST_NAME); OperationResult result = new OperationResult(this.getClass().getName() + "." + TEST_NAME); ObjectClassComplexTypeDefinition accountDefinition = resourceSchema.findObjectClassDefinition(OpenDJController.OBJECT_CLASS_INETORGPERSON_NAME); PrismProperty<Integer> lastToken = cc.fetchCurrentToken(accountDefinition, null, result); System.out.println("Property:"); System.out.println(SchemaDebugUtil.prettyPrint(lastToken)); System.out.println("token " + lastToken.toString()); assertNotNull("No last token", lastToken); assertNotNull("No last token value", lastToken.getRealValue()); List<Change> changes = cc.fetchChanges(accountDefinition, lastToken, null, null, result); display("Changes", changes); // Just one pseudo-change that updates the token AssertJUnit.assertEquals(1, changes.size()); Change change = changes.get(0); assertNull(change.getCurrentShadow()); assertNull(change.getIdentifiers()); assertNull(change.getObjectDelta()); assertNotNull(change.getToken()); }
ObjectClassComplexTypeDefinition changeObjectClassDefinition = change.getObjectClassDefinition(); if (changeObjectClassDefinition == null) { if (!ctx.isWildcard() || change.getObjectDelta() == null || !change.getObjectDelta().isDelete()) { throw new SchemaException("No object class definition in change "+change); if (change.getObjectDelta() == null || !change.getObjectDelta().isDelete()) { if (currentShadow == null) {
PrismObject<ShadowType> oldShadow = null; if (changeObjectClassDefinition == null) { if (change.getObjectDelta() != null && change.getObjectDelta().isDelete()) { oldShadow = change.getOldShadow(); if (oldShadow == null) {