@Override public RefinedObjectClassDefinition getRefinedDefinition(ShadowKindType kind, Collection<String> intents) throws SchemaException { return refinedResourceSchema.getRefinedDefinition(kind, intents); }
@Test public void test130ProtectedAccount() throws Exception { final String TEST_NAME = "test130ProtectedAccount"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN PrismContext prismContext = createInitializedPrismContext(); PrismObject<ResourceType> resource = prismContext.parseObject(RESOURCE_COMPLEX_FILE); ResourceType resourceType = resource.asObjectable(); RefinedResourceSchema rSchema = RefinedResourceSchemaImpl.parse(resourceType, prismContext); assertNotNull("Refined schema is null", rSchema); assertFalse("No account definitions", rSchema.getRefinedDefinitions(ShadowKindType.ACCOUNT).isEmpty()); RefinedObjectClassDefinition rAccount = rSchema.getRefinedDefinition(ShadowKindType.ACCOUNT, (String)null); // WHEN Collection<ResourceObjectPattern> protectedAccounts = rAccount.getProtectedObjectPatterns(); // THEN assertNotNull("Null protectedAccounts", protectedAccounts); assertFalse("Empty protectedAccounts", protectedAccounts.isEmpty()); assertEquals("Unexpected number of protectedAccounts", 2, protectedAccounts.size()); Iterator<ResourceObjectPattern> iterator = protectedAccounts.iterator(); assertDeprecatedProtectedAccount("first protected account", iterator.next(), "uid=idm,ou=Administrators,dc=example,dc=com", rAccount); assertDeprecatedProtectedAccount("second protected account", iterator.next(), "uid=root,ou=Administrators,dc=example,dc=com", rAccount); }
default RefinedObjectClassDefinition getDefaultRefinedDefinition(ShadowKindType kind) { return getRefinedDefinition(kind, (String)null); }
@Test public void test120CreateShadow() throws Exception { final String TEST_NAME = "test120CreateShadow"; TestUtil.displayTestTitle(TEST_NAME); // GIVEN PrismContext prismContext = createInitializedPrismContext(); PrismObject<ResourceType> resource = prismContext.parseObject(RESOURCE_COMPLEX_FILE); ResourceType resourceType = resource.asObjectable(); RefinedResourceSchema rSchema = RefinedResourceSchemaImpl.parse(resourceType, prismContext); assertNotNull("Refined schema is null", rSchema); assertFalse("No account definitions", rSchema.getRefinedDefinitions(ShadowKindType.ACCOUNT).isEmpty()); RefinedObjectClassDefinition rAccount = rSchema.getRefinedDefinition(ShadowKindType.ACCOUNT, (String)null); // WHEN PrismObject<ShadowType> blankShadow = rAccount.createBlankShadow(); // THEN assertNotNull("No blank shadow", blankShadow); assertNotNull("No prism context in blank shadow", blankShadow.getPrismContext()); PrismObjectDefinition<ShadowType> objectDef = blankShadow.getDefinition(); assertNotNull("Blank shadow has no definition", objectDef); PrismContainerDefinition<?> attrDef = objectDef.findContainerDefinition(ShadowType.F_ATTRIBUTES); assertNotNull("Blank shadow has no definition for attributes", attrDef); assertTrue("Wrong class for attributes definition: "+attrDef.getClass(), attrDef instanceof ResourceAttributeContainerDefinition); }
/** * if null accountType is provided, default account definition is returned. */ RefinedObjectClassDefinition getRefinedDefinition(ShadowKindType kind, String intent);
@Override public LayerRefinedObjectClassDefinition getRefinedDefinition(ShadowKindType kind, String intent) { return LayerRefinedObjectClassDefinitionImpl .wrap(refinedResourceSchema.getRefinedDefinition(kind, intent), layer); }
@Override public LayerRefinedObjectClassDefinition getRefinedDefinition(ShadowKindType kind, ShadowType shadow) { return LayerRefinedObjectClassDefinitionImpl .wrap(refinedResourceSchema.getRefinedDefinition(kind, shadow), layer); }
public RefinedObjectClassDefinition getRefinedObjectClassDefinition() { if (refinedObjectClassDefinition == null) { RefinedResourceSchema schema = getRefinedResourceSchema(); if (schema != null) { refinedObjectClassDefinition = schema.getRefinedDefinition(kind, intent); } } return refinedObjectClassDefinition; }
@Override public LayerRefinedObjectClassDefinition getRefinedDefinition(QName typeName) { return LayerRefinedObjectClassDefinitionImpl .wrap(refinedResourceSchema.getRefinedDefinition(typeName), layer); }
default PrismObjectDefinition<ShadowType> getObjectDefinition(ShadowKindType kind, String intent) { return getRefinedDefinition(kind, intent).getObjectDefinition(); }
protected PrismObject<ShadowType> findShadowByName(QName objectClass, String name, PrismObject<ResourceType> resource, OperationResult result) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException { RefinedResourceSchema rSchema = RefinedResourceSchemaImpl.getRefinedSchema(resource); RefinedObjectClassDefinition rOcDef = rSchema.getRefinedDefinition(objectClass); ObjectQuery query = createShadowQuerySecondaryIdentifier(rOcDef, name, resource); List<PrismObject<ShadowType>> shadows = repositoryService.searchObjects(ShadowType.class, query, null, result); if (shadows.isEmpty()) { return null; } assert shadows.size() == 1 : "Too many shadows found for name "+name+" on "+resource+": "+shadows; return shadows.iterator().next(); }
protected PrismObject<ShadowType> findShadowByName(ShadowKindType kind, String intent, String name, PrismObject<ResourceType> resource, OperationResult result) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException { RefinedResourceSchema rSchema = RefinedResourceSchemaImpl.getRefinedSchema(resource); RefinedObjectClassDefinition rOcDef = rSchema.getRefinedDefinition(kind,intent); ObjectQuery query = createShadowQuerySecondaryIdentifier(rOcDef, name, resource); List<PrismObject<ShadowType>> shadows = repositoryService.searchObjects(ShadowType.class, query, null, result); if (shadows.isEmpty()) { return null; } assert shadows.size() == 1 : "Too many shadows found for name "+name+" on "+resource+": "+shadows; return shadows.iterator().next(); }
void parseAuxiliaryObjectClasses(RefinedResourceSchema rSchema) throws SchemaException { if (schemaHandlingObjectTypeDefinitionType == null) { return; } List<QName> auxiliaryObjectClassQNames = schemaHandlingObjectTypeDefinitionType.getAuxiliaryObjectClass(); for (QName auxiliaryObjectClassQName: auxiliaryObjectClassQNames) { RefinedObjectClassDefinition auxiliaryObjectClassDef = rSchema.getRefinedDefinition(auxiliaryObjectClassQName); if (auxiliaryObjectClassDef == null) { throw new SchemaException("Auxiliary object class "+auxiliaryObjectClassQName+" specified in "+this+" does not exist"); } auxiliaryObjectClassDefinitions.add(auxiliaryObjectClassDef); } }
public CompositeRefinedObjectClassDefinition computeCompositeObjectClassDefinition(@NotNull Collection<QName> auxObjectClassQNames) throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, ExpressionEvaluationException { RefinedObjectClassDefinition structuralObjectClassDefinition = getObjectClassDefinition(); if (structuralObjectClassDefinition == null) { return null; } Collection<RefinedObjectClassDefinition> auxiliaryObjectClassDefinitions = new ArrayList<>(auxObjectClassQNames.size()); for (QName auxObjectClassQName : auxObjectClassQNames) { RefinedObjectClassDefinition auxObjectClassDef = refinedSchema.getRefinedDefinition(auxObjectClassQName); if (auxObjectClassDef == null) { throw new SchemaException("Auxiliary object class " + auxObjectClassQName + " specified in " + this + " does not exist"); } auxiliaryObjectClassDefinitions.add(auxObjectClassDef); } return new CompositeRefinedObjectClassDefinitionImpl(structuralObjectClassDefinition, auxiliaryObjectClassDefinitions); }
public static String refineProjectionIntent(ShadowKindType kind, String intent, ResourceType resource, PrismContext prismContext) throws SchemaException { RefinedResourceSchema refinedSchema = RefinedResourceSchemaImpl.getRefinedSchema(resource, LayerType.MODEL, prismContext); RefinedObjectClassDefinition rObjClassDef = refinedSchema.getRefinedDefinition(kind, intent); if (rObjClassDef == null) { throw new SchemaException("No projection definition for kind="+kind+" intent="+intent+" in "+resource); } return rObjClassDef.getIntent(); }
public void refreshAuxiliaryObjectClassDefinitions() throws SchemaException { RefinedResourceSchema refinedSchema = getRefinedResourceSchema(); if (refinedSchema == null) { return; } List<QName> auxiliaryObjectClassQNames = new ArrayList<>(); addAuxiliaryObjectClassNames(auxiliaryObjectClassQNames, getObjectOld()); addAuxiliaryObjectClassNames(auxiliaryObjectClassQNames, getObjectNew()); auxiliaryObjectClassDefinitions = new ArrayList<>(auxiliaryObjectClassQNames.size()); for (QName auxiliaryObjectClassQName: auxiliaryObjectClassQNames) { RefinedObjectClassDefinition auxiliaryObjectClassDef = refinedSchema.getRefinedDefinition(auxiliaryObjectClassQName); if (auxiliaryObjectClassDef == null) { throw new SchemaException("Auxiliary object class "+auxiliaryObjectClassQName+" specified in "+this+" does not exist"); } auxiliaryObjectClassDefinitions.add(auxiliaryObjectClassDef); } compositeObjectClassDefinition = null; }
void parseAssociations(RefinedResourceSchema rSchema) throws SchemaException { if (schemaHandlingObjectTypeDefinitionType == null) { return; } for (ResourceObjectAssociationType resourceObjectAssociationType: schemaHandlingObjectTypeDefinitionType.getAssociation()) { RefinedAssociationDefinition rAssocDef = new RefinedAssociationDefinition(resourceObjectAssociationType); ShadowKindType assocKind = rAssocDef.getKind(); RefinedObjectClassDefinition assocTarget = rSchema.getRefinedDefinition(assocKind, rAssocDef.getIntents()); rAssocDef.setAssociationTarget(assocTarget); associationDefinitions.add(rAssocDef); } }
private ProjectionPolicyType determineObjectClassProjectionPolicy() throws SchemaException { RefinedResourceSchema refinedSchema = getRefinedResourceSchema(); if (refinedSchema == null) { return null; } RefinedObjectClassDefinition objectClassDef = refinedSchema.getRefinedDefinition(resourceShadowDiscriminator.getKind(), resourceShadowDiscriminator.getIntent()); if (objectClassDef == null) { return null; } return objectClassDef.getProjection(); }
public RefinedObjectClassDefinition getStructuralObjectClassDefinition() throws SchemaException { if (structuralObjectClassDefinition == null) { RefinedResourceSchema refinedSchema = getRefinedResourceSchema(); if (refinedSchema == null) { return null; } structuralObjectClassDefinition = refinedSchema.getRefinedDefinition(getResourceShadowDiscriminator().getKind(), getResourceShadowDiscriminator().getIntent()); } return structuralObjectClassDefinition; }
protected void assertShadowRepo(PrismObject<ShadowType> accountShadow, String oid, String username, ResourceType resourceType, QName objectClass, MatchingRule<String> nameMatchingRule) throws SchemaException { assertShadowCommon(accountShadow, oid, username, resourceType, objectClass, nameMatchingRule, true); PrismContainer<Containerable> attributesContainer = accountShadow.findContainer(ShadowType.F_ATTRIBUTES); List<Item<?,?>> attributes = attributesContainer.getValue().getItems(); // Collection secIdentifiers = ShadowUtil.getSecondaryIdentifiers(accountShadow); if (attributes == null){ AssertJUnit.fail("No attributes in repo shadow"); } RefinedResourceSchema refinedSchema = null; try { refinedSchema = RefinedResourceSchemaImpl.getRefinedSchema(resourceType); } catch (SchemaException e) { AssertJUnit.fail(e.getMessage()); } ObjectClassComplexTypeDefinition objClassDef = refinedSchema.getRefinedDefinition(objectClass); Collection secIdentifiers = objClassDef.getSecondaryIdentifiers(); if (secIdentifiers == null){ AssertJUnit.fail("No secondary identifiers in repo shadow"); } // repo shadow should contains all secondary identifiers + ICF_UID assertRepoShadowAttributes(attributes, secIdentifiers.size()+1); }