@Override public PrismObjectDefinition determineDefinitionFromClass(Class compileTimeClass) { PrismObjectDefinition def = findObjectDefinitionByCompileTimeClass(compileTimeClass); if (def != null) { return def; } Class<?> superclass = compileTimeClass.getSuperclass(); if (superclass == null || superclass == Object.class) { return null; } return determineDefinitionFromClass(superclass); }
@Override public <C extends Containerable> void applyDefinition(PrismContainer<C> container, Class<C> compileTimeClass, boolean force) throws SchemaException { PrismContainerDefinition<C> definition = determineDefinitionFromClass(compileTimeClass); container.applyDefinition(definition, force); }
@Override public <O extends Objectable> void applyDefinition(ObjectDelta<O> objectDelta, Class<O> compileTimeClass, boolean force) throws SchemaException { PrismObjectDefinition<O> objectDefinition = determineDefinitionFromClass(compileTimeClass); objectDelta.applyDefinition(objectDefinition, force); }
@Override public <C extends Containerable, O extends Objectable> void applyDefinition(PrismContainerValue<C> prismContainerValue, Class<O> compileTimeClass, ItemPath path, boolean force) throws SchemaException { PrismObjectDefinition<O> objectDefinition = determineDefinitionFromClass(compileTimeClass); PrismContainerDefinition<C> containerDefinition = objectDefinition.findContainerDefinition(path); prismContainerValue.applyDefinition(containerDefinition, force); }