public static PrismObjectDefinition<ShadowType> applyObjectClass(PrismObjectDefinition<ShadowType> shadowDefinition, ObjectClassComplexTypeDefinition objectClassDefinition) throws SchemaException { PrismObjectDefinition<ShadowType> shadowDefClone = shadowDefinition.cloneWithReplacedDefinition(ShadowType.F_ATTRIBUTES, objectClassDefinition.toResourceAttributeContainerDefinition()); return shadowDefClone; }
@Override public <T extends ShadowType> PrismObjectDefinition<T> toShadowDefinition() { PrismObjectDefinition<T> origShadowDef = (PrismObjectDefinition<T>) prismContext.getSchemaRegistry(). findObjectDefinitionByCompileTimeClass(ShadowType.class); PrismObjectDefinition<T> shadowDefinition = origShadowDef.cloneWithReplacedDefinition(ShadowType.F_ATTRIBUTES, this); return shadowDefinition; }
static PrismObjectDefinition<ShadowType> constructObjectDefinition(RefinedObjectClassDefinition refinedObjectClassDefinition) { // Almost-shallow clone of object definition and complex type PrismObjectDefinition<ShadowType> originalObjectDefinition = refinedObjectClassDefinition.getSchemaRegistry().findObjectDefinitionByCompileTimeClass(ShadowType.class); return originalObjectDefinition.cloneWithReplacedDefinition(ShadowType.F_ATTRIBUTES, refinedObjectClassDefinition.toResourceAttributeContainerDefinition()); }
@Override public PrismObject<ShadowType> createBlankShadow(RefinedObjectClassDefinition definition) { PrismObject<ShadowType> accountShadow; try { accountShadow = getPrismContext().createObject(ShadowType.class); } catch (SchemaException e) { // This should not happen throw new SystemException("Internal error instantiating account shadow: "+e.getMessage(), e); } ShadowType accountShadowType = accountShadow.asObjectable(); accountShadowType .intent(getIntent()) .kind(getKind()) .objectClass(getObjectClassDefinition().getTypeName()) .resourceRef(getResourceOid(), ResourceType.COMPLEX_TYPE); // Setup definition PrismObjectDefinition<ShadowType> newDefinition = accountShadow.getDefinition().cloneWithReplacedDefinition( ShadowType.F_ATTRIBUTES, definition.toResourceAttributeContainerDefinition()); accountShadow.setDefinition(newDefinition); return accountShadow; }
if (origAttrContainerDef == null || !(origAttrContainerDef instanceof ResourceAttributeContainerDefinition)) { PrismObjectDefinition<ShadowType> clonedDefinition = objectDefinition.cloneWithReplacedDefinition( ShadowType.F_ATTRIBUTES, objectClassDefinition.toResourceAttributeContainerDefinition()); shadow.setDefinition(clonedDefinition);