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; }
SecurityViolationException, ObjectNotFoundException, ExpressionEvaluationException, EncryptionException { PrismObject<ShadowType> shadow = change.getCurrentShadow();
@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()); }
@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; }
change.setOldShadow(oldShadow); if (change.getCurrentShadow() != null) { PrismObject<ShadowType> currentShadow = completeShadow(ctx, change.getCurrentShadow(), oldShadow, false, parentResult); change.setCurrentShadow(currentShadow); PrismObject<ShadowType> currentShadow = change.getCurrentShadow(); if (currentShadow == null) { currentShadow = oldShadow.clone();
@Test public void test101FetchAddChange() throws Exception { final String TEST_NAME = "test101FetchAddChange"; TestUtil.displayTestTitle(this, TEST_NAME); OperationResult result = new OperationResult(this.getClass().getName() + "." + TEST_NAME); ObjectClassComplexTypeDefinition accountDefinition = resourceSchema.findDefaultObjectClassDefinition(ShadowKindType.ACCOUNT); PrismProperty<?> lastToken = cc.fetchCurrentToken(accountDefinition, null, result); assertNotNull("No last sync token", lastToken); // Add account to the resource dummyResource.setSyncStyle(DummySyncStyle.DUMB); DummyAccount newAccount = new DummyAccount("blackbeard"); newAccount.addAttributeValues("fullname", "Edward Teach"); newAccount.setEnabled(true); newAccount.setPassword("shiverMEtimbers"); dummyResource.addAccount(newAccount); // WHEN List<Change> changes = cc.fetchChanges(accountDefinition, lastToken, null, null, result); AssertJUnit.assertEquals(1, changes.size()); Change change = changes.get(0); assertNotNull("null change", change); PrismObject<ShadowType> currentShadow = change.getCurrentShadow(); assertNotNull("null current shadow", currentShadow); PrismAsserts.assertParentConsistency(currentShadow); Collection<ResourceAttribute<?>> identifiers = change.getIdentifiers(); assertNotNull("null identifiers", identifiers); assertFalse("empty identifiers", identifiers.isEmpty()); }
PrismObject<ShadowType> currentShadow = change.getCurrentShadow(); ObjectClassComplexTypeDefinition changeObjectClassDefinition = change.getObjectClassDefinition(); if (changeObjectClassDefinition == null) {