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));
    }
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));
    }
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.

@return the new instance
Creates a new ClassModel instance based on the mapping data provided .