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