public AbstractManagedType()

in openjpa-persistence/src/main/java/org/apache/openjpa/persistence/meta/AbstractManagedType.java [95:216]


    public AbstractManagedType(ClassMetaData meta, MetamodelImpl model) {
        super((Class<X>) meta.getDescribedType());

        this.model = model;
        this.meta = meta;
        FieldMetaData[] fmds = meta.getFields();
        for (FieldMetaData f : fmds) {
            int decCode = f.getDeclaredTypeCode();
            switch (decCode) {
            case JavaTypes.BOOLEAN:
            case JavaTypes.BOOLEAN_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Boolean>(this, f));
                break;
            case JavaTypes.BYTE:
            case JavaTypes.BYTE_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Byte>(this, f));
                break;
            case JavaTypes.CHAR:
            case JavaTypes.CHAR_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Character>(this, f));
                break;
            case JavaTypes.DOUBLE:
            case JavaTypes.DOUBLE_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Double>(this, f));
                break;
            case JavaTypes.FLOAT:
            case JavaTypes.FLOAT_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Float>(this, f));
                break;
            case JavaTypes.INT:
            case JavaTypes.INT_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Integer>(this, f));
                break;
            case JavaTypes.LONG:
            case JavaTypes.LONG_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Long>(this, f));
                break;
            case JavaTypes.SHORT:
            case JavaTypes.SHORT_OBJ:
                attrs.add(new Members.SingularAttributeImpl<X, Short>(this, f));
                break;
            case JavaTypes.STRING:
                attrs.add(new Members.SingularAttributeImpl<X, String>(this, f));
                break;
            case JavaTypes.NUMBER:
                attrs.add(new Members.SingularAttributeImpl<X, Number>(this, f));
                break;
            case JavaTypes.DATE:
                attrs.add(new Members.SingularAttributeImpl<X, Date>(this, f));
                break;
            case JavaTypes.LOCAL_DATE:
                attrs.add(new Members.SingularAttributeImpl<X, LocalDate>(this, f));
                break;
            case JavaTypes.LOCAL_TIME:
                attrs.add(new Members.SingularAttributeImpl<X, LocalTime>(this, f));
                break;
            case JavaTypes.LOCAL_DATETIME:
                attrs.add(new Members.SingularAttributeImpl<X, LocalDateTime>(this, f));
                break;
            case JavaTypes.OFFSET_TIME:
                attrs.add(new Members.SingularAttributeImpl<X, OffsetTime>(this, f));
                break;
            case JavaTypes.OFFSET_DATETIME:
                attrs.add(new Members.SingularAttributeImpl<X, OffsetDateTime>(this, f));
                break;
            case JavaTypes.CALENDAR:
                attrs.add(new Members.SingularAttributeImpl<X, Calendar>(this, f));
                break;
            case JavaTypes.BIGDECIMAL:
                attrs.add(new Members.SingularAttributeImpl<X, BigDecimal>(this, f));
                break;
            case JavaTypes.BIGINTEGER:
                attrs.add(new Members.SingularAttributeImpl<X, BigInteger>(this, f));
                break;
            case JavaTypes.LOCALE:
                attrs.add(new Members.SingularAttributeImpl<X, Locale>(this, f));
                break;
            case JavaTypes.OBJECT:
            case JavaTypes.OID:
            case JavaTypes.PC:
            case JavaTypes.PC_UNTYPED:
            case JavaTypes.INPUT_READER:
            case JavaTypes.INPUT_STREAM:
                attrs.add(new Members.SingularAttributeImpl(this, f));
                break;
            case JavaTypes.ARRAY:
                Compatibility compat = meta.getRepository().getConfiguration().getCompatibilityInstance();
                if(compat.getUseListAttributeForArrays() || f.isPersistentCollection()) {
                    attrs.add(new Members.ListAttributeImpl(this, f));
                }
                else {
                    attrs.add(new Members.SingularAttributeImpl(this, f));
                }
                break;
            case JavaTypes.COLLECTION:
                switch (MetamodelImpl.categorizeCollection(f.getDeclaredType())) {
                case COLLECTION:
                    attrs.add(new Members.CollectionAttributeImpl(this, f));
                    break;
                case LIST:
                    attrs.add(new Members.ListAttributeImpl(this, f));
                    break;
                case SET:
                    attrs.add(new Members.SetAttributeImpl(this, f));
                    break;
                }
                break;
            case JavaTypes.MAP:
                attrs.add(new Members.MapAttributeImpl(this, f));
                break;
            case JavaTypes.ENUM:
                attrs.add(new Members.SingularAttributeImpl(this, f));
                break;
            default:
                throw new IllegalStateException(_loc.get("field-unrecognized",
                        f.getFullName(false), decCode).getMessage());
            }
        }
        declaredAttributeFilter = new DeclaredAttributeFilter<>(this);
        singularAttributeFilter = new SingularAttributeFilter<>();
        pluralAttributeFilter = new SingularAttributeFilter<X>().inverse();
    }