@Override public Class<? extends ObjectType> getCompileTimeClassForObjectType(QName objectType) { PrismObjectDefinition definition = findObjectDefinitionByType(objectType); if (definition == null) { return null; } return definition.getCompileTimeClass(); }
public Class<Objectable> getTargetTypeCompileTimeClass(PrismContext prismContext) { QName type = getTargetType(); if (type == null) { return null; } else { PrismObjectDefinition<Objectable> objDef = prismContext.getSchemaRegistry().findObjectDefinitionByType(type); return objDef != null ? objDef.getCompileTimeClass() : null; } }
public static <T extends Objectable> void assertObjectDefinition(PrismObjectDefinition<T> objDef, QName elementName, QName typeName, Class<T> compileTimeClass) { assertNotNull("No definition", objDef); assertEquals("Wrong elementName for "+objDef, elementName, objDef.getName()); assertEquals("Wrong typeName for "+objDef, typeName, objDef.getTypeName()); assertEquals("Wrong compileTimeClass for " + objDef, compileTimeClass, objDef.getCompileTimeClass()); }
public static <T extends Objectable> ObjectDelta<T> createObjectDelta(ObjectModificationType objectModification, PrismObjectDefinition<T> objDef) throws SchemaException { ObjectDelta<T> objectDelta = objDef.getPrismContext().deltaFactory().object().create(objDef.getCompileTimeClass(), ChangeType.MODIFY); objectDelta.setOid(objectModification.getOid()); for (ItemDeltaType propMod : objectModification.getItemDelta()) { ItemDelta itemDelta = createItemDelta(propMod, objDef); objectDelta.addModification(itemDelta); } return objectDelta; }
QName focusType = def.getFocusType() != null ? def.getFocusType() : UserType.COMPLEX_TYPE; PrismObjectDefinition<Objectable> objdef = rctx.prismContext.getSchemaRegistry().findObjectDefinitionByType(focusType); if (objdef != null && objdef.getCompileTimeClass() != null && FocusType.class.isAssignableFrom(objdef.getCompileTimeClass())) { clazz = (Class) objdef.getCompileTimeClass();
objectClass = objectDefinition.getCompileTimeClass();
Class clazz = prismContext.getSchemaRegistry().determineCompileTimeClass(type); if (clazz == null) { clazz = prismContext.getSchemaRegistry().findObjectDefinitionByType(type).getCompileTimeClass();
@Test public void testRoleDefinition() { System.out.println("===[ testRoleDefinition ]==="); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); SchemaRegistry schemaRegistry = prismContext.getSchemaRegistry(); // WHEN PrismObjectDefinition<RoleType> roleDefinition = schemaRegistry.findObjectDefinitionByElementName(new QName(SchemaConstantsGenerated.NS_COMMON,"role")); // THEN assertNotNull("No role definition", roleDefinition); System.out.println("Role definition:"); System.out.println(roleDefinition.debugDump()); PrismObjectDefinition<RoleType> roleDefinitionByClass = schemaRegistry.findObjectDefinitionByCompileTimeClass(RoleType.class); assertTrue("Different role def", roleDefinition == roleDefinitionByClass); assertEquals("Wrong compile-time class in role definition", RoleType.class, roleDefinition.getCompileTimeClass()); PrismAsserts.assertPropertyDefinition(roleDefinition, ObjectType.F_NAME, PolyStringType.COMPLEX_TYPE, 0, 1); PrismAsserts.assertItemDefinitionDisplayName(roleDefinition, ObjectType.F_NAME, "ObjectType.name"); PrismAsserts.assertItemDefinitionDisplayOrder(roleDefinition, ObjectType.F_NAME, 0); PrismAsserts.assertPropertyDefinition(roleDefinition, ObjectType.F_DESCRIPTION, DOMUtil.XSD_STRING, 0, 1); PrismAsserts.assertItemDefinitionDisplayName(roleDefinition, ObjectType.F_DESCRIPTION, "ObjectType.description"); PrismAsserts.assertItemDefinitionDisplayOrder(roleDefinition, ObjectType.F_DESCRIPTION, 10); PrismAsserts.assertPropertyDefinition(roleDefinition, RoleType.F_REQUESTABLE, DOMUtil.XSD_BOOLEAN, 0, 1); }
@Override public <T extends ObjectType> T resolveReference(ObjectReferenceType reference) throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException, ExpressionEvaluationException { if (reference == null) { return null; } QName type = reference.getType(); // TODO what about implicitly specified types, like in resourceRef? PrismObjectDefinition<T> objectDefinition = prismContext.getSchemaRegistry() .findObjectDefinitionByType(reference.getType()); if (objectDefinition == null) { throw new SchemaException("No definition for type " + type); } return modelService.getObject( objectDefinition.getCompileTimeClass(), reference.getOid(), SelectorOptions.createCollection(GetOperationOptions.createExecutionPhase()), getCurrentTask(), getCurrentResult()) .asObjectable(); }
public static void assertUserDefinition(PrismObjectDefinition<UserType> userDefinition) { assertEquals("Wrong compile-time class in user definition", UserType.class, userDefinition.getCompileTimeClass()); assertFocusDefinition(userDefinition.getComplexTypeDefinition(), "user"); PrismAsserts.assertPropertyDefinition(userDefinition, UserType.F_FULL_NAME, SchemaConstants.T_POLY_STRING_TYPE, 0, 1); PrismAsserts.assertItemDefinitionDisplayName(userDefinition, UserType.F_FULL_NAME, "UserType.fullName"); PrismAsserts.assertItemDefinitionDisplayOrder(userDefinition, UserType.F_FULL_NAME, 100); PrismAsserts.assertPropertyDefinition(userDefinition, UserType.F_GIVEN_NAME, PrismConstants.POLYSTRING_TYPE_QNAME, 0, 1); PrismAsserts.assertPropertyDefinition(userDefinition, UserType.F_FAMILY_NAME, PrismConstants.POLYSTRING_TYPE_QNAME, 0, 1); PrismAsserts.assertPropertyDefinition(userDefinition, UserType.F_ADDITIONAL_NAME, PrismConstants.POLYSTRING_TYPE_QNAME, 0, 1); }
private void assertAccountDefinition(PrismObjectDefinition<AccountType> accountDefinition) { assertEquals("Wrong compile-time class in account definition", AccountType.class, accountDefinition.getCompileTimeClass()); PrismAsserts.assertPropertyDefinition(accountDefinition, ACCOUNT_NAME_QNAME, PolyStringType.COMPLEX_TYPE, 0, 1); PrismAsserts.assertPropertyDefinition(accountDefinition, ACCOUNT_DESCRIPTION_QNAME, DOMUtil.XSD_STRING, 0, 1); assertFalse("Account definition is marked as runtime", accountDefinition.isRuntimeSchema()); PrismContainerDefinition attributesContainer = accountDefinition.findContainerDefinition(ACCOUNT_ATTRIBUTES_QNAME); PrismAsserts.assertDefinition(attributesContainer, ACCOUNT_ATTRIBUTES_QNAME, ATTRIBUTES_TYPE_QNAME, 0, 1); assertTrue("Attributes is NOT runtime", attributesContainer.isRuntimeSchema()); }
@Test public void testAccountDefinition() { System.out.println("===[ testAccountDefinition ]==="); // GIVEN PrismContext prismContext = PrismTestUtil.getPrismContext(); SchemaRegistry schemaRegistry = prismContext.getSchemaRegistry(); // WHEN PrismObjectDefinition<ShadowType> accountDefinition = schemaRegistry.findObjectDefinitionByElementName( SchemaConstants.C_SHADOW); assertNotNull("No account definition", accountDefinition); System.out.println("Account definition:"); System.out.println(accountDefinition.debugDump()); PrismObjectDefinition<ShadowType> accountDefinitionByClass = schemaRegistry.findObjectDefinitionByCompileTimeClass(ShadowType.class); assertTrue("Different account def", accountDefinition == accountDefinitionByClass); assertEquals("Wrong compile-time class in account definition", ShadowType.class, accountDefinition.getCompileTimeClass()); PrismAsserts.assertPropertyDefinition(accountDefinition, ShadowType.F_NAME, PolyStringType.COMPLEX_TYPE, 0, 1); PrismAsserts.assertPropertyDefinition(accountDefinition, ShadowType.F_DESCRIPTION, DOMUtil.XSD_STRING, 0, 1); assertFalse("Account definition is marked as runtime", accountDefinition.isRuntimeSchema()); PrismContainerDefinition attributesContainer = accountDefinition.findContainerDefinition(ShadowType.F_ATTRIBUTES); PrismAsserts.assertDefinition(attributesContainer, ShadowType.F_ATTRIBUTES, ShadowAttributesType.COMPLEX_TYPE, 0, 1); assertTrue("Attributes is NOT runtime", attributesContainer.isRuntimeSchema()); assertEquals("Wrong attributes compile-time class", ShadowAttributesType.class, attributesContainer.getCompileTimeClass()); }
assertTrue("Different user def", resourceDefinition == resourceDefinitionByClass); assertEquals("Wrong compile-time class in resource definition", ResourceType.class, resourceDefinition.getCompileTimeClass()); PrismAsserts.assertPropertyDefinition(resourceDefinition, ResourceType.F_NAME, PolyStringType.COMPLEX_TYPE, 0, 1); PrismAsserts.assertPropertyDefinition(resourceDefinition, ResourceType.F_DESCRIPTION, DOMUtil.XSD_STRING, 0, 1);
Class<T> type = objDef.getCompileTimeClass();
private void assertUserDefinition(PrismObjectDefinition<UserType> userDefinition) { assertEquals("Wrong compile-time class in user definition", UserType.class, userDefinition.getCompileTimeClass()); PrismAsserts.assertPropertyDefinition(userDefinition, USER_NAME_QNAME, PolyStringType.COMPLEX_TYPE, 0, 1); PrismAsserts.assertItemDefinitionDisplayName(userDefinition, USER_NAME_QNAME, "ObjectType.name");
throw new SchemaException("Unknown object type "+specTypeQName+" in "+autzHumanReadableDesc); Class<?> specObjectClass = specObjectDef.getCompileTimeClass(); if (!objectType.isAssignableFrom(specObjectClass)) { traceClassMatch("Authorization not applicable for object because of type mismatch", specObjectClass, objectType);