private SchemaDefinitionFactory createDefinitionFactory() { return new MidPointSchemaDefinitionFactory(); }
@Override public MutableComplexTypeDefinition createComplexTypeDefinition(XSComplexType complexType, PrismContext prismContext, XSAnnotation annotation) throws SchemaException { if (isResourceObject(annotation)) { return createObjectClassDefinition(complexType, prismContext, annotation); } return super.createComplexTypeDefinition(complexType, prismContext, annotation); }
@Override public <T> MutablePrismPropertyDefinition<T> createPropertyDefinition(QName elementName, QName typeName, ComplexTypeDefinition complexTypeDefinition, PrismContext prismContext, XSAnnotation annotation, XSParticle elementParticle, Collection<? extends DisplayableValue<T>> allowedValues, T defaultValue) throws SchemaException { if (complexTypeDefinition != null && complexTypeDefinition instanceof ObjectClassComplexTypeDefinition) { return createResourceAttributeDefinition(elementName, typeName, prismContext, annotation); } return super.createPropertyDefinition(elementName, typeName, complexTypeDefinition, prismContext, annotation, elementParticle, allowedValues, defaultValue); }
@Override public void finishComplexTypeDefinition(ComplexTypeDefinition complexTypeDefinition, XSComplexType complexType, PrismContext prismContext, XSAnnotation annotation) throws SchemaException { super.finishComplexTypeDefinition(complexTypeDefinition, complexType, prismContext, annotation); if (complexTypeDefinition instanceof ObjectClassComplexTypeDefinition) { // TODO is this safe? finishObjectClassDefinition((ObjectClassComplexTypeDefinitionImpl)complexTypeDefinition, complexType, prismContext, annotation); } }
@Override public void addExtraComplexTypeAnnotations(ComplexTypeDefinition definition, Element appinfo, SchemaToDomProcessor schemaToDomProcessor) { super.addExtraComplexTypeAnnotations(definition, appinfo, schemaToDomProcessor); if (definition instanceof ObjectClassComplexTypeDefinition) { addExtraObjectClassAnnotations((ObjectClassComplexTypeDefinition)definition, appinfo, schemaToDomProcessor); } }
private void finishObjectClassDefinition(ObjectClassComplexTypeDefinitionImpl ocDef, XSComplexType complexType, PrismContext prismContext, XSAnnotation annotation) throws SchemaException { // displayNameAttribute ResourceAttributeDefinition attrDefinition = getAnnotationReference(annotation, MidPointConstants.RA_DISPLAY_NAME_ATTRIBUTE, ocDef); if (attrDefinition != null) { ocDef.setDisplayNameAttribute(attrDefinition); } // namingAttribute attrDefinition = getAnnotationReference(annotation, MidPointConstants.RA_NAMING_ATTRIBUTE, ocDef); if (attrDefinition != null) { ocDef.setNamingAttribute(attrDefinition); } // descriptionAttribute attrDefinition = getAnnotationReference(annotation, MidPointConstants.RA_DESCRIPTION_ATTRIBUTE, ocDef); if (attrDefinition != null) { ocDef.setDescriptionAttribute(attrDefinition); } // identifier attrDefinition = getAnnotationReference(annotation, MidPointConstants.RA_IDENTIFIER, ocDef); if (attrDefinition != null) { ((Collection)ocDef.getPrimaryIdentifiers()).add(attrDefinition); } // secondaryIdentifier attrDefinition = getAnnotationReference(annotation, MidPointConstants.RA_SECONDARY_IDENTIFIER, ocDef); if (attrDefinition != null) { ((Collection)ocDef.getSecondaryIdentifiers()).add(attrDefinition); } }
if (isAccountObject(annotation)) { if (kind != null && kind != ShadowKindType.ACCOUNT) { throw new SchemaException("Conflicting definition of kind and legacy account annotation in the annotation of object class "+typeName);
@Override public <T> PrismPropertyDefinition<T> createPropertyDefinition(QName elementName, QName typeName, ComplexTypeDefinition complexTypeDefinition, PrismContext prismContext, XSAnnotation annotation, XSParticle elementParticle) throws SchemaException { if (complexTypeDefinition != null && complexTypeDefinition instanceof ObjectClassComplexTypeDefinition) { return createResourceAttributeDefinition(elementName, typeName, prismContext, annotation); } return super.createPropertyDefinition(elementName, typeName, complexTypeDefinition, prismContext, annotation, elementParticle); }