resource.modifyUnfrozen(() -> { try { PrismObjectDefinition<ResourceType> newResourceDefinition = resource.getDefinition().clone(); for (ConnectorSpec connectorSpec : getAllConnectorSpecs(resource)) { applyConnectorSchemaToResource(connectorSpec, newResourceDefinition, resource, task, result);
@Test public void testRoleType() throws Exception { MidPointPrismContextFactory factory = getContextFactory(); PrismContext context = factory.createInitializedPrismContext(); SchemaRegistry schemaRegistry = context.getSchemaRegistry(); PrismObjectDefinition<RoleType> roleDefinition = schemaRegistry.findObjectDefinitionByCompileTimeClass(RoleType.class); assertNotNull("No role definition", roleDefinition); assertFalse("Role definition is marked as runtime", roleDefinition.isRuntimeSchema()); PrismPropertyDefinition nameDef = roleDefinition.findPropertyDefinition(ObjectType.F_NAME); assertNotNull("No name definition", nameDef); PrismContainerDefinition extensionDef = roleDefinition.findContainerDefinition(ObjectType.F_EXTENSION); assertNotNull("No 'extension' definition", extensionDef); assertTrue("Extension definition is NOT marked as runtime", extensionDef.isRuntimeSchema()); PrismPropertyDefinition identifierDef = roleDefinition.findPropertyDefinition(RoleType.F_IDENTIFIER); assertNotNull("No identifier definition", identifierDef); // Just make sure this does not end with NPE or stack overflow PrismObjectDefinition<RoleType> shallowClone = roleDefinition.clone(); PrismObjectDefinition<RoleType> deepClone = roleDefinition.deepClone(false, null); PrismObjectDefinition<RoleType> ultraDeepClone = roleDefinition.deepClone(true, null); }
@Test public void testUserType() throws Exception { MidPointPrismContextFactory factory = getContextFactory(); PrismContext context = factory.createInitializedPrismContext(); SchemaRegistry schemaRegistry = context.getSchemaRegistry(); PrismObjectDefinition<UserType> userDefinition = schemaRegistry.findObjectDefinitionByCompileTimeClass(UserType.class); assertNotNull("No user definition", userDefinition); System.out.println("testUserType:"); System.out.println(userDefinition.debugDump()); assertFalse("User definition is marked as runtime", userDefinition.isRuntimeSchema()); PrismPropertyDefinition<PolyString> nameDef = userDefinition.findPropertyDefinition(ObjectType.F_NAME); assertNotNull("No name definition", nameDef); PrismContainerDefinition extensionDef = userDefinition.findContainerDefinition(UserType.F_EXTENSION); assertNotNull("No 'extension' definition", extensionDef); assertTrue("Extension definition is NOT marked as runtime", extensionDef.isRuntimeSchema()); PrismPropertyDefinition<PolyString> givenNameDef = userDefinition.findPropertyDefinition(UserType.F_GIVEN_NAME); assertNotNull("No givenName definition", givenNameDef); PrismPropertyDefinition<String> preferredLanguageDef = userDefinition.findPropertyDefinition(UserType.F_PREFERRED_LANGUAGE); assertNotNull("No preferredLanguage definition", preferredLanguageDef); PrismReferenceValue preferredLanguageValueEnumerationRef = preferredLanguageDef.getValueEnumerationRef(); assertNotNull("No valueEnumerationRef in preferredLanguage definition", preferredLanguageValueEnumerationRef); assertEquals("Wrong OID in valueEnumerationRef in preferredLanguage definition", SystemObjectsType.LOOKUP_LANGUAGES.value(), preferredLanguageValueEnumerationRef.getOid()); assertEquals("Wrong type in valueEnumerationRef in preferredLanguage definition", LookupTableType.COMPLEX_TYPE, preferredLanguageValueEnumerationRef.getTargetType()); // Just make sure this does not end with NPE or stack overflow PrismObjectDefinition<UserType> shallowClone = userDefinition.clone(); PrismObjectDefinition<UserType> deepClone = userDefinition.deepClone(false, null); PrismObjectDefinition<UserType> ultraDeepClone = userDefinition.deepClone(true, null); }
PrismObjectDefinition<ResourceType> newResourceDefinition = resource.getDefinition().clone(); applyConnectorSchemaToResource(connectorSpec, newResourceDefinition, resource, task, configResult); PrismContainerValue<ConnectorConfigurationType> connectorConfiguration = connectorSpec.getConnectorConfiguration().getValue();