static ResourceSchema getResourceSchema(PrismObject<ResourceType> resource, PrismContext prismContext) throws SchemaException { return RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); } }
public static ResourceSchema getResourceSchema(ResourceType resourceType, PrismContext prismContext) throws SchemaException { PrismObject<ResourceType> resource = resourceType.asPrismObject(); return getResourceSchema(resource, prismContext); }
private ResourceSchema getResourceSchema() throws SchemaException { return RefinedResourceSchemaImpl.getResourceSchema(resource, getNotNullPrismContext()); }
public static void applyResourceSchema(ShadowType accountType, ResourceType resourceType, PrismContext prismContext) throws SchemaException { ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceType, prismContext); ShadowUtil.applyResourceSchema(accountType.asPrismObject(), resourceSchema); }
private ObjectClassComplexTypeDefinition determineObjectClassDefinition( ResourceShadowDiscriminator discriminator, ResourceType resource) throws SchemaException { ResourceSchema schema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); // HACK FIXME ObjectClassComplexTypeDefinition objectClassDefinition = schema.findObjectClassDefinition(ShadowKindType.ACCOUNT, discriminator.getIntent()); if (objectClassDefinition == null) { // Unknown objectclass throw new SchemaException("Account type " + discriminator.getIntent() + " is not known in schema of " + resource); } return objectClassDefinition; }
private ObjectClassComplexTypeDefinition getAccountObjectClassDefinition() throws SchemaException { ResourceSchema schema = RefinedResourceSchemaImpl.getResourceSchema(getDummyResourceObject(), prismContext); return schema.findObjectClassDefinition(dummyResourceCtl.getAccountObjectClassQName()); }
/** * This basically checks if the methods do not die on NPE */ @Test public void test005ParsedSchemaSchemaless() throws Exception { final String TEST_NAME = "test005ParsedSchemaSchemaless"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + "." + TEST_NAME); // THEN // The returned type should have the schema pre-parsed assertNotNull(RefinedResourceSchemaImpl.hasParsedSchema(resourceTypeSchemaless)); // Also test if the utility method returns the same thing ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceTypeSchemaless, prismContext); display("Parsed resource schema", returnedSchema); assertNull("Unexpected schema after parsing", returnedSchema); }
@Test public void test022ParsedSchema() throws Exception { final String TEST_NAME = "test022ParsedSchema"; displayTestTitle(TEST_NAME); // GIVEN // THEN // The returned type should have the schema pre-parsed assertNotNull(RefinedResourceSchemaImpl.hasParsedSchema(resourceType)); // Also test if the utility method returns the same thing ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceType, prismContext); display("Parsed resource schema", returnedSchema); // Check whether it is reusing the existing schema and not parsing it // all over again // Not equals() but == ... we want to really know if exactly the same // object instance is returned assertTrue("Broken caching", returnedSchema == RefinedResourceSchemaImpl.getResourceSchema(resourceType, prismContext)); assertSchemaSanity(returnedSchema, resourceType); rememberResourceSchema(returnedSchema); assertSteadyResource(); }
@Test public void test001SanityAzure() throws Exception { final String TEST_NAME = "test001SanityAzure"; displayTestTitle(TEST_NAME); display("Dummy resource azure", dummyResourceAzure); // WHEN ResourceSchema resourceSchemaAzure = RefinedResourceSchemaImpl.getResourceSchema(resourceDummyAzureType, prismContext); display("Dummy azure resource schema", resourceSchemaAzure); // THEN dummyResourceCtlAzure.assertDummyResourceSchemaSanityExtended(resourceSchemaAzure); ObjectClassComplexTypeDefinition orgOcDef = resourceSchemaAzure.findObjectClassDefinition(dummyResourceCtlAzure.getOrgObjectClassQName()); assertNotNull("No org object class def in azure resource schema", orgOcDef); }
@Test private void addGetFullAccountShadow() throws Exception { LOGGER.info("===[ simpleAddAccountShadowTest ]==="); OperationResult result = new OperationResult("testAddAccountShadow"); File file = new File(FOLDER_BASIC, "account-accountTypeShadow.xml"); try { PrismObject<ShadowType> account = prismContext.parseObject(file); // apply appropriate schema PrismObject<ResourceType> resource = prismContext.parseObject(new File(FOLDER_BASIC, "resource-opendj.xml")); ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ShadowUtil.applyResourceSchema(account, resourceSchema); repositoryService.addObject(account, null, result); PrismObject<ShadowType> afterAdd = repositoryService.getObject(ShadowType.class, account.getOid(), null, result); AssertJUnit.assertNotNull(afterAdd); } catch (Exception ex) { LOGGER.error("Exception occurred", ex); throw ex; } }
/** * This basically checks if the methods do not die on NPE */ @Test public void test105ParsedSchemaStaticSchema() throws Exception { final String TEST_NAME = "test105ParsedSchemaStaticSchema"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + "." + TEST_NAME); // THEN // The returned type should have the schema pre-parsed assertNotNull(RefinedResourceSchemaImpl.hasParsedSchema(resourceStaticSchema.asObjectable())); // Also test if the utility method returns the same thing ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceStaticSchema.asObjectable(), prismContext); display("Parsed resource schema", returnedSchema); assertNotNull("Null resource schema", returnedSchema); assertStaticSchemaSanity(returnedSchema); }
/** * Make sure that the refined schema haven't destroyed cached resource schema. * Also make sure that the caching in object's user data works well. */ @Test public void test024ParsedSchemaAgain() throws Exception { final String TEST_NAME = "test024ParsedSchemaAgain"; displayTestTitle(TEST_NAME); // GIVEN // THEN // The returned type should have the schema pre-parsed assertNotNull(RefinedResourceSchemaImpl.hasParsedSchema(resourceType)); // Also test if the utility method returns the same thing ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceType, prismContext); display("Parsed resource schema", returnedSchema); assertSchemaSanity(returnedSchema, resourceType); assertResourceSchemaUnchanged(returnedSchema); assertSteadyResource(); }
@Test public void test106GetObjectStaticSchema() throws Exception { final String TEST_NAME = "test106GetObjectStaticSchema"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN OperationResult result = new OperationResult(TestDummySchemaless.class.getName() + "." + TEST_NAME); PrismObject<ResourceType> resource = provisioningService.getObject(ResourceType.class, RESOURCE_DUMMY_STATIC_SCHEMA_OID, null, null, result); assertNotNull("Resource is null", resource); ResourceType resourceType = resource.asObjectable(); assertNotNull("No connector ref", resourceType.getConnectorRef()); assertNotNull("No connector ref OID", resourceType.getConnectorRef().getOid()); ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); display("Parsed resource schema", returnedSchema); assertNotNull("Null resource schema", returnedSchema); assertStaticSchemaSanity(returnedSchema); }
protected <T> void testSeachIterativeSingleAttrFilter(final String TEST_NAME, QName attrQName, T attrVal, GetOperationOptions rootOptions, boolean fullShadow, String... expectedAccountNames) throws Exception { ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ObjectClassComplexTypeDefinition objectClassDef = resourceSchema.findObjectClassDefinition(SchemaTestConstants.ACCOUNT_OBJECT_CLASS_LOCAL_NAME); ResourceAttributeDefinition<T> attrDef = objectClassDef.findAttributeDefinition(attrQName); ObjectFilter filter = prismContext.queryFor(ShadowType.class) .itemWithDef(attrDef, ShadowType.F_ATTRIBUTES, attrDef.getName()).eq(attrVal) .buildFilter(); testSeachIterative(TEST_NAME, filter, rootOptions, fullShadow, true, false, expectedAccountNames); }
@Test public void test205LegacyParsedSchema() throws Exception { final String TEST_NAME = "test205LegacyParsedSchema"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummyLegacy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN resourceLegacy = provisioningService.getObject(ResourceType.class, RESOURCE_DUMMY_LEGACY_OID, null, task, result); // THEN result.computeStatus(); assertSuccess(result); resourceTypeLegacy = resourceLegacy.asObjectable(); ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceTypeLegacy, prismContext); display("Parsed resource schema", returnedSchema); assertNotNull("No parsed schema", returnedSchema); assertObjectClass(returnedSchema, OBJECTCLASS_LEGACY_ACCOUNT); assertObjectClass(returnedSchema, OBJECTCLASS_LEGACY_GROUP); assertObjectClass(returnedSchema, OBJECTCLASS_LEGACY_PRIVILEGE); assertNoObjectClass(returnedSchema, OBJECTCLASS_NATIVE_ACCOUNT); assertNoObjectClass(returnedSchema, OBJECTCLASS_NATIVE_GROUP); assertNoObjectClass(returnedSchema, OBJECTCLASS_NATIVE_PRIVILEGE); }
@Test public void test105NativeParsedSchema() throws Exception { final String TEST_NAME = "test105NativeParsedSchema"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestDummyLegacy.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); // WHEN resourceNative = provisioningService.getObject(ResourceType.class, RESOURCE_DUMMY_NATIVE_OID, null, task, result); // THEN result.computeStatus(); assertSuccess(result); resourceTypeNative = resourceNative.asObjectable(); ResourceSchema returnedSchema = RefinedResourceSchemaImpl.getResourceSchema(resourceTypeNative, prismContext); display("Parsed resource schema", returnedSchema); assertNotNull("No parsed schema", returnedSchema); assertObjectClass(returnedSchema, OBJECTCLASS_NATIVE_ACCOUNT); assertObjectClass(returnedSchema, OBJECTCLASS_NATIVE_GROUP); assertObjectClass(returnedSchema, OBJECTCLASS_NATIVE_PRIVILEGE); assertNoObjectClass(returnedSchema, OBJECTCLASS_LEGACY_ACCOUNT); assertNoObjectClass(returnedSchema, OBJECTCLASS_LEGACY_GROUP); assertNoObjectClass(returnedSchema, OBJECTCLASS_LEGACY_PRIVILEGE); }
private void checkOpenDjSchema(ResourceType resource, String source) throws SchemaException { ResourceSchema schema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ObjectClassComplexTypeDefinition accountDefinition = schema.findObjectClassDefinition(RESOURCE_OPENDJ_ACCOUNT_OBJECTCLASS); assertNotNull("Schema does not define any account (resource from " + source + ")", accountDefinition); Collection<? extends ResourceAttributeDefinition> identifiers = accountDefinition.getPrimaryIdentifiers(); assertFalse("No account identifiers (resource from " + source + ")", identifiers == null || identifiers.isEmpty()); // TODO: check for naming attributes and display names, etc ActivationCapabilityType capActivation = ResourceTypeUtil.getEffectiveCapability(resource, ActivationCapabilityType.class); if (capActivation != null && capActivation.getStatus() != null && capActivation.getStatus().getAttribute() != null) { // There is simulated activation capability, check if the attribute is in schema. QName enableAttrName = capActivation.getStatus().getAttribute(); ResourceAttributeDefinition enableAttrDef = accountDefinition.findAttributeDefinition(enableAttrName); display("Simulated activation attribute definition", enableAttrDef); assertNotNull("No definition for enable attribute " + enableAttrName + " in account (resource from " + source + ")", enableAttrDef); assertTrue("Enable attribute " + enableAttrName + " is not ignored (resource from " + source + ")", enableAttrDef.isIgnored()); } }
protected <T> void testSeachIterativeAlternativeAttrFilter(final String TEST_NAME, QName attr1QName, T attr1Val, QName attr2QName, T attr2Val, GetOperationOptions rootOptions, boolean fullShadow, String... expectedAccountNames) throws Exception { ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ObjectClassComplexTypeDefinition objectClassDef = resourceSchema.findObjectClassDefinition(SchemaTestConstants.ACCOUNT_OBJECT_CLASS_LOCAL_NAME); ResourceAttributeDefinition<T> attr1Def = objectClassDef.findAttributeDefinition(attr1QName); ResourceAttributeDefinition<T> attr2Def = objectClassDef.findAttributeDefinition(attr2QName); ObjectFilter filter = prismContext.queryFor(ShadowType.class) .itemWithDef(attr1Def, ShadowType.F_ATTRIBUTES, attr1Def.getName()).eq(attr1Val) .or().itemWithDef(attr2Def, ShadowType.F_ATTRIBUTES, attr2Def.getName()).eq(attr2Val) .buildFilter(); testSeachIterative(TEST_NAME, filter, rootOptions, fullShadow, false, true, expectedAccountNames); }
private ObjectQuery createOnOffQuery() throws SchemaException { ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ObjectClassComplexTypeDefinition objectClassDef = resourceSchema.findObjectClassDefinition(SchemaTestConstants.ACCOUNT_OBJECT_CLASS_LOCAL_NAME); ResourceAttributeDefinition<String> attrDef = objectClassDef.findAttributeDefinition( dummyResourceCtl.getAttributeQName(DummyResourceContoller.DUMMY_ACCOUNT_ATTRIBUTE_SHIP_NAME)); ObjectQuery query = prismContext.queryFor(ShadowType.class) .item(ShadowType.F_RESOURCE_REF).ref(RESOURCE_DUMMY_OID) .and().item(ShadowType.F_OBJECT_CLASS).eq(new QName(ResourceTypeUtil.getResourceNamespace(resourceType), SchemaConstants.ACCOUNT_OBJECT_CLASS_LOCAL_NAME)) .and().itemWithDef(attrDef, ShadowType.F_ATTRIBUTES, attrDef.getName()).eq("Sea Monkey") .and().item(ShadowType.F_DEAD).eq(true) .build(); display("Query", query); return query; }
private PrismObject<ShadowType> createAccountShadow(String username) throws SchemaException { ResourceSchema resourceSchema = RefinedResourceSchemaImpl.getResourceSchema(resource, prismContext); ObjectClassComplexTypeDefinition defaultAccountDefinition = resourceSchema.findDefaultObjectClassDefinition(ShadowKindType.ACCOUNT); ShadowType shadowType = new ShadowType(); PrismTestUtil.getPrismContext().adopt(shadowType); shadowType.setName(PrismTestUtil.createPolyStringType(username)); ObjectReferenceType resourceRef = new ObjectReferenceType(); resourceRef.setOid(resource.getOid()); shadowType.setResourceRef(resourceRef); shadowType.setObjectClass(defaultAccountDefinition.getTypeName()); PrismObject<ShadowType> shadow = shadowType.asPrismObject(); PrismContainer<Containerable> attrsCont = shadow.findOrCreateContainer(ShadowType.F_ATTRIBUTES); PrismProperty<String> icfsNameProp = attrsCont.findOrCreateProperty(SchemaConstants.ICFS_NAME); icfsNameProp.setRealValue(username); return shadow; }