private List<PrismContainer<?>> listAllPrismContainers(Visitable object) { List<PrismContainer<?>> values = new ArrayList<>(); object.accept(visitable -> { if (!(visitable instanceof PrismContainer)) { return; } if (visitable instanceof PrismObject) { return; } PrismContainer container = (PrismContainer) visitable; PrismContainerDefinition def = container.getDefinition(); if (def.isSingleValue()) { return; } values.add((PrismContainer) visitable); }); return values; }
public void setExtensionRealValues(PrismContainerValue<?> containerValue, Map<String, Object> map) throws SchemaException { PrismContainer<Containerable> ext = containerValue.findOrCreateContainer(ObjectType.F_EXTENSION); Map<QName, Object> qnameKeyedMap = new HashMap<>(); map.forEach((uri, value) -> qnameKeyedMap.put(QNameUtil.uriToQName(uri, true), value)); List<Item<?, ?>> items = ObjectTypeUtil.mapToExtensionItems(qnameKeyedMap, ext.getDefinition(), prismContext); for (Item<?, ?> item : items) { ext.getValue().addReplaceExisting(item); } }
private void assertContainerDefinition(PrismContainer container, String contName, QName xsdType, int minOccurs, int maxOccurs) { QName qName = new QName(SchemaConstantsGenerated.NS_COMMON, contName); PrismAsserts.assertDefinition(container.getDefinition(), qName, xsdType, minOccurs, maxOccurs); }
public static void assertContainerDefinition(PrismContainer container, String contName, QName xsdType, int minOccurs, int maxOccurs) { QName qName = new QName(NS_FOO, contName); PrismAsserts.assertDefinition(container.getDefinition(), qName, xsdType, minOccurs, maxOccurs); }
protected void assertContainerDefinition(PrismContainer<?> container, String contName, QName xsdType, int minOccurs, int maxOccurs) { QName qName = new QName(SchemaConstantsGenerated.NS_COMMON, contName); PrismAsserts.assertDefinition(container.getDefinition(), qName, xsdType, minOccurs, maxOccurs); } }
private <C extends Containerable> void parseContainerValueToContainer(PrismContainer<C> container, XNodeImpl node, @NotNull ParsingContext pc) throws SchemaException { container.add(parseContainerValue(node, container.getDefinition(), pc)); if (node instanceof MapXNodeImpl && container instanceof PrismObject) { MapXNodeImpl map = (MapXNodeImpl) node; PrismObject object = (PrismObject) container; object.setOid(getOid(map)); object.setVersion(getVersion(map)); } }
@Override public <C extends Containerable> void setExtensionContainer(PrismContainer<C> container) throws SchemaException { processModificationBatched(setExtensionContainerAndPrepareDelta(container.getElementName(), container.getDefinition(), PrismValueCollectionsUtil.cloneCollection(container.getValues()))); }
protected void assertContainerDefinition(PrismContainer container, String contName, QName xsdType, int minOccurs, int maxOccurs) { ItemName qName = new ItemName(SchemaConstantsGenerated.NS_COMMON, contName); PrismAsserts.assertDefinition(container.getDefinition(), qName, xsdType, minOccurs, maxOccurs); }
private void checkExtension(PrismContainer<Containerable> extensionContainer, String sourceDescription) { assertNotNull("No extension container in "+sourceDescription+" (prism)", extensionContainer); assertNotNull("No extension definition in "+sourceDescription+" (prism)", extensionContainer.getDefinition()); assertTrue("Not runtime in definition in "+sourceDescription+" (prism)", extensionContainer.getDefinition().isRuntimeSchema()); }
private void assertConfigurationPropertyDefinition(PrismContainer container, String propertyLocalName, QName expectedType, int expectedMinOccurs, int expectedMaxOccurs, String expectedDisplayName, String expectedHelp) { QName propName = new QName(container.getDefinition().getTypeName().getNamespaceURI(),propertyLocalName); PrismProperty prop = container.findProperty(ItemName.fromQName(propName)); assertNotNull("No property "+propName, prop); PrismPropertyDefinition propDef = prop.getDefinition(); assertNotNull("No definition for property "+prop, propDef); assertConfigurationPropertyDefinition(propDef, expectedType, expectedMinOccurs, expectedMaxOccurs, expectedDisplayName, expectedHelp); }
@Test public void test004Configuration() throws Exception { final String TEST_NAME = "test004Configuration"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // WHEN resource = provisioningService.getObject(ResourceType.class, getResourceOid(), null, task, result); resourceType = resource.asObjectable(); PrismContainer<Containerable> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); assertNotNull("No configuration container", configurationContainer); PrismContainerDefinition confContDef = configurationContainer.getDefinition(); assertNotNull("No configuration container definition", confContDef); PrismContainer confingurationPropertiesContainer = configurationContainer.findContainer(SchemaConstants.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_ELEMENT_QNAME); assertNotNull("No configuration properties container", confingurationPropertiesContainer); PrismContainerDefinition confPropDef = confingurationPropertiesContainer.getDefinition(); assertNotNull("No configuration properties container definition", confPropDef); }
@Test public void test004Configuration() throws Exception { final String TEST_NAME = "test004Configuration"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(AbstractManualResourceTest.class.getName() + "." + TEST_NAME); // WHEN resource = provisioningService.getObject(ResourceType.class, getResourceOid(), null, null, result); resourceType = resource.asObjectable(); PrismContainer<Containerable> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); assertNotNull("No configuration container", configurationContainer); PrismContainerDefinition confContDef = configurationContainer.getDefinition(); assertNotNull("No configuration container definition", confContDef); PrismProperty<String> propDefaultAssignee = configurationContainer.findProperty(CONF_PROPERTY_DEFAULT_ASSIGNEE_QNAME); assertNotNull("No defaultAssignee conf prop", propDefaultAssignee); // assertNotNull("No configuration properties container", confingurationPropertiesContainer); // PrismContainerDefinition confPropDef = confingurationPropertiesContainer.getDefinition(); // assertNotNull("No configuration properties container definition", confPropDef); }
@Test public void test014Configuration() throws Exception { final String TEST_NAME = "test014Configuration"; displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(AbstractManualResourceTest.class.getName() + "." + TEST_NAME); // WHEN resource = modelService.getObject(ResourceType.class, getResourceOid(), null, null, result); resourceType = resource.asObjectable(); PrismContainer<Containerable> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); assertNotNull("No configuration container", configurationContainer); PrismContainerDefinition confContDef = configurationContainer.getDefinition(); assertNotNull("No configuration container definition", confContDef); PrismProperty<String> propDefaultAssignee = configurationContainer.findProperty(CONF_PROPERTY_DEFAULT_ASSIGNEE_QNAME); assertNotNull("No defaultAssignee conf prop", propDefaultAssignee); // assertNotNull("No configuration properties container", confingurationPropertiesContainer); // PrismContainerDefinition confPropDef = confingurationPropertiesContainer.getDefinition(); // assertNotNull("No configuration properties container definition", confPropDef); assertSteadyResources(); }
@Test public void test102GetAccountNoFetch() throws Exception { TestUtil.displayTestTitle(this, "test102GetAccountNoFetch"); // GIVEN Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + ".test102GetAccountNoFetch"); OperationResult result = task.getResult(); preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createNoFetch()); // WHEN PrismObject<ShadowType> account = modelService.getObject(ShadowType.class, accountJackOid, options , task, result); display("Account", account); display("Account def", account.getDefinition()); assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 0); PrismContainer<Containerable> accountContainer = account.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyAccountShadowRepo(account, accountJackOid, "jack"); assertSuccess("getObject result", result); assertSteadyResources(); }
@Test public void test103GetAccountRaw() throws Exception { TestUtil.displayTestTitle(this, "test103GetAccountRaw"); // GIVEN Task task = taskManager.createTaskInstance(TestModelServiceContract.class.getName() + ".test103GetAccountRaw"); OperationResult result = task.getResult(); preTestCleanup(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ShadowType> account = modelService.getObject(ShadowType.class, accountJackOid, options , task, result); display("Account", account); display("Account def", account.getDefinition()); assertCounterIncrement(InternalCounters.SHADOW_FETCH_OPERATION_COUNT, 0); PrismContainer<Containerable> accountContainer = account.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyAccountShadowRepo(account, accountJackOid, "jack"); assertSuccess("getObject result", result); assertSteadyResources(); }
private void assertResourceDummy(PrismObject<ResourceType> resource, boolean expectSchema) { assertResource(resource, expectSchema); PrismContainer<ConnectorConfigurationType> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); PrismContainerDefinition<ConnectorConfigurationType> configurationContainerDefinition = configurationContainer.getDefinition(); assertDummyConfigurationContainerDefinition(configurationContainerDefinition, "from container"); PrismContainer<Containerable> configurationPropertiesContainer = configurationContainer.findContainer(SchemaConstants.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_ELEMENT_QNAME); assertNotNull("No container "+SchemaConstants.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_ELEMENT_QNAME, configurationPropertiesContainer); assertConfigurationPropertyDefinition(configurationPropertiesContainer, "uselessString", DOMUtil.XSD_STRING, 0, 1, "UI_INSTANCE_USELESS_STRING", "UI_INSTANCE_USELESS_STRING_HELP"); PrismContainerDefinition<Containerable> configurationPropertiesContainerDefinition = configurationContainerDefinition.findContainerDefinition(SchemaConstants.CONNECTOR_SCHEMA_CONFIGURATION_PROPERTIES_ELEMENT_QNAME); configurationPropertiesContainerDefinition = configurationPropertiesContainer.getDefinition(); assertNotNull("No container definition in "+configurationPropertiesContainer); assertConfigurationPropertyDefinition(configurationPropertiesContainerDefinition, "uselessString", DOMUtil.XSD_STRING, 0, 1, "UI_INSTANCE_USELESS_STRING", "UI_INSTANCE_USELESS_STRING_HELP"); PrismObjectDefinition<ResourceType> objectDefinition = resource.getDefinition(); assertNotNull("No object definition in resource", objectDefinition); PrismContainerDefinition<ConnectorConfigurationType> configurationContainerDefinitionFromObjectDefinition = objectDefinition.findContainerDefinition(ResourceType.F_CONNECTOR_CONFIGURATION); assertDummyConfigurationContainerDefinition(configurationContainerDefinitionFromObjectDefinition, "from object definition"); }
@Test public void test102GetGroupNoFetch() throws Exception { final String TEST_NAME = "test102GetGroupNoFetch"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createNoFetch()); // WHEN PrismObject<ShadowType> shadow = modelService.getObject(ShadowType.class, groupOid, options , task, result); display("Account", shadow); display("Account def", shadow.getDefinition()); PrismContainer<Containerable> accountContainer = shadow.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyGroupShadowRepo(shadow, groupOid, GROUP_PIRATE_DUMMY_NAME); result.computeStatus(); TestUtil.assertSuccess("getObject result", result); }
@Test public void test103GetGroupRaw() throws Exception { final String TEST_NAME = "test103GetGroupRaw"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.POSITIVE); Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw()); // WHEN PrismObject<ShadowType> shadow = modelService.getObject(ShadowType.class, groupOid, options , task, result); display("Account", shadow); display("Account def", shadow.getDefinition()); PrismContainer<Containerable> accountContainer = shadow.findContainer(ShadowType.F_ATTRIBUTES); display("Account attributes def", accountContainer.getDefinition()); display("Account attributes def complex type def", accountContainer.getDefinition().getComplexTypeDefinition()); assertDummyGroupShadowRepo(shadow, groupOid, GROUP_PIRATE_DUMMY_NAME); result.computeStatus(); TestUtil.assertSuccess("getObject result", result); }
private <O extends ObjectType, C extends Containerable> void assertContainer(PrismObject<O> object, ItemName contName, Validator<PrismContainerDefinition<C>> validator, boolean valueExpected) throws Exception { PrismContainer<C> container = object.findContainer(contName); if (valueExpected) { assertNotNull("No container "+contName+" in "+object, container); PrismContainerDefinition<C> contDef = container.getDefinition(); assertNotNull("No definition in container "+contName, contDef); validator.validate(contDef, contName.toString()); } else { assertNull("Unexpected container "+contName+" in "+object+": "+container, container); } PrismContainerDefinition<C> objContDef = object.getDefinition().findContainerDefinition(contName); assertNotNull("No definition of container "+contName+" in object "+object, objContDef); validator.validate(objContDef, contName.toString()); }
private void assertResource(PrismObject<ResourceType> resource, boolean expectSchema) { display("Resource", resource); display("Resource def", resource.getDefinition()); PrismContainer<ConnectorConfigurationType> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION); assertNotNull("No Resource connector configuration def", configurationContainer); PrismContainerDefinition<ConnectorConfigurationType> configurationContainerDefinition = configurationContainer.getDefinition(); display("Resource connector configuration def", configurationContainerDefinition); display("Resource connector configuration def complex type def", configurationContainerDefinition.getComplexTypeDefinition()); assertNotNull("Empty Resource connector configuration def", configurationContainer.isEmpty()); assertEquals("Wrong compile-time class in Resource connector configuration in "+resource, ConnectorConfigurationType.class, configurationContainer.getCompileTimeClass()); assertEquals("configurationContainer maxOccurs", 1, configurationContainerDefinition.getMaxOccurs()); resource.checkConsistence(true, true); Element schema = ResourceTypeUtil.getResourceXsdSchema(resource); if (expectSchema) { assertNotNull("no schema in "+resource, schema); } else { assertNull("Unexpected schema in "+resource+": "+schema, schema); } }