public ClassModel < T > build ( ) { List < PropertyModel < ? > > propertyModels = new ArrayList < PropertyModel < ? > > ( ) ; PropertyModel < ? > idPropertyModel = null ; stateNotNull ( "type" , type ) ; for ( Convention convention : conventions ) { convention . apply ( this ) ; } stateNotNull ( "instanceCreatorFactory" , instanceCreatorFactory ) ; if ( discriminatorEnabled ) { stateNotNull ( "discriminatorKey" , discriminatorKey ) ; stateNotNull ( "discriminator" , discriminator ) ; } for ( PropertyModelBuilder < ? > propertyModelBuilder : propertyModelBuilders ) { boolean isIdProperty = propertyModelBuilder . getName ( ) . equals ( idPropertyName ) ; if ( isIdProperty ) { propertyModelBuilder . readName ( ID_PROPERTY_NAME ) . writeName ( ID_PROPERTY_NAME ) ; } PropertyModel < ? > model = propertyModelBuilder . build ( ) ; propertyModels . add ( model ) ; if ( isIdProperty ) { idPropertyModel = model ; } } validatePropertyModels ( type . getSimpleName ( ) , propertyModels ) ; return new ClassModel < T > ( type , propertyNameToTypeParameterMap , instanceCreatorFactory , discriminatorEnabled , discriminatorKey , discriminator , IdPropertyModelHolder . create ( type , idPropertyModel , idGenerator ) , unmodifiableList ( propertyModels ) ) ; }
Creates a new ClassModel instance based on the mapping data provided .